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,105 @@ 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 builder (schema, -1 ,
68+ {{Options::FILE_FORMAT, " avro" }, {" avro.codec" , " deflate" }});
69+ ASSERT_OK_AND_ASSIGN (auto file_writer, builder.Build (nullptr , " zstd" ));
70+ auto * avro_file_writer = dynamic_cast <AvroFormatWriter*>(file_writer.get ());
71+ ASSERT_EQ (avro_file_writer->writer_ ->codec_ , ::avro::Codec::DEFLATE_CODEC);
72+ ASSERT_EQ (avro_file_writer->writer_ ->compressionLevel_ , std::nullopt );
73+ }
74+ {
75+ AvroWriterBuilder builder (schema, -1 ,
76+ {{Options::FILE_FORMAT, " avro" }, {" avro.codec" , " zstd" }});
77+ ASSERT_OK_AND_ASSIGN (auto file_writer, builder.Build (nullptr , " zstd" ));
78+ auto * avro_file_writer = dynamic_cast <AvroFormatWriter*>(file_writer.get ());
79+ ASSERT_EQ (avro_file_writer->writer_ ->codec_ , ::avro::Codec::ZSTD_CODEC);
80+ ASSERT_EQ (avro_file_writer->writer_ ->compressionLevel_ , 1 );
81+ }
82+ {
83+ AvroWriterBuilder builder (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_writer, builder.Build (nullptr , " zstd" ));
88+ auto * avro_file_writer = dynamic_cast <AvroFormatWriter*>(file_writer.get ());
89+ ASSERT_EQ (avro_file_writer->writer_ ->codec_ , ::avro::Codec::ZSTD_CODEC);
90+ ASSERT_EQ (avro_file_writer->writer_ ->compressionLevel_ , 3 );
91+ }
92+ {
93+ AvroWriterBuilder builder (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_writer, builder.Build (nullptr , " zstd" ));
98+ auto * avro_file_writer = dynamic_cast <AvroFormatWriter*>(file_writer.get ());
99+ ASSERT_EQ (avro_file_writer->writer_ ->codec_ , ::avro::Codec::NULL_CODEC);
100+ ASSERT_EQ (avro_file_writer->writer_ ->compressionLevel_ , std::nullopt );
101+ }
102+ {
103+ AvroWriterBuilder builder (schema, -1 ,
104+ {{Options::FILE_FORMAT, " avro" },
105+ {" avro.codec" , " test" },
106+ {Options::FILE_COMPRESSION_ZSTD_LEVEL, " 3" }});
107+ ASSERT_NOK (builder.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+ {
120+ AvroWriterBuilder builder (nullptr , -1 , {{Options::FILE_FORMAT, " avro" }});
121+ ASSERT_OK_AND_ASSIGN (std::optional<int32_t > compression_level,
122+ builder.GetAvroCompressionLevel (::avro::Codec::SNAPPY_CODEC));
123+ ASSERT_FALSE (compression_level.has_value ());
124+ }
125+ {
126+ AvroWriterBuilder builder (nullptr , -1 , {{Options::FILE_FORMAT, " avro" }});
127+ ASSERT_OK_AND_ASSIGN (std::optional<int32_t > compression_level,
128+ builder.GetAvroCompressionLevel (::avro::Codec::DEFLATE_CODEC));
129+ ASSERT_FALSE (compression_level.has_value ());
130+ }
131+ {
132+ AvroWriterBuilder builder (nullptr , -1 , {{Options::FILE_FORMAT, " avro" }});
133+ ASSERT_OK_AND_ASSIGN (std::optional<int32_t > compression_level,
134+ builder.GetAvroCompressionLevel (::avro::Codec::NULL_CODEC));
135+ ASSERT_FALSE (compression_level.has_value ());
136+ }
137+ {
138+ AvroWriterBuilder builder (
139+ nullptr , -1 ,
140+ {{Options::FILE_FORMAT, " avro" }, {Options::FILE_COMPRESSION_ZSTD_LEVEL, " 3" }});
141+ ASSERT_OK_AND_ASSIGN (std::optional<int32_t > zstd_level,
142+ builder.GetAvroCompressionLevel (::avro::Codec::ZSTD_CODEC));
143+ ASSERT_TRUE (zstd_level.has_value ());
144+ ASSERT_EQ (zstd_level.value (), 3 );
145+ }
146+ }
147+
54148} // namespace paimon::avro::test
0 commit comments