diff --git a/.github/workflows/dev-short-tests.yml b/.github/workflows/dev-short-tests.yml index 2e476d72b..2a97c32d0 100644 --- a/.github/workflows/dev-short-tests.yml +++ b/.github/workflows/dev-short-tests.yml @@ -36,6 +36,7 @@ jobs: sudo apt update APT_PACKAGES="gcc-multilib" make apt-install CFLAGS="-m32 -O1 -fstack-protector" make check V=1 + CFLAGS="-m32 -O1 -fstack-protector" make V=1 -C tests test-cli-tests build-c89: runs-on: ubuntu-latest @@ -496,6 +497,7 @@ jobs: run: | make clean LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make -j check + LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make -j -C tests test-cli-tests # This test is only compatible with standard libraries that support BTI (Branch Target Identification). # Unfortunately, the standard library provided on Ubuntu 24.04 does not have this feature enabled. # make clean @@ -734,3 +736,4 @@ jobs: run: | source /opt/intel/oneapi/setvars.sh make CC=icx check + make CC=icx -C tests test-cli-tests diff --git a/tests/Makefile b/tests/Makefile index 406c7f20b..b96986cae 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -359,7 +359,11 @@ test-zstd test-zstd32 test-zstd-nolegacy test-zstd-dll: datagen test-cli-tests: ZSTD = $(PRGDIR)/zstd test-cli-tests: zstd datagen file $(ZSTD) - ./cli-tests/run.py --exec-prefix="$(QEMU_SYS)" --zstd="$(ZSTD)" --datagen=./datagen + ./cli-tests/run.py --exec-prefix="$(QEMU_SYS)" --zstd="$(ZSTD)" --datagen=./datagen $(CLI_TEST_ARGS) + +.PHONY: update-cli-tests +update-cli-tests: CLI_TEST_ARGS = --set-exact-output +update-cli-tests: test-cli-tests .PHONY: test-fullbench test-fullbench: fullbench datagen diff --git a/tests/cli-tests/common/platform.sh b/tests/cli-tests/common/platform.sh index a07f229dc..a5bd2f9dc 100644 --- a/tests/cli-tests/common/platform.sh +++ b/tests/cli-tests/common/platform.sh @@ -23,6 +23,11 @@ case "$UNAME" in *) MD5SUM="md5sum" ;; esac +md5hash() { + $MD5SUM | dd bs=1 count=32 status=none + echo +} + DIFF="diff" case "$UNAME" in SunOS) DIFF="gdiff" ;; @@ -34,3 +39,9 @@ then else hasMT="true" fi + +if zstd -vv --version | grep -q 'non-deterministic'; then + NON_DETERMINISTIC="true" +else + NON_DETERMINISTIC="" +fi diff --git a/tests/cli-tests/determinism/basic.sh b/tests/cli-tests/determinism/basic.sh new file mode 100755 index 000000000..7d49956c8 --- /dev/null +++ b/tests/cli-tests/determinism/basic.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +. "$COMMON/platform.sh" + +set -e + +# To update checksums on version change run this from the tests/ directory +# make update-cli-tests + +if [ -n "$NON_DETERMINISTIC" ]; then + # Skip tests if we have a non-deterministic build + cat "$CLI_TESTS/determinism/basic.sh.stdout.exact" + exit 0 +fi + +for level in $(seq 1 19); do + for file in $(ls files/); do + file="files/$file" + echo "level $level, file $file" + zstd --single-thread -q -$level $file -c | md5hash + done +done + +for file in $(ls files/); do + file="files/$file" + echo "level 1, long=18, file $file" + zstd --long=18 --single-thread -q -1 $file -c | md5hash + echo "level 19, long=18, file $file" + zstd --long=18 --single-thread -q -19 $file -c | md5hash +done + +for file in $(ls files/); do + file="files/$file" + echo "level -1, file $file" + zstd -q --single-thread --fast=1 $file -c | md5hash +done diff --git a/tests/cli-tests/determinism/basic.sh.stderr.exact b/tests/cli-tests/determinism/basic.sh.stderr.exact new file mode 100644 index 000000000..e69de29bb diff --git a/tests/cli-tests/determinism/basic.sh.stdout.exact b/tests/cli-tests/determinism/basic.sh.stdout.exact new file mode 100644 index 000000000..bb1723b15 --- /dev/null +++ b/tests/cli-tests/determinism/basic.sh.stdout.exact @@ -0,0 +1,880 @@ +level 1, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 1, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 1, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 1, file files/g100 +c94d1ef6bbec8b4899486b06207ee829 +level 1, file files/g1000 +6bf2f4b179864fd8db4676037465feed +level 1, file files/g10000 +2ae44c4053b2b47724c8f612dfb60d24 +level 1, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 1, file files/g10000-P10 +2d0eeab6a966098583a1dfeafb5090c1 +level 1, file files/g10000-P100 +93436482b4da30ce2300d356448c8990 +level 1, file files/g10000-P25 +c64b5f512c44b6a647da81753791b9a7 +level 1, file files/g10000-P50 +3982325490d90c8307e734c1b25790df +level 1, file files/g10000-P75 +b7504f80fee16b5ba6a0f46571eb563a +level 1, file files/g10000-P90 +350892bec7f7ad6a7d6af01c5d8b07c7 +level 1, file files/g100000 +daa38a869130494c077290cf54f2d895 +level 1, file files/g1000000 +a1d548531221d408b95dc5d9c600b3f0 +level 1, file files/g20000 +1da5b56511e8693867c0cdd962c521aa +level 1, file files/g200000 +41fb3b3d46d4221f2f0b072c65dd6e0a +level 1, file files/g30000 +788bc5abca5e33d79bb79a4eca98b9cd +level 1, file files/g50000 +0bf9fafd84a2d56a788a9159f1f23f26 +level 1, file files/g500000 +73401d6df0657e091de20468f32579a9 +level 2, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 2, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 2, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 2, file files/g100 +c94d1ef6bbec8b4899486b06207ee829 +level 2, file files/g1000 +a14988fb331bc6f8b33d9eba3a0416dc +level 2, file files/g10000 +a8656ebab20efa8a3fb281327aab5d58 +level 2, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 2, file files/g10000-P10 +9db9877242632964c232ebd4485dba07 +level 2, file files/g10000-P100 +93436482b4da30ce2300d356448c8990 +level 2, file files/g10000-P25 +d7a7223240a607fe28a2e8fd641a969d +level 2, file files/g10000-P50 +86478908f9caa5ca4029454005063078 +level 2, file files/g10000-P75 +14f5dcdb347e87790d49c1eb99ac5069 +level 2, file files/g10000-P90 +05bdb42a2eeb5788d6288dc241cde12c +level 2, file files/g100000 +12c6a4c50fad3e479e0f0ffe1d4df324 +level 2, file files/g1000000 +4f9cdc0de37b22d657fd9d3c61ec5b44 +level 2, file files/g20000 +1e70c3fe429c1af41e9cb8a536fb6df1 +level 2, file files/g200000 +bb1cc37142783345db29c3fd5838ce4e +level 2, file files/g30000 +52528017fe0eec85b6c3244e6fceb4ed +level 2, file files/g50000 +a38bdd671b6d3bd76b479dfc01d1c7fb +level 2, file files/g500000 +cd2090a38bbd677b385238355c996c01 +level 3, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 3, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 3, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 3, file files/g100 +c94d1ef6bbec8b4899486b06207ee829 +level 3, file files/g1000 +3ec47dcb2d606b9fdef3f19b1304f8fe +level 3, file files/g10000 +69a9d518b84fe2a66b57dfb4ab8905ae +level 3, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 3, file files/g10000-P10 +ac9866ac355c4ed8939deb9fbeec1aef +level 3, file files/g10000-P100 +93436482b4da30ce2300d356448c8990 +level 3, file files/g10000-P25 +5e1fe7a3831f6632bc8c9873ab8b633d +level 3, file files/g10000-P50 +76295f181396a98565eb9cc69b96dc75 +level 3, file files/g10000-P75 +1f751dc70508e81fef197311e8583e99 +level 3, file files/g10000-P90 +47c7b061c299dc253c6aaaf489e936cb +level 3, file files/g100000 +4b30b2be3394f03f1cf1f37a08dcec12 +level 3, file files/g1000000 +4301dea72cc4dd6162e46caa59788a09 +level 3, file files/g20000 +30456361833d27c0962c2faaa254e615 +level 3, file files/g200000 +0f01c07c57d60298dd54c6b6b197c3d3 +level 3, file files/g30000 +0b3c506a1b1b6ccbb54a852c370f5cdc +level 3, file files/g50000 +81368c0b96bf1a2f318940b836b46074 +level 3, file files/g500000 +0c1ef9c6d3d75bfa0dd5d893f65da47c +level 4, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 4, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 4, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 4, file files/g100 +c94d1ef6bbec8b4899486b06207ee829 +level 4, file files/g1000 +6a1214c19ab13d15934244a4655fa327 +level 4, file files/g10000 +09bbd556d9ee9f74f36b36bfa6b17325 +level 4, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 4, file files/g10000-P10 +1adb177b7a441c3585ffd781654758ba +level 4, file files/g10000-P100 +93436482b4da30ce2300d356448c8990 +level 4, file files/g10000-P25 +3a62170477d7f17d64dc49b971388ff7 +level 4, file files/g10000-P50 +de93403eafd68786410fa52a95752514 +level 4, file files/g10000-P75 +f5466b3cfc3ba1e5afecb8d8bb91250f +level 4, file files/g10000-P90 +132869db4091a9b9bdbc5236435a1d98 +level 4, file files/g100000 +dd92f22c593f40e0ccd6b31ad09d9d18 +level 4, file files/g1000000 +cfe7c063909c635f22438f83eb824082 +level 4, file files/g20000 +f8be159b057c6ee827f36cdd2ee5c43f +level 4, file files/g200000 +71362cc7c28dcc730b591e3002fe888c +level 4, file files/g30000 +f0b899995c6ba86066bd7f407fc708ef +level 4, file files/g50000 +2f293e665d5161e68d8e1f86ac6841be +level 4, file files/g500000 +42c5c45c595af60d5cf28f4cdd8ab392 +level 5, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 5, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 5, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 5, file files/g100 +c94d1ef6bbec8b4899486b06207ee829 +level 5, file files/g1000 +d47284586e181d455017d821bd3de1ef +level 5, file files/g10000 +d6cd223f1c215d332654ca241a376549 +level 5, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 5, file files/g10000-P10 +66b935a7666ae668ac990d5c9aaac652 +level 5, file files/g10000-P100 +15fede9faa3d7c484dead66071fb8c5d +level 5, file files/g10000-P25 +b292339cacea797a184554a2de3c1ed3 +level 5, file files/g10000-P50 +10b65af5125bf21a6810b8fb7a30b8b1 +level 5, file files/g10000-P75 +04fc60ea83db4b6101778f91a73d6040 +level 5, file files/g10000-P90 +302c8c7355082a7f40efe4ea40912411 +level 5, file files/g100000 +338f5e822a469774462f144d7ae371a0 +level 5, file files/g1000000 +46b8608a1f833477387e2fc844a817d5 +level 5, file files/g20000 +b7a468d363a7797d3d7a48577cd20213 +level 5, file files/g200000 +5ed09b3fd58ba540128319c02f9259cb +level 5, file files/g30000 +fd4c0e5acb85271c101fd8ae1f411232 +level 5, file files/g50000 +2a14c76d629615bd50a370e587d13eb8 +level 5, file files/g500000 +cb1122167d4a747f3f8e0dd18bce6fa3 +level 6, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 6, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 6, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 6, file files/g100 +c94d1ef6bbec8b4899486b06207ee829 +level 6, file files/g1000 +19187f900e7540efdcab3735f489f718 +level 6, file files/g10000 +70c03e642fb98b896f2d96c0fa0eca74 +level 6, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 6, file files/g10000-P10 +70e2df33337095c818051d86ea68f188 +level 6, file files/g10000-P100 +15fede9faa3d7c484dead66071fb8c5d +level 6, file files/g10000-P25 +dd4ed2ced4ae48672d5c8c0d4a7d58a5 +level 6, file files/g10000-P50 +9182b845f45f4990c8993e1c54e1e2e6 +level 6, file files/g10000-P75 +d3e6bb5a8e9790d23dda0a38b3def532 +level 6, file files/g10000-P90 +21da6c8aefa00b3e16f7674c642aa043 +level 6, file files/g100000 +350a0f07d7ddbcd0c629da0bcf734f02 +level 6, file files/g1000000 +d40c700beee149ab272b94c7ef0f3811 +level 6, file files/g20000 +335bc3f5767a7d4ad479408b0e289459 +level 6, file files/g200000 +032e3313ca247a8f4687059fa708284c +level 6, file files/g30000 +a4b9fed2e1005298617125ee3b00cb06 +level 6, file files/g50000 +d7b3dab8d19fb992795c440d5f953c94 +level 6, file files/g500000 +44e59ccbf7a9794d4ea03f3f59f61ffd +level 7, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 7, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 7, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 7, file files/g100 +c94d1ef6bbec8b4899486b06207ee829 +level 7, file files/g1000 +19187f900e7540efdcab3735f489f718 +level 7, file files/g10000 +495f1e5d30de3b34c5a76301875fa231 +level 7, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 7, file files/g10000-P10 +8a91fa2460ec9bd0387baa31beb81060 +level 7, file files/g10000-P100 +15fede9faa3d7c484dead66071fb8c5d +level 7, file files/g10000-P25 +7dc0563f2e66a2e57c0f119e4d5e636e +level 7, file files/g10000-P50 +e93a6eb179f7b26daa896328b2583b04 +level 7, file files/g10000-P75 +cb1e5facfc34fca7323000c6188ad657 +level 7, file files/g10000-P90 +e9984c6557f5a392f16e5c139dbe4994 +level 7, file files/g100000 +6e493dbe2985fec69860ef34728ac01a +level 7, file files/g1000000 +455023a055f3a4de76c7295408ce3c8f +level 7, file files/g20000 +2359efcd587e36ac9b74a8344bbf0e53 +level 7, file files/g200000 +ca80dbc88183a5aabb4aae955c449dff +level 7, file files/g30000 +7e1be7e841c9fddd776dbe94b50db0ab +level 7, file files/g50000 +09b80b58d70622de6f2354a06c15cb2a +level 7, file files/g500000 +c90609f0558f0979eccb572ce0af4aa3 +level 8, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 8, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 8, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 8, file files/g100 +c94d1ef6bbec8b4899486b06207ee829 +level 8, file files/g1000 +19187f900e7540efdcab3735f489f718 +level 8, file files/g10000 +495f1e5d30de3b34c5a76301875fa231 +level 8, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 8, file files/g10000-P10 +8a91fa2460ec9bd0387baa31beb81060 +level 8, file files/g10000-P100 +15fede9faa3d7c484dead66071fb8c5d +level 8, file files/g10000-P25 +526c95fd77cbcc2079720bb1b5515a54 +level 8, file files/g10000-P50 +50d4e0154067af438e56729716c3eda7 +level 8, file files/g10000-P75 +c94a94cce795566b065f2d3dca554c28 +level 8, file files/g10000-P90 +8f83ce03eb280cba48bafafbd066b752 +level 8, file files/g100000 +dbc4c43d9dc0937e67e92a908688a51e +level 8, file files/g1000000 +5a4e6e44c89c3538fdb09823e649c8f6 +level 8, file files/g20000 +3653750b7ea2e8dc97d1d24ccec72153 +level 8, file files/g200000 +e978eb15e94cf221f1c7c55a059bbc4a +level 8, file files/g30000 +9668f8c1292931955e14b81d67c2c648 +level 8, file files/g50000 +36a864d5bb5d9167d19ac237ce3bef51 +level 8, file files/g500000 +eaaac1f3c4861d4d501d9c92fa67cc08 +level 9, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 9, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 9, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 9, file files/g100 +c94d1ef6bbec8b4899486b06207ee829 +level 9, file files/g1000 +42d1f8aa9ee42135013077f09b77fd1a +level 9, file files/g10000 +ae4166250554922e9ed27e436c13bf6b +level 9, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 9, file files/g10000-P10 +bd9ede6738524ef732c9516146536acd +level 9, file files/g10000-P100 +93436482b4da30ce2300d356448c8990 +level 9, file files/g10000-P25 +526c95fd77cbcc2079720bb1b5515a54 +level 9, file files/g10000-P50 +af6f029bd0d9baee1a78b8f7ffef5df3 +level 9, file files/g10000-P75 +f56895eec07a63269ea3eaeb59e87f40 +level 9, file files/g10000-P90 +c5cef2890886bfaf2d747b37ededc261 +level 9, file files/g100000 +f11c301dcf8c791e4f2db29e1b388eba +level 9, file files/g1000000 +f90563e0d0962955d31af45fc8f2b19d +level 9, file files/g20000 +49820710f3fbc6627b60071e91dba56d +level 9, file files/g200000 +4689b0eb28c34619d8a9087cfa33fc88 +level 9, file files/g30000 +c14b029711fa6abc627ed3a051902b4c +level 9, file files/g50000 +2d1cde6271f46081fbeaaba10f1c48bb +level 9, file files/g500000 +eaaac1f3c4861d4d501d9c92fa67cc08 +level 10, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 10, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 10, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 10, file files/g100 +c94d1ef6bbec8b4899486b06207ee829 +level 10, file files/g1000 +42d1f8aa9ee42135013077f09b77fd1a +level 10, file files/g10000 +ae4166250554922e9ed27e436c13bf6b +level 10, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 10, file files/g10000-P10 +bd9ede6738524ef732c9516146536acd +level 10, file files/g10000-P100 +93436482b4da30ce2300d356448c8990 +level 10, file files/g10000-P25 +526c95fd77cbcc2079720bb1b5515a54 +level 10, file files/g10000-P50 +6f821eef670933208d85daad6a9a2791 +level 10, file files/g10000-P75 +9c944c50c800d72294bdc9a9a452dc90 +level 10, file files/g10000-P90 +838a22c0731a67d185cac135b2bac5c7 +level 10, file files/g100000 +bbb2e91bdee192ae6f23404542a35bfb +level 10, file files/g1000000 +1e52803b3311c2d4428c56d059901721 +level 10, file files/g20000 +939b50f472cf67c6dfbc4d3074e04011 +level 10, file files/g200000 +adc5f0c58c75e79e4bc4800c015d2401 +level 10, file files/g30000 +43e46ec5aae76c55c890a18f49b0163b +level 10, file files/g50000 +65c57573aef37a38bd6c587ef4388800 +level 10, file files/g500000 +d3c45fce79c26bce889c3fa6a5480200 +level 11, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 11, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 11, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 11, file files/g100 +c94d1ef6bbec8b4899486b06207ee829 +level 11, file files/g1000 +4aa08662527d6d7f996705929e0dd8e0 +level 11, file files/g10000 +330f75029558d7cb6fa2756d85a998bd +level 11, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 11, file files/g10000-P10 +990879c5b3d1c99aa5ef39f6049cebc9 +level 11, file files/g10000-P100 +049015191cf579b24653c8730fcc10f5 +level 11, file files/g10000-P25 +26a10f96c2008608a33a731ff39cd9c8 +level 11, file files/g10000-P50 +129c6082daea0da5f52358c71b252750 +level 11, file files/g10000-P75 +7ff21b2c10548b9fc8ec5b61f86b9db0 +level 11, file files/g10000-P90 +0def9775620838420b295c07fd50a196 +level 11, file files/g100000 +c115057c51f9bb603a7d0c6bdf76e422 +level 11, file files/g1000000 +d28d3aed914ba7368dd004a9431c0173 +level 11, file files/g20000 +650cf27ffca49ed98f0e5dbb8997d7eb +level 11, file files/g200000 +3210b89239e35e559be0ccd842577bb4 +level 11, file files/g30000 +09fe5a276e3fec09490c85962263fb26 +level 11, file files/g50000 +a9fa2677e4faab0eaa2334f278b3ec7d +level 11, file files/g500000 +86815b1a35a46312a081f1af4946a62e +level 12, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 12, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 12, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 12, file files/g100 +c94d1ef6bbec8b4899486b06207ee829 +level 12, file files/g1000 +6cb98f0115baf96a720638cf92b7803b +level 12, file files/g10000 +b73485abce0df9802dcfeee652c45a8d +level 12, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 12, file files/g10000-P10 +d00ac554fefc8a0f40420f908ff6fe69 +level 12, file files/g10000-P100 +049015191cf579b24653c8730fcc10f5 +level 12, file files/g10000-P25 +9e20110ea128e4201c9a09eb48ad16c8 +level 12, file files/g10000-P50 +07287871c8b4ec3b5a925563a97451ce +level 12, file files/g10000-P75 +2a47bb2eb7fb84a157f4525da9f78a77 +level 12, file files/g10000-P90 +d9c87f3f0faf212ec2d60cb611dac8a9 +level 12, file files/g100000 +d5d45068ded1319342ac3b7867d8c8fd +level 12, file files/g1000000 +d28d3aed914ba7368dd004a9431c0173 +level 12, file files/g20000 +650cf27ffca49ed98f0e5dbb8997d7eb +level 12, file files/g200000 +077d0f0ef9e9af86b1a298624fc70062 +level 12, file files/g30000 +09fe5a276e3fec09490c85962263fb26 +level 12, file files/g50000 +a9fa2677e4faab0eaa2334f278b3ec7d +level 12, file files/g500000 +86815b1a35a46312a081f1af4946a62e +level 13, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 13, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 13, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 13, file files/g100 +e6e88e42b891fbc82c87a60928d88e97 +level 13, file files/g1000 +773b6b59d472db0932b5ad1ad75eac64 +level 13, file files/g10000 +dfd1e66b36c80b191c338d0b14813920 +level 13, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 13, file files/g10000-P10 +40b5f47e143e235198f6408a099208e8 +level 13, file files/g10000-P100 +049015191cf579b24653c8730fcc10f5 +level 13, file files/g10000-P25 +deaa99c2458ca8ea661b358ef837ef58 +level 13, file files/g10000-P50 +dd575cdc1ac009a7f2407013063d02e3 +level 13, file files/g10000-P75 +0d411eb9beee65c6f5dd7764b639097b +level 13, file files/g10000-P90 +61db327f8fdd9a735e68259f05f71f0d +level 13, file files/g100000 +dece3af6a1b7ef4ab80cad69119a3b61 +level 13, file files/g1000000 +916989f734410afce6b3ae72a3352e68 +level 13, file files/g20000 +7ce4e5c10392cbae28ed79b0707f627f +level 13, file files/g200000 +ab3d3f2a0fb5d4e54f8e799213d7e995 +level 13, file files/g30000 +61f3ce2b87a584169e92791fa54c7361 +level 13, file files/g50000 +aba34c68e1d812fab8ce9863169e050b +level 13, file files/g500000 +9f16a159f5fa88b875e5c1e0574a999c +level 14, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 14, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 14, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 14, file files/g100 +e6e88e42b891fbc82c87a60928d88e97 +level 14, file files/g1000 +773b6b59d472db0932b5ad1ad75eac64 +level 14, file files/g10000 +dfd1e66b36c80b191c338d0b14813920 +level 14, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 14, file files/g10000-P10 +40b5f47e143e235198f6408a099208e8 +level 14, file files/g10000-P100 +049015191cf579b24653c8730fcc10f5 +level 14, file files/g10000-P25 +deaa99c2458ca8ea661b358ef837ef58 +level 14, file files/g10000-P50 +246b1782db44f4226d32c8718e39ac8c +level 14, file files/g10000-P75 +023a4c9c041fbcd4f584d5e65f9b4444 +level 14, file files/g10000-P90 +d57d3ce213e81d7ce80930115afc9f71 +level 14, file files/g100000 +29c1d79c3dc1dc51ec4ee3fd19fdbd10 +level 14, file files/g1000000 +7721785c341760a66ac9e2fb39cfeb33 +level 14, file files/g20000 +1055a0a808598d1eedf0442fceff44e0 +level 14, file files/g200000 +87df6235943fd09ba3f6a1f24cbc3a3a +level 14, file files/g30000 +74c32e0cd8bcd62bd4e1cf599c193abf +level 14, file files/g50000 +10d3bbb5e9822fa5c31fc2e79aeae7e9 +level 14, file files/g500000 +f8865d65f1790f723184007b2f940127 +level 15, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 15, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 15, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 15, file files/g100 +e6e88e42b891fbc82c87a60928d88e97 +level 15, file files/g1000 +773b6b59d472db0932b5ad1ad75eac64 +level 15, file files/g10000 +dfd1e66b36c80b191c338d0b14813920 +level 15, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 15, file files/g10000-P10 +40b5f47e143e235198f6408a099208e8 +level 15, file files/g10000-P100 +049015191cf579b24653c8730fcc10f5 +level 15, file files/g10000-P25 +deaa99c2458ca8ea661b358ef837ef58 +level 15, file files/g10000-P50 +91cc04148eef18ae4222038ad05f0586 +level 15, file files/g10000-P75 +aa5e9e619fe89644098c9ad17a8b9ad4 +level 15, file files/g10000-P90 +28d6d71a33f507d1e7acd56d586e3981 +level 15, file files/g100000 +29c1d79c3dc1dc51ec4ee3fd19fdbd10 +level 15, file files/g1000000 +de1091b6021db006820019edfcb1384c +level 15, file files/g20000 +1055a0a808598d1eedf0442fceff44e0 +level 15, file files/g200000 +0096718cf88b77da67fc2211bf85e3ca +level 15, file files/g30000 +74c32e0cd8bcd62bd4e1cf599c193abf +level 15, file files/g50000 +10d3bbb5e9822fa5c31fc2e79aeae7e9 +level 15, file files/g500000 +53aa49e42ffac4621397b88d4749c9c0 +level 16, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 16, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 16, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 16, file files/g100 +e6e88e42b891fbc82c87a60928d88e97 +level 16, file files/g1000 +f3eeeae11e293292fe1810d8745d0ae1 +level 16, file files/g10000 +23c5d58cca20ab65ff8a5d780f09e075 +level 16, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 16, file files/g10000-P10 +cced9c0f5709262da932fc8540bb72f4 +level 16, file files/g10000-P100 +049015191cf579b24653c8730fcc10f5 +level 16, file files/g10000-P25 +6676c9b599408491f7abc00947782054 +level 16, file files/g10000-P50 +9af82247b7fe18900592ae4fd5f1890a +level 16, file files/g10000-P75 +d44f2305f023fbff3d1a872ab740958a +level 16, file files/g10000-P90 +517f98319c717526b5e211079f073fbc +level 16, file files/g100000 +95ec61667f371a3621b34a042f1f4a0a +level 16, file files/g1000000 +b71641629b58754f1961ac394f177d7c +level 16, file files/g20000 +7bd4e03d703ead21e15fddd4423ef79e +level 16, file files/g200000 +fd1c701e9872f304a71f0e7f7aa9f918 +level 16, file files/g30000 +bc2211b250b5f4ed0a7bd97d447132e0 +level 16, file files/g50000 +a6d98ebd2ed96688482c7d1181dded42 +level 16, file files/g500000 +44e339bb9e57842b77476f6d75ff3fbd +level 17, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 17, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 17, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 17, file files/g100 +e6e88e42b891fbc82c87a60928d88e97 +level 17, file files/g1000 +f3eeeae11e293292fe1810d8745d0ae1 +level 17, file files/g10000 +23c5d58cca20ab65ff8a5d780f09e075 +level 17, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 17, file files/g10000-P10 +cced9c0f5709262da932fc8540bb72f4 +level 17, file files/g10000-P100 +049015191cf579b24653c8730fcc10f5 +level 17, file files/g10000-P25 +6676c9b599408491f7abc00947782054 +level 17, file files/g10000-P50 +607968cd37d41631312307f6c8a37ab4 +level 17, file files/g10000-P75 +818c2b0124e0dad26f9d95d753b11140 +level 17, file files/g10000-P90 +2d01bb79185ec88e5d7e684d3983eff8 +level 17, file files/g100000 +95ec61667f371a3621b34a042f1f4a0a +level 17, file files/g1000000 +cbd03f012664a02441271c50ba1330bf +level 17, file files/g20000 +7bd4e03d703ead21e15fddd4423ef79e +level 17, file files/g200000 +fd1c701e9872f304a71f0e7f7aa9f918 +level 17, file files/g30000 +bc2211b250b5f4ed0a7bd97d447132e0 +level 17, file files/g50000 +a6d98ebd2ed96688482c7d1181dded42 +level 17, file files/g500000 +01223076923dc7e3e06eeb3d71c467d2 +level 18, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 18, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 18, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 18, file files/g100 +e6e88e42b891fbc82c87a60928d88e97 +level 18, file files/g1000 +f3eeeae11e293292fe1810d8745d0ae1 +level 18, file files/g10000 +23c5d58cca20ab65ff8a5d780f09e075 +level 18, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 18, file files/g10000-P10 +cced9c0f5709262da932fc8540bb72f4 +level 18, file files/g10000-P100 +049015191cf579b24653c8730fcc10f5 +level 18, file files/g10000-P25 +6676c9b599408491f7abc00947782054 +level 18, file files/g10000-P50 +c61ad9309da86f7229498e46daacd6d9 +level 18, file files/g10000-P75 +8bf1c42a6a1f46ff8549e87f7b6daa54 +level 18, file files/g10000-P90 +29077b7a282975006c20701bca0d439d +level 18, file files/g100000 +95ec61667f371a3621b34a042f1f4a0a +level 18, file files/g1000000 +1e598049810de86924756bcda8941085 +level 18, file files/g20000 +7bd4e03d703ead21e15fddd4423ef79e +level 18, file files/g200000 +ab03b5ab84b6ebe79fa325118a895c6b +level 18, file files/g30000 +bc2211b250b5f4ed0a7bd97d447132e0 +level 18, file files/g50000 +a6d98ebd2ed96688482c7d1181dded42 +level 18, file files/g500000 +1b5374095c0bdc676655fe4db94286d1 +level 19, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 19, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 19, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 19, file files/g100 +e6e88e42b891fbc82c87a60928d88e97 +level 19, file files/g1000 +f3eeeae11e293292fe1810d8745d0ae1 +level 19, file files/g10000 +23c5d58cca20ab65ff8a5d780f09e075 +level 19, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 19, file files/g10000-P10 +cced9c0f5709262da932fc8540bb72f4 +level 19, file files/g10000-P100 +049015191cf579b24653c8730fcc10f5 +level 19, file files/g10000-P25 +6676c9b599408491f7abc00947782054 +level 19, file files/g10000-P50 +c61ad9309da86f7229498e46daacd6d9 +level 19, file files/g10000-P75 +d3171f297dfd08e444d481b30b1bbefa +level 19, file files/g10000-P90 +87c4a59ec6e15f6da86b26969044a8a4 +level 19, file files/g100000 +7ae11dc1919d94e80979d41d12a0b578 +level 19, file files/g1000000 +d4b9ee8879d7f30bed3ec9e70520ca67 +level 19, file files/g20000 +70028792166e24282f5497592b632192 +level 19, file files/g200000 +ab03b5ab84b6ebe79fa325118a895c6b +level 19, file files/g30000 +d698feea5119e141a08656439c4c1508 +level 19, file files/g50000 +b81384753f0db76004ac97681f6ef757 +level 19, file files/g500000 +0a25ba39483255a2c16899ab80a3ed8f +level 1, long=18, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 19, long=18, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 1, long=18, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 19, long=18, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 1, long=18, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 19, long=18, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 1, long=18, file files/g100 +c94d1ef6bbec8b4899486b06207ee829 +level 19, long=18, file files/g100 +e6e88e42b891fbc82c87a60928d88e97 +level 1, long=18, file files/g1000 +6bf2f4b179864fd8db4676037465feed +level 19, long=18, file files/g1000 +f3eeeae11e293292fe1810d8745d0ae1 +level 1, long=18, file files/g10000 +2ae44c4053b2b47724c8f612dfb60d24 +level 19, long=18, file files/g10000 +23c5d58cca20ab65ff8a5d780f09e075 +level 1, long=18, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 19, long=18, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 1, long=18, file files/g10000-P10 +6a8f6e75ab538eb08a422febc8b68006 +level 19, long=18, file files/g10000-P10 +cced9c0f5709262da932fc8540bb72f4 +level 1, long=18, file files/g10000-P100 +5db6fbe04a2de772ad4e49f5357d0543 +level 19, long=18, file files/g10000-P100 +049015191cf579b24653c8730fcc10f5 +level 1, long=18, file files/g10000-P25 +6fd603b31365845346faab9cd64fd647 +level 19, long=18, file files/g10000-P25 +6676c9b599408491f7abc00947782054 +level 1, long=18, file files/g10000-P50 +d1de679e9a8c962ed1cc668a96bf930a +level 19, long=18, file files/g10000-P50 +c61ad9309da86f7229498e46daacd6d9 +level 1, long=18, file files/g10000-P75 +dcf9822423e2ad42a569985707cd5ab4 +level 19, long=18, file files/g10000-P75 +f0ea19930e3866ff7a1932931346e0ac +level 1, long=18, file files/g10000-P90 +87d249fd8c1ad0064d067a1e5ad97647 +level 19, long=18, file files/g10000-P90 +582e2c4c5a06e452d8dae22e7210c070 +level 1, long=18, file files/g100000 +daa38a869130494c077290cf54f2d895 +level 19, long=18, file files/g100000 +7ae11dc1919d94e80979d41d12a0b578 +level 1, long=18, file files/g1000000 +81b9ffd138f3b25254a7078b06950e5f +level 19, long=18, file files/g1000000 +db54f06bf3abdbfd57892ab3aad18233 +level 1, long=18, file files/g20000 +1da5b56511e8693867c0cdd962c521aa +level 19, long=18, file files/g20000 +70028792166e24282f5497592b632192 +level 1, long=18, file files/g200000 +17eb9ff8d912da9c445def85cb748e54 +level 19, long=18, file files/g200000 +ab03b5ab84b6ebe79fa325118a895c6b +level 1, long=18, file files/g30000 +788bc5abca5e33d79bb79a4eca98b9cd +level 19, long=18, file files/g30000 +d698feea5119e141a08656439c4c1508 +level 1, long=18, file files/g50000 +0bf9fafd84a2d56a788a9159f1f23f26 +level 19, long=18, file files/g50000 +b81384753f0db76004ac97681f6ef757 +level 1, long=18, file files/g500000 +f035223dc02f581daf5dd79773c4dc2b +level 19, long=18, file files/g500000 +97093f718faf7b9094e27ea822fd1a29 +level -1, file files/g0 +5d80401e01d33084c65e94f93351e94c +level -1, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level -1, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level -1, file files/g100 +eb805e7fdb95bc42231b20d0e12e2a53 +level -1, file files/g1000 +ac7c900e31b9e4fe37b7846a898c7d48 +level -1, file files/g10000 +55e1e6ed7fcf5581a17f72f3a32e0834 +level -1, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level -1, file files/g10000-P10 +0bf549bdfc20b644c37901918de0d0eb +level -1, file files/g10000-P100 +93436482b4da30ce2300d356448c8990 +level -1, file files/g10000-P25 +b65475ee206e480b3adc9fcc7b79c54b +level -1, file files/g10000-P50 +ae4bf85c8343052ecb1d666bd9766fbc +level -1, file files/g10000-P75 +b0674333f519e71708f226f935ae63d5 +level -1, file files/g10000-P90 +2daa80aa34a8259fed7e04ae41397d6c +level -1, file files/g100000 +586e12a3aa574f35aedf0afadee3040c +level -1, file files/g1000000 +1cc8eb9ee1e4c20373fe3c1b0aa1a982 +level -1, file files/g20000 +b220e6387b1f5036c203f8be5f1a571c +level -1, file files/g200000 +fc42db710c19a4f4a27f004fb4678d9c +level -1, file files/g30000 +5350a7346d815f4ad42216b91ba8749a +level -1, file files/g50000 +4f00a5a94e8f98c6972053057f6ac971 +level -1, file files/g500000 +4abb2e46c936c273955778c00f3eb492 diff --git a/tests/cli-tests/determinism/multithread.sh b/tests/cli-tests/determinism/multithread.sh new file mode 100755 index 000000000..a3481dbaf --- /dev/null +++ b/tests/cli-tests/determinism/multithread.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +. "$COMMON/platform.sh" + +set -e + +# To update checksums on version change run this from the tests/ directory +# make update-cli-tests + +if [ -n "$NON_DETERMINISTIC" ] || [ -z "$hasMT" ]; then + # Skip tests if we have a non-deterministic build + cat "$CLI_TESTS/determinism/multithread.sh.stdout.exact" + exit 0 +fi + +for level in 1 3 7 19; do + for file in $(ls files/); do + file="files/$file" + echo "level $level, file $file" + zstd -T2 -q -$level $file -c | md5hash + done +done + +for file in $(ls files/); do + file="files/$file" + echo "level 1, long=18, file $file" + zstd --long=18 -T2 -q -1 $file -c | md5hash + echo "level 19, long=18, file $file" + zstd --long=18 -T2 -q -19 $file -c | md5hash +done + +for file in $(ls files/); do + file="files/$file" + echo "Vary number of threads on $file" + zstd -qf -1 $file -o $file.zst.good + + zstd -qf -T1 -1 $file + $DIFF $file.zst $file.zst.good + + zstd -qf -T2 -1 $file + $DIFF $file.zst $file.zst.good + + zstd -qf -T4 -1 $file + $DIFF $file.zst $file.zst.good +done diff --git a/tests/cli-tests/determinism/multithread.sh.stderr.exact b/tests/cli-tests/determinism/multithread.sh.stderr.exact new file mode 100644 index 000000000..e69de29bb diff --git a/tests/cli-tests/determinism/multithread.sh.stdout.exact b/tests/cli-tests/determinism/multithread.sh.stdout.exact new file mode 100644 index 000000000..8de7664df --- /dev/null +++ b/tests/cli-tests/determinism/multithread.sh.stdout.exact @@ -0,0 +1,260 @@ +level 1, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 1, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 1, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 1, file files/g100 +c94d1ef6bbec8b4899486b06207ee829 +level 1, file files/g1000 +6bf2f4b179864fd8db4676037465feed +level 1, file files/g10000 +2ae44c4053b2b47724c8f612dfb60d24 +level 1, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 1, file files/g10000-P10 +2d0eeab6a966098583a1dfeafb5090c1 +level 1, file files/g10000-P100 +93436482b4da30ce2300d356448c8990 +level 1, file files/g10000-P25 +c64b5f512c44b6a647da81753791b9a7 +level 1, file files/g10000-P50 +3982325490d90c8307e734c1b25790df +level 1, file files/g10000-P75 +b7504f80fee16b5ba6a0f46571eb563a +level 1, file files/g10000-P90 +350892bec7f7ad6a7d6af01c5d8b07c7 +level 1, file files/g100000 +daa38a869130494c077290cf54f2d895 +level 1, file files/g1000000 +a1d548531221d408b95dc5d9c600b3f0 +level 1, file files/g20000 +1da5b56511e8693867c0cdd962c521aa +level 1, file files/g200000 +41fb3b3d46d4221f2f0b072c65dd6e0a +level 1, file files/g30000 +788bc5abca5e33d79bb79a4eca98b9cd +level 1, file files/g50000 +0bf9fafd84a2d56a788a9159f1f23f26 +level 1, file files/g500000 +73401d6df0657e091de20468f32579a9 +level 3, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 3, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 3, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 3, file files/g100 +c94d1ef6bbec8b4899486b06207ee829 +level 3, file files/g1000 +3ec47dcb2d606b9fdef3f19b1304f8fe +level 3, file files/g10000 +69a9d518b84fe2a66b57dfb4ab8905ae +level 3, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 3, file files/g10000-P10 +ac9866ac355c4ed8939deb9fbeec1aef +level 3, file files/g10000-P100 +93436482b4da30ce2300d356448c8990 +level 3, file files/g10000-P25 +5e1fe7a3831f6632bc8c9873ab8b633d +level 3, file files/g10000-P50 +76295f181396a98565eb9cc69b96dc75 +level 3, file files/g10000-P75 +1f751dc70508e81fef197311e8583e99 +level 3, file files/g10000-P90 +47c7b061c299dc253c6aaaf489e936cb +level 3, file files/g100000 +4b30b2be3394f03f1cf1f37a08dcec12 +level 3, file files/g1000000 +4301dea72cc4dd6162e46caa59788a09 +level 3, file files/g20000 +30456361833d27c0962c2faaa254e615 +level 3, file files/g200000 +0f01c07c57d60298dd54c6b6b197c3d3 +level 3, file files/g30000 +0b3c506a1b1b6ccbb54a852c370f5cdc +level 3, file files/g50000 +81368c0b96bf1a2f318940b836b46074 +level 3, file files/g500000 +0c1ef9c6d3d75bfa0dd5d893f65da47c +level 7, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 7, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 7, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 7, file files/g100 +c94d1ef6bbec8b4899486b06207ee829 +level 7, file files/g1000 +19187f900e7540efdcab3735f489f718 +level 7, file files/g10000 +495f1e5d30de3b34c5a76301875fa231 +level 7, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 7, file files/g10000-P10 +8a91fa2460ec9bd0387baa31beb81060 +level 7, file files/g10000-P100 +15fede9faa3d7c484dead66071fb8c5d +level 7, file files/g10000-P25 +7dc0563f2e66a2e57c0f119e4d5e636e +level 7, file files/g10000-P50 +e93a6eb179f7b26daa896328b2583b04 +level 7, file files/g10000-P75 +cb1e5facfc34fca7323000c6188ad657 +level 7, file files/g10000-P90 +e9984c6557f5a392f16e5c139dbe4994 +level 7, file files/g100000 +6e493dbe2985fec69860ef34728ac01a +level 7, file files/g1000000 +455023a055f3a4de76c7295408ce3c8f +level 7, file files/g20000 +2359efcd587e36ac9b74a8344bbf0e53 +level 7, file files/g200000 +ca80dbc88183a5aabb4aae955c449dff +level 7, file files/g30000 +7e1be7e841c9fddd776dbe94b50db0ab +level 7, file files/g50000 +09b80b58d70622de6f2354a06c15cb2a +level 7, file files/g500000 +c90609f0558f0979eccb572ce0af4aa3 +level 19, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 19, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 19, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 19, file files/g100 +e6e88e42b891fbc82c87a60928d88e97 +level 19, file files/g1000 +f3eeeae11e293292fe1810d8745d0ae1 +level 19, file files/g10000 +23c5d58cca20ab65ff8a5d780f09e075 +level 19, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 19, file files/g10000-P10 +cced9c0f5709262da932fc8540bb72f4 +level 19, file files/g10000-P100 +049015191cf579b24653c8730fcc10f5 +level 19, file files/g10000-P25 +6676c9b599408491f7abc00947782054 +level 19, file files/g10000-P50 +c61ad9309da86f7229498e46daacd6d9 +level 19, file files/g10000-P75 +d3171f297dfd08e444d481b30b1bbefa +level 19, file files/g10000-P90 +87c4a59ec6e15f6da86b26969044a8a4 +level 19, file files/g100000 +7ae11dc1919d94e80979d41d12a0b578 +level 19, file files/g1000000 +d4b9ee8879d7f30bed3ec9e70520ca67 +level 19, file files/g20000 +70028792166e24282f5497592b632192 +level 19, file files/g200000 +ab03b5ab84b6ebe79fa325118a895c6b +level 19, file files/g30000 +d698feea5119e141a08656439c4c1508 +level 19, file files/g50000 +b81384753f0db76004ac97681f6ef757 +level 19, file files/g500000 +0a25ba39483255a2c16899ab80a3ed8f +level 1, long=18, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 19, long=18, file files/g0 +5d80401e01d33084c65e94f93351e94c +level 1, long=18, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 19, long=18, file files/g1 +8436b07a7eb916ac9c48af847b7e612f +level 1, long=18, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 19, long=18, file files/g10 +6cf177a3e6494ac3c76c857df6a9b31d +level 1, long=18, file files/g100 +c94d1ef6bbec8b4899486b06207ee829 +level 19, long=18, file files/g100 +e6e88e42b891fbc82c87a60928d88e97 +level 1, long=18, file files/g1000 +6bf2f4b179864fd8db4676037465feed +level 19, long=18, file files/g1000 +f3eeeae11e293292fe1810d8745d0ae1 +level 1, long=18, file files/g10000 +2ae44c4053b2b47724c8f612dfb60d24 +level 19, long=18, file files/g10000 +23c5d58cca20ab65ff8a5d780f09e075 +level 1, long=18, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 19, long=18, file files/g10000-P0 +6c2641d3b83775c50b766793b39967c4 +level 1, long=18, file files/g10000-P10 +6a8f6e75ab538eb08a422febc8b68006 +level 19, long=18, file files/g10000-P10 +cced9c0f5709262da932fc8540bb72f4 +level 1, long=18, file files/g10000-P100 +5db6fbe04a2de772ad4e49f5357d0543 +level 19, long=18, file files/g10000-P100 +049015191cf579b24653c8730fcc10f5 +level 1, long=18, file files/g10000-P25 +6fd603b31365845346faab9cd64fd647 +level 19, long=18, file files/g10000-P25 +6676c9b599408491f7abc00947782054 +level 1, long=18, file files/g10000-P50 +d1de679e9a8c962ed1cc668a96bf930a +level 19, long=18, file files/g10000-P50 +c61ad9309da86f7229498e46daacd6d9 +level 1, long=18, file files/g10000-P75 +dcf9822423e2ad42a569985707cd5ab4 +level 19, long=18, file files/g10000-P75 +f0ea19930e3866ff7a1932931346e0ac +level 1, long=18, file files/g10000-P90 +87d249fd8c1ad0064d067a1e5ad97647 +level 19, long=18, file files/g10000-P90 +582e2c4c5a06e452d8dae22e7210c070 +level 1, long=18, file files/g100000 +daa38a869130494c077290cf54f2d895 +level 19, long=18, file files/g100000 +7ae11dc1919d94e80979d41d12a0b578 +level 1, long=18, file files/g1000000 +2c410773bb02367d20d20569393faf1e +level 19, long=18, file files/g1000000 +e3f5ef0204aedbac03e80d4300b3afc7 +level 1, long=18, file files/g20000 +1da5b56511e8693867c0cdd962c521aa +level 19, long=18, file files/g20000 +70028792166e24282f5497592b632192 +level 1, long=18, file files/g200000 +17eb9ff8d912da9c445def85cb748e54 +level 19, long=18, file files/g200000 +ab03b5ab84b6ebe79fa325118a895c6b +level 1, long=18, file files/g30000 +788bc5abca5e33d79bb79a4eca98b9cd +level 19, long=18, file files/g30000 +d698feea5119e141a08656439c4c1508 +level 1, long=18, file files/g50000 +0bf9fafd84a2d56a788a9159f1f23f26 +level 19, long=18, file files/g50000 +b81384753f0db76004ac97681f6ef757 +level 1, long=18, file files/g500000 +f035223dc02f581daf5dd79773c4dc2b +level 19, long=18, file files/g500000 +97093f718faf7b9094e27ea822fd1a29 +Vary number of threads on files/g0 +Vary number of threads on files/g1 +Vary number of threads on files/g10 +Vary number of threads on files/g100 +Vary number of threads on files/g1000 +Vary number of threads on files/g10000 +Vary number of threads on files/g10000-P0 +Vary number of threads on files/g10000-P10 +Vary number of threads on files/g10000-P100 +Vary number of threads on files/g10000-P25 +Vary number of threads on files/g10000-P50 +Vary number of threads on files/g10000-P75 +Vary number of threads on files/g10000-P90 +Vary number of threads on files/g100000 +Vary number of threads on files/g1000000 +Vary number of threads on files/g20000 +Vary number of threads on files/g200000 +Vary number of threads on files/g30000 +Vary number of threads on files/g50000 +Vary number of threads on files/g500000 diff --git a/tests/cli-tests/determinism/reuse.sh b/tests/cli-tests/determinism/reuse.sh new file mode 100755 index 000000000..83e4088dd --- /dev/null +++ b/tests/cli-tests/determinism/reuse.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +. "$COMMON/platform.sh" + +set -e + +# To update checksums on version change run this from the tests/ directory +# make update-cli-tests + +if [ -n "$NON_DETERMINISTIC" ]; then + # Skip tests if we have a non-deterministic build + cat "$CLI_TESTS/determinism/reuse.sh.stdout.exact" + exit 0 +fi + +datagen -g0 > file0 +datagen -g1 > file1 +datagen -g1000 > file1000 +datagen -g100000 > file100000 + +validate() { + $DIFF file0.zst file0.zst.good + $DIFF file1.zst file1.zst.good + $DIFF file1000.zst file1000.zst.good + $DIFF file100000.zst file100000.zst.good +} + +# Check that context reuse doesn't impact determinism +for level in $(seq 1 19); do + echo $level + zstd -qf --single-thread -$level file0 -o file0.zst.good + zstd -qf --single-thread -$level file1 -o file1.zst.good + zstd -qf --single-thread -$level file1000 -o file1000.zst.good + zstd -qf --single-thread -$level file100000 -o file100000.zst.good + + zstd -qf --single-thread -$level file0 file1 file1000 file100000 + validate + zstd -qf --single-thread -$level file1 file0 file1000 file100000 + validate + zstd -qf --single-thread -$level file1000 file1 file0 file100000 + validate + zstd -qf --single-thread -$level file100000 file1000 file1 file0 + validate +done diff --git a/tests/cli-tests/determinism/reuse.sh.stderr.exact b/tests/cli-tests/determinism/reuse.sh.stderr.exact new file mode 100644 index 000000000..e69de29bb diff --git a/tests/cli-tests/determinism/reuse.sh.stdout.exact b/tests/cli-tests/determinism/reuse.sh.stdout.exact new file mode 100644 index 000000000..ac30dc23a --- /dev/null +++ b/tests/cli-tests/determinism/reuse.sh.stdout.exact @@ -0,0 +1,19 @@ +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 diff --git a/tests/cli-tests/determinism/setup b/tests/cli-tests/determinism/setup new file mode 100755 index 000000000..c16029ebf --- /dev/null +++ b/tests/cli-tests/determinism/setup @@ -0,0 +1,5 @@ +#!/bin/sh + +set -e + +cp -r ../files . diff --git a/tests/cli-tests/determinism/setup_once b/tests/cli-tests/determinism/setup_once new file mode 100755 index 000000000..1d7b34c1f --- /dev/null +++ b/tests/cli-tests/determinism/setup_once @@ -0,0 +1,30 @@ +#!/bin/sh + +set -e + +. "$COMMON/platform.sh" + + +mkdir files/ + +datagen -g0 > files/g0 +datagen -g1 > files/g1 +datagen -g10 > files/g10 +datagen -g100 > files/g100 +datagen -g1000 > files/g1000 +datagen -g10000 > files/g10000 +datagen -g20000 > files/g20000 +datagen -g30000 > files/g30000 +datagen -g50000 > files/g50000 +datagen -g100000 > files/g100000 +datagen -g200000 > files/g200000 +datagen -g500000 > files/g500000 +datagen -g1000000 > files/g1000000 + +datagen -g10000 -P0 > files/g10000-P0 +datagen -g10000 -P10 > files/g10000-P10 +datagen -g10000 -P25 > files/g10000-P25 +datagen -g10000 -P50 > files/g10000-P50 +datagen -g10000 -P75 > files/g10000-P75 +datagen -g10000 -P90 > files/g10000-P90 +datagen -g10000 -P100 > files/g10000-P100 diff --git a/tests/cli-tests/run.py b/tests/cli-tests/run.py index 46564d2ff..011c8478e 100755 --- a/tests/cli-tests/run.py +++ b/tests/cli-tests/run.py @@ -705,6 +705,7 @@ if __name__ == "__main__": env["DATAGEN_BIN"] = os.path.abspath(args.datagen) env["ZSTDGREP_BIN"] = os.path.abspath(args.zstdgrep) env["ZSTDLESS_BIN"] = os.path.abspath(args.zstdless) + env["CLI_TESTS"] = os.path.abspath(args.test_dir) env["COMMON"] = os.path.abspath(os.path.join(args.test_dir, "common")) env["PATH"] = bin_dir + ":" + os.getenv("PATH", "") env["LC_ALL"] = "C"