Skip to content

Commit a631c21

Browse files
UT for buffer chunks
Signed-off-by: Athish Pranav D <[email protected]>
1 parent 44e4ab4 commit a631c21

File tree

5 files changed

+215
-2
lines changed

5 files changed

+215
-2
lines changed

test/plugin/test_buffer.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1443,7 +1443,7 @@ def create_chunk_es(metadata, es)
14431443

14441444
test 'create decompressable chunk' do
14451445
chunk = @p.generate_chunk(create_metadata)
1446-
assert chunk.singleton_class.ancestors.include?(Fluent::Plugin::Buffer::Chunk::Decompressable)
1446+
assert chunk.singleton_class.ancestors.include?(Fluent::Plugin::Buffer::Chunk::GzipDecompressable)
14471447
end
14481448

14491449
test '#write compressed data which exceeds chunk_limit_size, it raises BufferChunkOverflowError' do

test/plugin/test_buffer_chunk.rb

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,16 @@ class BufferChunkTest < Test::Unit::TestCase
7777
assert_raise(ArgumentError){ chunk.write_to(nil, compressed: :gzip) }
7878
assert_raise(ArgumentError){ chunk.append(nil, compress: :gzip) }
7979
end
80+
81+
test 'some methods raise ArgumentError with an option of `compressed: :zstd` and without extending Compressble`' do
82+
meta = Object.new
83+
chunk = Fluent::Plugin::Buffer::Chunk.new(meta)
84+
85+
assert_raise(ArgumentError){ chunk.read(compressed: :zstd) }
86+
assert_raise(ArgumentError){ chunk.open(compressed: :zstd){} }
87+
assert_raise(ArgumentError){ chunk.write_to(nil, compressed: :zstd) }
88+
assert_raise(ArgumentError){ chunk.append(nil, compress: :zstd) }
89+
end
8090
end
8191

8292
class TestChunk < Fluent::Plugin::Buffer::Chunk
@@ -203,7 +213,15 @@ def open(**kwargs)
203213
test 'create decompressable chunk' do
204214
meta = Object.new
205215
chunk = Fluent::Plugin::Buffer::Chunk.new(meta, compress: :gzip)
206-
assert chunk.singleton_class.ancestors.include?(Fluent::Plugin::Buffer::Chunk::Decompressable)
216+
assert chunk.singleton_class.ancestors.include?(Fluent::Plugin::Buffer::Chunk::GzipDecompressable)
217+
end
218+
end
219+
220+
sub_test_case 'when compress is zstd' do
221+
test 'create decompressable chunk' do
222+
meta = Object.new
223+
chunk = Fluent::Plugin::Buffer::Chunk.new(meta, compress: :zstd)
224+
assert chunk.singleton_class.ancestors.include?(Fluent::Plugin::Buffer::Chunk::ZstdDecompressable)
207225
end
208226
end
209227
end

test/plugin/test_buffer_file_chunk.rb

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -802,6 +802,7 @@ def gen_chunk_path(prefix, unique_id)
802802
setup do
803803
@src = 'text data for compressing' * 5
804804
@gzipped_src = compress(@src)
805+
@zstded_src = compress(@src, type: :zstd)
805806
end
806807

807808
test '#append with compress option writes compressed data to chunk when compress is gzip' do
@@ -867,5 +868,69 @@ def gen_chunk_path(prefix, unique_id)
867868
c.write_to(io, compressed: :gzip)
868869
assert_equal @gzipped_src, io.string
869870
end
871+
872+
test '#append with compress option writes compressed data to chunk when compress is zstd' do
873+
c = @klass.new(gen_metadata, File.join(@chunkdir,'test.*.log'), :create, compress: :zstd)
874+
c.append([@src, @src], compress: :zstd)
875+
c.commit
876+
877+
# check chunk is compressed
878+
assert c.read(compressed: :zstd).size < [@src, @src].join("").size
879+
880+
assert_equal @src + @src, c.read
881+
end
882+
883+
test '#open passes io object having decompressed data to a block when compress is zstd' do
884+
c = @klass.new(gen_metadata, File.join(@chunkdir,'test.*.log'), :create, compress: :zstd)
885+
c.concat(@zstded_src, @src.size)
886+
c.commit
887+
888+
decomressed_data = c.open do |io|
889+
v = io.read
890+
assert_equal @src, v
891+
v
892+
end
893+
assert_equal @src, decomressed_data
894+
end
895+
896+
test '#open with compressed option passes io object having decompressed data to a block when compress is zstd' do
897+
c = @klass.new(gen_metadata, File.join(@chunkdir,'test.*.log'), :create, compress: :zstd)
898+
c.concat(@zstded_src, @src.size)
899+
c.commit
900+
901+
comressed_data = c.open(compressed: :zstd) do |io|
902+
v = io.read
903+
assert_equal @zstded_src, v
904+
v
905+
end
906+
assert_equal @zstded_src, comressed_data
907+
end
908+
909+
test '#write_to writes decompressed data when compress is zstd' do
910+
c = @klass.new(gen_metadata, File.join(@chunkdir,'test.*.log'), :create, compress: :zstd)
911+
c.concat(@zstded_src, @src.size)
912+
c.commit
913+
914+
assert_equal @src, c.read
915+
assert_equal @zstded_src, c.read(compressed: :zstd)
916+
917+
io = StringIO.new
918+
c.write_to(io)
919+
assert_equal @src, io.string
920+
end
921+
922+
test '#write_to with compressed option writes compressed data when compress is zstd' do
923+
c = @klass.new(gen_metadata, File.join(@chunkdir,'test.*.log'), :create, compress: :zstd)
924+
c.concat(@zstded_src, @src.size)
925+
c.commit
926+
927+
assert_equal @src, c.read
928+
assert_equal @zstded_src, c.read(compressed: :zstd)
929+
930+
io = StringIO.new
931+
io.set_encoding(Encoding::ASCII_8BIT)
932+
c.write_to(io, compressed: :zstd)
933+
assert_equal @zstded_src, io.string
934+
end
870935
end
871936
end

test/plugin/test_buffer_file_single_chunk.rb

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,7 @@ def gen_chunk_path(prefix, unique_id)
542542
setup do
543543
@src = 'text data for compressing' * 5
544544
@gzipped_src = compress(@src)
545+
@zstded_src = compress(@src, type: :zstd)
545546
end
546547

547548
test '#append with compress option writes compressed data to chunk when compress is gzip' do
@@ -607,5 +608,69 @@ def gen_chunk_path(prefix, unique_id)
607608
c.write_to(io, compressed: :gzip)
608609
assert_equal @gzipped_src, io.string
609610
end
611+
612+
test '#append with compress option writes compressed data to chunk when compress is zstd' do
613+
c = @klass.new(gen_metadata, File.join(@chunkdir,'fsb.*.buf'), :create, nil, compress: :zstd)
614+
c.append([@src, @src], compress: :zstd)
615+
c.commit
616+
617+
# check chunk is compressed
618+
assert c.read(compressed: :zstd).size < [@src, @src].join("").size
619+
620+
assert_equal @src + @src, c.read
621+
end
622+
623+
test '#open passes io object having decompressed data to a block when compress is zstd' do
624+
c = @klass.new(gen_metadata, File.join(@chunkdir,'fsb.*.buf'), :create, nil, compress: :zstd)
625+
c.concat(@zstded_src, @src.size)
626+
c.commit
627+
628+
decomressed_data = c.open do |io|
629+
v = io.read
630+
assert_equal @src, v
631+
v
632+
end
633+
assert_equal @src, decomressed_data
634+
end
635+
636+
test '#open with compressed option passes io object having decompressed data to a block when compress is zstd' do
637+
c = @klass.new(gen_metadata, File.join(@chunkdir,'fsb.*.buf'), :create, nil, compress: :zstd)
638+
c.concat(@zstded_src, @src.size)
639+
c.commit
640+
641+
comressed_data = c.open(compressed: :zstd) do |io|
642+
v = io.read
643+
assert_equal @zstded_src, v
644+
v
645+
end
646+
assert_equal @zstded_src, comressed_data
647+
end
648+
649+
test '#write_to writes decompressed data when compress is zstd' do
650+
c = @klass.new(gen_metadata, File.join(@chunkdir,'fsb.*.buf'), :create, nil, compress: :zstd)
651+
c.concat(@zstded_src, @src.size)
652+
c.commit
653+
654+
assert_equal @src, c.read
655+
assert_equal @zstded_src, c.read(compressed: :zstd)
656+
657+
io = StringIO.new
658+
c.write_to(io)
659+
assert_equal @src, io.string
660+
end
661+
662+
test '#write_to with compressed option writes compressed data when compress is zstd' do
663+
c = @klass.new(gen_metadata, File.join(@chunkdir,'fsb.*.buf'), :create, nil, compress: :zstd)
664+
c.concat(@zstded_src, @src.size)
665+
c.commit
666+
667+
assert_equal @src, c.read
668+
assert_equal @zstded_src, c.read(compressed: :zstd)
669+
670+
io = StringIO.new
671+
io.set_encoding(Encoding::ASCII_8BIT)
672+
c.write_to(io, compressed: :zstd)
673+
assert_equal @zstded_src, io.string
674+
end
610675
end
611676
end

test/plugin/test_buffer_memory_chunk.rb

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ class BufferMemoryChunkTest < Test::Unit::TestCase
270270
setup do
271271
@src = 'text data for compressing' * 5
272272
@gzipped_src = compress(@src)
273+
@zstded_src = compress(@src, type: :zstd)
273274
end
274275

275276
test '#append with compress option writes compressed data to chunk when compress is gzip' do
@@ -335,5 +336,69 @@ class BufferMemoryChunkTest < Test::Unit::TestCase
335336
c.write_to(io, compressed: :gzip)
336337
assert_equal @gzipped_src, io.string
337338
end
339+
340+
test '#append with compress option writes compressed data to chunk when compress is zstd' do
341+
c = Fluent::Plugin::Buffer::MemoryChunk.new(Object.new, compress: :zstd)
342+
c.append([@src, @src], compress: :zstd)
343+
c.commit
344+
345+
# check chunk is compressed
346+
assert c.read(compressed: :zstd).size < [@src, @src].join("").size
347+
348+
assert_equal @src + @src, c.read
349+
end
350+
351+
test '#open passes io object having decompressed data to a block when compress is zstd' do
352+
c = Fluent::Plugin::Buffer::MemoryChunk.new(Object.new, compress: :zstd)
353+
c.concat(@zstded_src, @src.size)
354+
c.commit
355+
356+
decomressed_data = c.open do |io|
357+
v = io.read
358+
assert_equal @src, v
359+
v
360+
end
361+
assert_equal @src, decomressed_data
362+
end
363+
364+
test '#open with compressed option passes io object having decompressed data to a block when compress is zstd' do
365+
c = Fluent::Plugin::Buffer::MemoryChunk.new(Object.new, compress: :zstd)
366+
c.concat(@zstded_src, @src.size)
367+
c.commit
368+
369+
comressed_data = c.open(compressed: :zstd) do |io|
370+
v = io.read
371+
assert_equal @zstded_src, v
372+
v
373+
end
374+
assert_equal @zstded_src, comressed_data
375+
end
376+
377+
test '#write_to writes decompressed data when compress is zstd' do
378+
c = Fluent::Plugin::Buffer::MemoryChunk.new(Object.new, compress: :zstd)
379+
c.concat(@zstded_src, @src.size)
380+
c.commit
381+
382+
assert_equal @src, c.read
383+
assert_equal @zstded_src, c.read(compressed: :zstd)
384+
385+
io = StringIO.new
386+
c.write_to(io)
387+
assert_equal @src, io.string
388+
end
389+
390+
test '#write_to with compressed option writes compressed data when compress is zstd' do
391+
c = Fluent::Plugin::Buffer::MemoryChunk.new(Object.new, compress: :zstd)
392+
c.concat(@zstded_src, @src.size)
393+
c.commit
394+
395+
assert_equal @src, c.read
396+
assert_equal @zstded_src, c.read(compressed: :zstd)
397+
398+
io = StringIO.new
399+
io.set_encoding(Encoding::ASCII_8BIT)
400+
c.write_to(io, compressed: :zstd)
401+
assert_equal @zstded_src, io.string
402+
end
338403
end
339404
end

0 commit comments

Comments
 (0)