--- /dev/null
+name: dev-long-tests
+# Tests longer than 10mn
+
+concurrency:
+ group: long-${{ github.ref }}
+ cancel-in-progress: true
+
+on:
+ pull_request:
+ branches: [ dev, release, actionsTest ]
+
+permissions: read-all
+
+jobs:
+ make-all:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: make all
+ run: make all
+
+ # lasts ~24mn
+ make-test:
+ runs-on: ubuntu-latest
+ env:
+ DEVNULLRIGHTS: 1
+ READFROMBLOCKDEVICE: 1
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: make test
+ run: make test
+
+ # lasts ~26mn
+ make-test-osx:
+ runs-on: macos-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: OS-X test
+ run: make test # make -c lib all doesn't work because of the fact that it's not a tty
+
+ # lasts ~24mn
+ make-test-32bit:
+ runs-on: ubuntu-latest
+ env:
+ DEVNULLRIGHTS: 1
+ READFROMBLOCKDEVICE: 1
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: make test
+ run: |
+ sudo apt-get -qqq update
+ make libc6install
+ CFLAGS="-m32" make test
+
+ no-intrinsics-fuzztest:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: no intrinsics fuzztest
+ run: MOREFLAGS="-DZSTD_NO_INTRINSICS" make -C tests fuzztest
+
+ tsan-zstreamtest:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: thread sanitizer zstreamtest
+ run: CC=clang ZSTREAM_TESTTIME=-T3mn make tsan-test-zstream
+
+ ubsan-zstreamtest:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: undefined behavior sanitizer zstreamtest
+ run: CC=clang make uasan-test-zstream
+
+ # lasts ~15mn
+ tsan-fuzztest:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: thread sanitizer fuzztest
+ run: CC=clang make tsan-fuzztest
+
+
+ big-tests-zstreamtest32:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: zstream tests in 32bit mode, with big tests
+ run: |
+ sudo apt-get -qqq update
+ make libc6install
+ CC=clang make -C tests test-zstream32 FUZZER_FLAGS="--big-tests"
+
+ # lasts ~23mn
+ gcc-8-asan-ubsan-testzstd:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: gcc-8 + ASan + UBSan + Test Zstd
+ # See https://askubuntu.com/a/1428822
+ run: |
+ echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu focal main universe" | sudo tee -a /etc/apt/sources.list
+ sudo apt-get -qqq update
+ make gcc8install
+ CC=gcc-8 make -j uasan-test-zstd </dev/null V=1
+
+ clang-asan-ubsan-testzstd:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: clang + ASan + UBSan + Test Zstd
+ run: CC=clang make -j uasan-test-zstd </dev/null V=1
+
+ gcc-asan-ubsan-testzstd-32bit:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: ASan + UBSan + Test Zstd, 32bit mode
+ run: |
+ sudo apt-get -qqq update
+ make libc6install
+ make -j uasan-test-zstd32 V=1
+
+ # Note : external libraries must be turned off when using MSAN tests,
+ # because they are not msan-instrumented,
+ # so any data coming from these libraries is always considered "uninitialized"
+
+ gcc-8-asan-ubsan-fuzz:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: gcc-8 + ASan + UBSan + Fuzz Test
+ # See https://askubuntu.com/a/1428822
+ run: |
+ echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu focal main universe" | sudo tee -a /etc/apt/sources.list
+ sudo apt-get -qqq update
+ make gcc8install
+ CC=gcc-8 FUZZER_FLAGS="--long-tests" make clean uasan-fuzztest
+
+ clang-asan-ubsan-fuzz:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: clang + ASan + UBSan + Fuzz Test
+ run: CC=clang FUZZER_FLAGS="--long-tests" make clean uasan-fuzztest
+
+ gcc-asan-ubsan-fuzz32:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: ASan + UBSan + Fuzz Test 32bit
+ run: |
+ sudo apt-get -qqq update
+ make libc6install
+ CFLAGS="-O3 -m32" FUZZER_FLAGS="--long-tests" make uasan-fuzztest
+
+ clang-asan-ubsan-fuzz32:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: clang + ASan + UBSan + Fuzz Test 32bit
+ run: |
+ sudo apt-get -qqq update
+ make libc6install
+ CC=clang CFLAGS="-O3 -m32" FUZZER_FLAGS="--long-tests" make uasan-fuzztest
+
+ asan-ubsan-regression:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: ASan + UBSan + Regression Test
+ run: make -j uasanregressiontest
+
+ clang-ubsan-regression:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: clang + ASan + UBSan + Regression Test
+ run: CC=clang make -j uasanregressiontest
+
+ msan-regression:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: MSan + Regression Test
+ run: make -j msanregressiontest
+
+ clang-msan-fuzz-unoptimized:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: clang + MSan + Fuzz Test
+ run: |
+ sudo apt-get -qqq update
+ sudo apt-get install clang
+ CC=clang MOREFLAGS="-O0" make clean msan-fuzztest
+
+ clang-msan-fuzz:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: clang + MSan + Fuzz Test
+ run: |
+ sudo apt-get -qqq update
+ sudo apt-get install clang
+ CC=clang FUZZER_FLAGS="--long-tests" make clean msan-fuzztest
+
+ # lasts ~24mn
+ clang-msan-testzstd:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: clang + MSan + Test Zstd
+ run: |
+ sudo apt-get update
+ sudo apt-get install clang
+ CC=clang make msan-test-zstd HAVE_ZLIB=0 HAVE_LZ4=0 HAVE_LZMA=0 V=1
+
+ armfuzz:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: Qemu ARM emulation + Fuzz Test
+ run: |
+ sudo apt-get -qqq update
+ make arminstall
+ make armfuzz
+
+ valgrind-fuzz-test:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: valgrind + fuzz test stack mode # ~ 7mn
+ shell: 'script -q -e -c "bash {0}"'
+ run: |
+ sudo apt-get -qqq update
+ make valgrindinstall
+ make -C tests test-valgrind
+ make clean
+ make -C tests test-fuzzer-stackmode
+
+ mingw-long-test:
+ runs-on: windows-latest
+ defaults:
+ run:
+ shell: msys2 {0}
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - uses: msys2/setup-msys2@5beef6d11f48bba68b9eb503e3adc60b23c0cc36 # tag=v2
+ with:
+ msystem: MINGW64
+ install: make
+ update: true
+ # Based on https://ariya.io/2020/07/on-github-actions-with-msys2
+ - name: install mingw gcc
+ run: pacman --noconfirm -S gcc
+ - name: MINGW64 gcc fuzztest
+ run: |
+ export CC="gcc"
+ export CXX="g++"
+ export FUZZERTEST="-T2mn"
+ export ZSTREAM_TESTTIME="-T2mn"
+ echo "Testing $CC $CXX MINGW64"
+ make -v
+ $CC --version
+ $CXX --version
+ make -C tests fuzztest
+
+ # lasts ~20mn
+ oss-fuzz:
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ sanitizer: [address, undefined, memory]
+ steps:
+ - name: Build Fuzzers (${{ matrix.sanitizer }})
+ id: build
+ uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
+ with:
+ oss-fuzz-project-name: 'zstd'
+ dry-run: false
+ sanitizer: ${{ matrix.sanitizer }}
+ - name: Run Fuzzers (${{ matrix.sanitizer }})
+ uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
+ with:
+ oss-fuzz-project-name: 'zstd'
+ fuzz-seconds: 600
+ dry-run: false
+ sanitizer: ${{ matrix.sanitizer }}
+ - name: Upload Crash
+ uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # tag=v3.1.2
+ if: failure() && steps.build.outcome == 'success'
+ with:
+ name: ${{ matrix.sanitizer }}-artifacts
+ path: ./out/artifacts