| 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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - name: make all |
| run: make all |
| |
| # lasts ~24mn |
| make-test: |
| runs-on: ubuntu-latest |
| env: |
| DEVNULLRIGHTS: 1 |
| READFROMBLOCKDEVICE: 1 |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - name: make test |
| run: make test |
| |
| # lasts ~26mn |
| make-test-osx: |
| runs-on: macos-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - 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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - 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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - name: no intrinsics fuzztest |
| run: MOREFLAGS="-DZSTD_NO_INTRINSICS" make -C tests fuzztest |
| |
| tsan-zstreamtest: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - name: thread sanitizer zstreamtest |
| run: CC=clang ZSTREAM_TESTTIME=-T3mn make tsan-test-zstream |
| |
| ubsan-zstreamtest: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - name: undefined behavior sanitizer zstreamtest |
| run: CC=clang make uasan-test-zstream |
| |
| # lasts ~15mn |
| tsan-fuzztest: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - name: thread sanitizer fuzztest |
| run: CC=clang make tsan-fuzztest |
| |
| |
| big-tests-zstreamtest32: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - 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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - 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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - 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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - 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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - 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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - 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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - 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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - 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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - name: ASan + UBSan + Regression Test |
| run: make -j uasanregressiontest |
| |
| clang-ubsan-regression: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - name: clang + ASan + UBSan + Regression Test |
| run: CC=clang make -j uasanregressiontest |
| |
| msan-regression: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - name: MSan + Regression Test |
| run: make -j msanregressiontest |
| |
| clang-msan-fuzz-unoptimized: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - 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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - 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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - 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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - 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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - 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@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 |
| - 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@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # tag=v3.1.3 |
| if: failure() && steps.build.outcome == 'success' |
| with: |
| name: ${{ matrix.sanitizer }}-artifacts |
| path: ./out/artifacts |