| 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - name: make all |
| run: make all |
| |
| # lasts ~24mn |
| make-test: |
| runs-on: ubuntu-latest |
| env: |
| DEVNULLRIGHTS: 1 |
| READFROMBLOCKDEVICE: 1 |
| steps: |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - name: make test |
| run: make test |
| |
| # lasts ~26mn |
| make-test-macos: |
| runs-on: macos-latest |
| steps: |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - name: make test on macos |
| run: make test |
| |
| # lasts ~24mn |
| make-test-32bit: |
| runs-on: ubuntu-latest |
| env: |
| DEVNULLRIGHTS: 1 |
| READFROMBLOCKDEVICE: 1 |
| steps: |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - name: make test # note: `make -j test success` seems to require a clean state |
| run: | |
| sudo apt-get -qqq update |
| make libc6install |
| make clean |
| CFLAGS="-m32 -O2" make -j test V=1 |
| |
| no-intrinsics-fuzztest: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - name: no intrinsics fuzztest |
| run: MOREFLAGS="-DZSTD_NO_INTRINSICS" make -C tests fuzztest |
| |
| tsan-zstreamtest: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - name: thread sanitizer zstreamtest |
| run: CC=clang ZSTREAM_TESTTIME=-T3mn make tsan-test-zstream |
| |
| uasan-zstreamtest: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - name: ub + address sanitizer on zstreamtest |
| run: CC=clang make uasan-test-zstream |
| |
| # lasts ~15mn |
| tsan-fuzztest: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - name: thread sanitizer fuzztest |
| run: CC=clang make tsan-fuzztest |
| |
| |
| big-tests-zstreamtest32: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - 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-fuzz32: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - name: clang + ASan + Fuzz Test 32bit |
| run: | |
| sudo apt-get -qqq update |
| make libc6install |
| CC=clang CFLAGS="-O3 -m32" FUZZER_FLAGS="--long-tests" make asan-fuzztest |
| |
| # The following test seems to have issues on github CI specifically, |
| # it does not provide the `__mulodi4` instruction emulation |
| # required for signed 64-bit multiplication. |
| # Replaced by asan-only test (above) |
| # |
| # clang-asan-ubsan-fuzz32: |
| # runs-on: ubuntu-20.04 |
| # steps: |
| # - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| # - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - name: ASan + UBSan + Regression Test |
| run: make -j uasanregressiontest |
| |
| clang-asan-ubsan-regression: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - name: clang + ASan + UBSan + Regression Test |
| run: CC=clang make -j uasanregressiontest |
| |
| msan-regression: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - name: MSan + Regression Test |
| run: make -j msanregressiontest |
| |
| clang-msan-fuzz-unoptimized: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - 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@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
| - uses: msys2/setup-msys2@d44ca8e88d8b43d56cf5670f91747359d5537f97 # tag=v2.26.0 |
| 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@5d5d22a31266ced268874388b861e4b58bb5c2f3 # tag=v4.3.1 |
| if: failure() && steps.build.outcome == 'success' |
| with: |
| name: ${{ matrix.sanitizer }}-artifacts |
| path: ./out/artifacts |