It's a bit silly, because if we can't trust GitHub, what are we doing here? But OSSF complains about it, so let's fix it.
287 lines
9.3 KiB
YAML
287 lines
9.3 KiB
YAML
name: dev-long-tests
|
|
# Tests longer than 10mn
|
|
|
|
concurrency:
|
|
group: long-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
on:
|
|
pull_request:
|
|
branches: [ dev, release, actionsTest ]
|
|
|
|
jobs:
|
|
make-all:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # 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@755da8c3cf115ac066823e79a1e1788f8940201b # tag=v3
|
|
- name: make test
|
|
run: make test
|
|
|
|
# lasts ~26mn
|
|
make-test-osx:
|
|
runs-on: macos-latest
|
|
steps:
|
|
- uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # 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
|
|
|
|
no-intrinsics-fuzztest:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # 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@755da8c3cf115ac066823e79a1e1788f8940201b # 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@755da8c3cf115ac066823e79a1e1788f8940201b # 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@755da8c3cf115ac066823e79a1e1788f8940201b # tag=v3
|
|
- name: thread sanitizer fuzztest
|
|
run: CC=clang make tsan-fuzztest
|
|
|
|
# lasts ~23mn
|
|
gcc-8-asan-ubsan-testzstd:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # 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@755da8c3cf115ac066823e79a1e1788f8940201b # 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@755da8c3cf115ac066823e79a1e1788f8940201b # 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@755da8c3cf115ac066823e79a1e1788f8940201b # 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@755da8c3cf115ac066823e79a1e1788f8940201b # 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@755da8c3cf115ac066823e79a1e1788f8940201b # 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@755da8c3cf115ac066823e79a1e1788f8940201b # 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@755da8c3cf115ac066823e79a1e1788f8940201b # tag=v3
|
|
- name: ASan + UBSan + Regression Test
|
|
run: make -j uasanregressiontest
|
|
|
|
clang-ubsan-regression:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # tag=v3
|
|
- name: clang + ASan + UBSan + Regression Test
|
|
run: CC=clang make -j uasanregressiontest
|
|
|
|
msan-regression:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # tag=v3
|
|
- name: MSan + Regression Test
|
|
run: make -j msanregressiontest
|
|
|
|
clang-msan-fuzz:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # 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@755da8c3cf115ac066823e79a1e1788f8940201b # 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@755da8c3cf115ac066823e79a1e1788f8940201b # 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@755da8c3cf115ac066823e79a1e1788f8940201b # 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-2019
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include: [
|
|
{ compiler: clang, platform: x64, action: build, script: "MOREFLAGS='--target=x86_64-w64-mingw32 -Werror -Wconversion -Wno-sign-conversion -Wno-unused-command-line-argument -Wno-implicit-int-float-conversion' make -j allzstd V=1"},
|
|
{ compiler: gcc, platform: x64, action: test, script: ""},
|
|
]
|
|
steps:
|
|
- uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # tag=v3
|
|
- name: Mingw long test
|
|
run: |
|
|
$env:PATH_ORIGINAL = $env:PATH
|
|
$env:PATH_MINGW32 = "C:\msys64\mingw32\bin"
|
|
$env:PATH_MINGW64 = "C:\msys64\mingw64\bin"
|
|
COPY C:\msys64\usr\bin\make.exe C:\msys64\mingw32\bin\make.exe
|
|
COPY C:\msys64\usr\bin\make.exe C:\msys64\mingw64\bin\make.exe
|
|
IF ("${{matrix.platform}}" -eq "x64")
|
|
{
|
|
$env:PATH = $env:PATH_MINGW64 + ";" + $env:PATH_ORIGINAL
|
|
}
|
|
ELSEIF ("${{matrix.platform}}" -eq "x86")
|
|
{
|
|
$env:PATH = $env:PATH_MINGW32 + ";" + $env:PATH_ORIGINAL
|
|
}
|
|
IF ("${{matrix.action}}" -eq "build")
|
|
{
|
|
make -v
|
|
sh -c "${{matrix.compiler}} -v"
|
|
ECHO "Building zlib to static link"
|
|
$env:CC = "${{matrix.compiler}}"
|
|
sh -c "cd .. && git clone --depth 1 --branch v1.2.11 https://github.com/madler/zlib"
|
|
sh -c "cd ../zlib && make -f win32/Makefile.gcc libz.a"
|
|
ECHO "Building zstd"
|
|
$env:CPPFLAGS = "-I../../zlib"
|
|
$env:LDFLAGS = "../../zlib/libz.a"
|
|
sh -c "${{matrix.script}}"
|
|
}
|
|
ELSEIF ("${{matrix.action}}" -eq "test")
|
|
{
|
|
ECHO "Testing ${{matrix.compiler}} ${{matrix.platform}}"
|
|
$env:CC = "gcc"
|
|
$env:CXX = "g++"
|
|
MKDIR build\cmake\build
|
|
CD build\cmake\build
|
|
$env:FUZZERTEST = "-T2mn"
|
|
$env:ZSTREAM_TESTTIME = "-T2mn"
|
|
cmake -G "Visual Studio 14 2015 Win64" ..
|
|
cd ..\..\..
|
|
make clean
|
|
}
|
|
|
|
# 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@v3
|
|
if: failure() && steps.build.outcome == 'success'
|
|
with:
|
|
name: ${{ matrix.sanitizer }}-artifacts
|
|
path: ./out/artifacts
|