diff options
Diffstat (limited to 'tests/playTests.sh')
-rwxr-xr-x | tests/playTests.sh | 78 |
1 files changed, 54 insertions, 24 deletions
diff --git a/tests/playTests.sh b/tests/playTests.sh index c93c58fe8d58..41d8263b6a67 100755 --- a/tests/playTests.sh +++ b/tests/playTests.sh @@ -93,6 +93,7 @@ else hasMT="true" fi + $ECHO "\n===> simple tests " ./datagen > tmp @@ -100,8 +101,12 @@ $ECHO "test : basic compression " $ZSTD -f tmp # trivial compression case, creates tmp.zst $ECHO "test : basic decompression" $ZSTD -df tmp.zst # trivial decompression case (overwrites tmp) -$ECHO "test : too large compression level (must fail)" +$ECHO "test : too large compression level => auto-fix" $ZSTD -99 -f tmp # too large compression level, automatic sized down +$ECHO "test : --fast aka negative compression levels" +$ZSTD --fast -f tmp # == -1 +$ZSTD --fast=3 -f tmp # == -3 +$ZSTD --fast=200000 -f tmp # == no compression $ECHO "test : compress to stdout" $ZSTD tmp -c > tmpCompressed $ZSTD tmp --stdout > tmpCompressed # long command format @@ -190,10 +195,16 @@ $ZSTD -t tmp1.zst tmp2.zst $ZSTD -dc tmp1.zst tmp2.zst $ZSTD tmp1.zst tmp2.zst -o "$INTOVOID" $ZSTD -d tmp1.zst tmp2.zst -o tmp +touch tmpexists +$ZSTD tmp1 tmp2 -f -o tmpexists +$ZSTD tmp1 tmp2 -o tmpexists && die "should have refused to overwrite" +# Bug: PR #972 +if [ "$?" -eq 139 ]; then + die "should not have segfaulted" +fi rm tmp* - $ECHO "\n===> Advanced compression parameters " $ECHO "Hello world!" | $ZSTD --zstd=windowLog=21, - -o tmp.zst && die "wrong parameters not detected!" $ECHO "Hello world!" | $ZSTD --zstd=windowLo=21 - -o tmp.zst && die "wrong parameters not detected!" @@ -203,8 +214,8 @@ roundTripTest -g512K roundTripTest -g512K " --zstd=slen=3,tlen=48,strat=6" roundTripTest -g512K " --zstd=strat=6,wlog=23,clog=23,hlog=22,slog=6" roundTripTest -g512K " --zstd=windowLog=23,chainLog=23,hashLog=22,searchLog=6,searchLength=3,targetLength=48,strategy=6" -roundTripTest -g512K " --long --zstd=ldmHashLog=20,ldmSearchLength=64,ldmBucketSizeLog=1,ldmHashEveryLog=7" -roundTripTest -g512K " --long --zstd=ldmhlog=20,ldmslen=64,ldmblog=1,ldmhevery=7" +roundTripTest -g512K " --single-thread --long --zstd=ldmHashLog=20,ldmSearchLength=64,ldmBucketSizeLog=1,ldmHashEveryLog=7" +roundTripTest -g512K " --single-thread --long --zstd=ldmhlog=20,ldmslen=64,ldmblog=1,ldmhevery=7" roundTripTest -g512K 19 @@ -231,8 +242,18 @@ $ZSTD -c hello.tmp > hello.zstd --no-check $ZSTD -c world.tmp > world.zstd --no-check cat hello.zstd world.zstd > helloworld.zstd $ZSTD -dc helloworld.zstd > result.tmp -cat result.tmp $DIFF helloworld.tmp result.tmp +$ECHO "testing zstdcat symlink" +ln -sf $ZSTD zstdcat +./zstdcat helloworld.zstd > result.tmp +$DIFF helloworld.tmp result.tmp +rm zstdcat +rm result.tmp +$ECHO "testing zcat symlink" +ln -sf $ZSTD zcat +./zcat helloworld.zstd > result.tmp +$DIFF helloworld.tmp result.tmp +rm zcat rm ./*.tmp ./*.zstd $ECHO "frame concatenation tests completed" @@ -322,9 +343,14 @@ $ECHO "- Create first dictionary " TESTFILE=../programs/zstdcli.c $ZSTD --train *.c ../programs/*.c -o tmpDict cp $TESTFILE tmp +$ECHO "- Dictionary compression roundtrip" $ZSTD -f tmp -D tmpDict $ZSTD -d tmp.zst -D tmpDict -fo result $DIFF $TESTFILE result +$ECHO "- Dictionary compression with btlazy2 strategy" +$ZSTD -f tmp -D tmpDict --zstd=strategy=6 +$ZSTD -d tmp.zst -D tmpDict -fo result +$DIFF $TESTFILE result if [ -n "$hasMT" ] then $ECHO "- Test dictionary compression with multithreading " @@ -451,6 +477,8 @@ $ECHO "bench one file" $ZSTD -bi0 tmp1 $ECHO "bench multiple levels" $ZSTD -i0b0e3 tmp1 +$ECHO "bench negative level" +$ZSTD -bi0 --fast tmp1 $ECHO "with recursive and quiet modes" $ZSTD -rqi1b1e2 tmp1 @@ -603,14 +631,15 @@ roundTripTest -g516K 19 # btopt fileRoundTripTest -g500K $ECHO "\n===> zstd long distance matching round-trip tests " -roundTripTest -g0 "2 --long" -roundTripTest -g1000K "1 --long" -roundTripTest -g517K "6 --long" -roundTripTest -g516K "16 --long" -roundTripTest -g518K "19 --long" -fileRoundTripTest -g5M "3 --long" +roundTripTest -g0 "2 --single-thread --long" +roundTripTest -g1000K "1 --single-thread --long" +roundTripTest -g517K "6 --single-thread --long" +roundTripTest -g516K "16 --single-thread --long" +roundTripTest -g518K "19 --single-thread --long" +fileRoundTripTest -g5M "3 --single-thread --long" +roundTripTest -g96K "5 --single-thread" if [ -n "$hasMT" ] then $ECHO "\n===> zstdmt round-trip tests " @@ -620,7 +649,7 @@ then fileRoundTripTest -g4M "19 -T2 -B1M" $ECHO "\n===> zstdmt long distance matching round-trip tests " - roundTripTest -g8M "3 --long -T2" + roundTripTest -g8M "3 --long=24 -T2" else $ECHO "\n===> no multithreading, skipping zstdmt tests " fi @@ -671,13 +700,13 @@ rm tmp* $ECHO "\n===> zstd long distance matching tests " -roundTripTest -g0 " --long" -roundTripTest -g9M "2 --long" +roundTripTest -g0 " --single-thread --long" +roundTripTest -g9M "2 --single-thread --long" # Test parameter parsing -roundTripTest -g1M -P50 "1 --long=29" " --memory=512MB" -roundTripTest -g1M -P50 "1 --long=29 --zstd=wlog=28" " --memory=256MB" -roundTripTest -g1M -P50 "1 --long=29" " --long=28 --memory=512MB" -roundTripTest -g1M -P50 "1 --long=29" " --zstd=wlog=28 --memory=512MB" +roundTripTest -g1M -P50 "1 --single-thread --long=29" " --memory=512MB" +roundTripTest -g1M -P50 "1 --single-thread --long=29 --zstd=wlog=28" " --memory=256MB" +roundTripTest -g1M -P50 "1 --single-thread --long=29" " --long=28 --memory=512MB" +roundTripTest -g1M -P50 "1 --single-thread --long=29" " --zstd=wlog=28 --memory=512MB" if [ "$1" != "--test-large-data" ]; then @@ -712,18 +741,19 @@ roundTripTest -g18000018 -P94 18 roundTripTest -g18000019 -P96 19 roundTripTest -g5000000000 -P99 1 +roundTripTest -g1700000000 -P0 "1 --zstd=strategy=6" # ensure btlazy2 can survive an overflow rescale fileRoundTripTest -g4193M -P99 1 $ECHO "\n===> zstd long, long distance matching round-trip tests " -roundTripTest -g270000000 "1 --long" -roundTripTest -g130000000 -P60 "5 --long" -roundTripTest -g35000000 -P70 "8 --long" -roundTripTest -g18000001 -P80 "18 --long" +roundTripTest -g270000000 "1 --single-thread --long" +roundTripTest -g130000000 -P60 "5 --single-thread --long" +roundTripTest -g35000000 -P70 "8 --single-thread --long" +roundTripTest -g18000001 -P80 "18 --single-thread --long" # Test large window logs -roundTripTest -g700M -P50 "1 --long=29" -roundTripTest -g600M -P50 "1 --long --zstd=wlog=29,clog=28" +roundTripTest -g700M -P50 "1 --single-thread --long=29" +roundTripTest -g600M -P50 "1 --single-thread --long --zstd=wlog=29,clog=28" if [ -n "$hasMT" ] |