@@ -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
611676end
0 commit comments