2222
2323namespace paimon ::avro::test {
2424
25- TEST (ToAvroCompressionKindTest , HandlesValidCompressions) {
25+ TEST (AvroWriterBuilderTest , HandlesValidCompressions) {
2626 ASSERT_OK_AND_ASSIGN (::avro::Codec zstd_codec,
2727 AvroWriterBuilder::ToAvroCompressionKind (" zstd" ));
2828 ASSERT_EQ (zstd_codec, ::avro::Codec::ZSTD_CODEC );
@@ -44,11 +44,99 @@ TEST(ToAvroCompressionKindTest, HandlesValidCompressions) {
4444 ASSERT_EQ (deflate_codec, ::avro::Codec::DEFLATE_CODEC );
4545}
4646
47- TEST (ToAvroCompressionKindTest , HandlesInvalidCompression) {
47+ TEST (AvroWriterBuilderTest , HandlesInvalidCompression) {
4848 ASSERT_NOK (AvroWriterBuilder::ToAvroCompressionKind (" unknown_compression" ));
4949}
5050
51- TEST (ToAvroCompressionKindTest , HandlesEmptyString) {
51+ TEST (AvroWriterBuilderTest , HandlesEmptyString) {
5252 ASSERT_NOK (AvroWriterBuilder::ToAvroCompressionKind (" " ));
5353}
54+
55+ TEST (AvroWriterBuilderTest, CheckAvroCodec) {
56+ arrow::FieldVector fields = {arrow::field (" f0" , arrow::int32 ())};
57+ auto schema = std::make_shared<arrow::Schema>(fields);
58+ {
59+ AvroWriterBuilder builder (schema, -1 ,
60+ {{Options::FILE_FORMAT , " avro" }, {" avro.codec" , " snappy" }});
61+ ASSERT_OK_AND_ASSIGN (auto file_writer, builder.Build (nullptr , " zstd" ));
62+ auto * avro_file_writer = dynamic_cast <AvroFormatWriter*>(file_writer.get ());
63+ ASSERT_EQ (avro_file_writer->writer_ ->codec_ , ::avro::Codec::SNAPPY_CODEC );
64+ ASSERT_EQ (avro_file_writer->writer_ ->compressionLevel_ , std::nullopt );
65+ }
66+ {
67+ AvroWriterBuilder builder2 (schema, -1 ,
68+ {{Options::FILE_FORMAT , " avro" }, {" avro.codec" , " deflate" }});
69+ ASSERT_OK_AND_ASSIGN (auto file_writer2, builder2.Build (nullptr , " zstd" ));
70+ auto * avro_file_writer2 = dynamic_cast <AvroFormatWriter*>(file_writer2.get ());
71+ ASSERT_EQ (avro_file_writer2->writer_ ->codec_ , ::avro::Codec::DEFLATE_CODEC );
72+ ASSERT_EQ (avro_file_writer2->writer_ ->compressionLevel_ , std::nullopt );
73+ }
74+ {
75+ AvroWriterBuilder builder3 (schema, -1 ,
76+ {{Options::FILE_FORMAT , " avro" }, {" avro.codec" , " zstd" }});
77+ ASSERT_OK_AND_ASSIGN (auto file_writer3, builder3.Build (nullptr , " zstd" ));
78+ auto * avro_file_writer3 = dynamic_cast <AvroFormatWriter*>(file_writer3.get ());
79+ ASSERT_EQ (avro_file_writer3->writer_ ->codec_ , ::avro::Codec::ZSTD_CODEC );
80+ ASSERT_EQ (avro_file_writer3->writer_ ->compressionLevel_ , 1 );
81+ }
82+ {
83+ AvroWriterBuilder builder4 (schema, -1 ,
84+ {{Options::FILE_FORMAT , " avro" },
85+ {" avro.codec" , " zstd" },
86+ {Options::FILE_COMPRESSION_ZSTD_LEVEL , " 3" }});
87+ ASSERT_OK_AND_ASSIGN (auto file_writer4, builder4.Build (nullptr , " zstd" ));
88+ auto * avro_file_writer4 = dynamic_cast <AvroFormatWriter*>(file_writer4.get ());
89+ ASSERT_EQ (avro_file_writer4->writer_ ->codec_ , ::avro::Codec::ZSTD_CODEC );
90+ ASSERT_EQ (avro_file_writer4->writer_ ->compressionLevel_ , 3 );
91+ }
92+ {
93+ AvroWriterBuilder builder5 (schema, -1 ,
94+ {{Options::FILE_FORMAT , " avro" },
95+ {" avro.codec" , " null" },
96+ {Options::FILE_COMPRESSION_ZSTD_LEVEL , " 3" }});
97+ ASSERT_OK_AND_ASSIGN (auto file_writer5, builder5.Build (nullptr , " zstd" ));
98+ auto * avro_file_writer5 = dynamic_cast <AvroFormatWriter*>(file_writer5.get ());
99+ ASSERT_EQ (avro_file_writer5->writer_ ->codec_ , ::avro::Codec::NULL_CODEC );
100+ ASSERT_EQ (avro_file_writer5->writer_ ->compressionLevel_ , std::nullopt );
101+ }
102+ {
103+ AvroWriterBuilder builder6 (schema, -1 ,
104+ {{Options::FILE_FORMAT , " avro" },
105+ {" avro.codec" , " test" },
106+ {Options::FILE_COMPRESSION_ZSTD_LEVEL , " 3" }});
107+ ASSERT_NOK (builder6.Build (nullptr , " zstd" ));
108+ }
109+ }
110+
111+ TEST (AvroWriterBuilderTest, CheckAvroCompressionLevel) {
112+ {
113+ AvroWriterBuilder builder (nullptr , -1 , {{Options::FILE_FORMAT , " avro" }});
114+ ASSERT_OK_AND_ASSIGN (std::optional<int32_t > zstd_level,
115+ builder.GetAvroCompressionLevel (::avro::Codec::ZSTD_CODEC ));
116+ ASSERT_TRUE (zstd_level.has_value ());
117+ ASSERT_EQ (zstd_level.value (), 1 );
118+
119+ ASSERT_OK_AND_ASSIGN (std::optional<int32_t > compression_level1,
120+ builder.GetAvroCompressionLevel (::avro::Codec::SNAPPY_CODEC ));
121+ ASSERT_FALSE (compression_level1.has_value ());
122+
123+ ASSERT_OK_AND_ASSIGN (std::optional<int32_t > compression_level2,
124+ builder.GetAvroCompressionLevel (::avro::Codec::DEFLATE_CODEC ));
125+ ASSERT_FALSE (compression_level2.has_value ());
126+
127+ ASSERT_OK_AND_ASSIGN (std::optional<int32_t > compression_level3,
128+ builder.GetAvroCompressionLevel (::avro::Codec::NULL_CODEC ));
129+ ASSERT_FALSE (compression_level3.has_value ());
130+ }
131+ {
132+ AvroWriterBuilder builder2 (
133+ nullptr , -1 ,
134+ {{Options::FILE_FORMAT , " avro" }, {Options::FILE_COMPRESSION_ZSTD_LEVEL , " 3" }});
135+ ASSERT_OK_AND_ASSIGN (std::optional<int32_t > zstd_level2,
136+ builder2.GetAvroCompressionLevel (::avro::Codec::ZSTD_CODEC ));
137+ ASSERT_TRUE (zstd_level2.has_value ());
138+ ASSERT_EQ (zstd_level2.value (), 3 );
139+ }
140+ }
141+
54142} // namespace paimon::avro::test
0 commit comments