1name: dev-long-tests 2# Tests longer than 10mn 3 4concurrency: 5 group: long-${{ github.ref }} 6 cancel-in-progress: true 7 8on: 9 pull_request: 10 branches: [ dev, release, actionsTest ] 11 12jobs: 13 make-all: 14 runs-on: ubuntu-latest 15 steps: 16 - uses: actions/checkout@v2 17 - name: make all 18 run: make all 19 20 # lasts ~24mn 21 make-test: 22 runs-on: ubuntu-latest 23 env: 24 DEVNULLRIGHTS: 1 25 READFROMBLOCKDEVICE: 1 26 steps: 27 - uses: actions/checkout@v2 28 - name: make test 29 run: make test 30 31 # lasts ~26mn 32 make-test-osx: 33 runs-on: macos-latest 34 steps: 35 - uses: actions/checkout@v2 36 - name: OS-X test 37 run: make test # make -c lib all doesn't work because of the fact that it's not a tty 38 39 no-intrinsics-fuzztest: 40 runs-on: ubuntu-latest 41 steps: 42 - uses: actions/checkout@v2 43 - name: no intrinsics fuzztest 44 run: MOREFLAGS="-DZSTD_NO_INTRINSICS" make -C tests fuzztest 45 46 tsan-zstreamtest: 47 runs-on: ubuntu-latest 48 steps: 49 - uses: actions/checkout@v2 50 - name: thread sanitizer zstreamtest 51 run: CC=clang ZSTREAM_TESTTIME=-T3mn make tsan-test-zstream 52 53 # lasts ~15mn 54 tsan-fuzztest: 55 runs-on: ubuntu-latest 56 steps: 57 - uses: actions/checkout@v2 58 - name: thread sanitizer fuzztest 59 run: CC=clang make tsan-fuzztest 60 61 # lasts ~23mn 62 gcc-8-asan-ubsan-testzstd: 63 runs-on: ubuntu-latest 64 steps: 65 - uses: actions/checkout@v2 66 - name: gcc-8 + ASan + UBSan + Test Zstd 67 run: | 68 sudo apt-get -qqq update 69 make gcc8install 70 CC=gcc-8 make -j uasan-test-zstd </dev/null V=1 71 72 gcc-asan-ubsan-testzstd-32bit: 73 runs-on: ubuntu-latest 74 steps: 75 - uses: actions/checkout@v2 76 - name: ASan + UBSan + Test Zstd, 32bit mode 77 run: | 78 make libc6install 79 make -j uasan-test-zstd32 V=1 80 81 # Note : external libraries must be turned off when using MSAN tests, 82 # because they are not msan-instrumented, 83 # so any data coming from these libraries is always considered "uninitialized" 84 85 gcc-8-asan-ubsan-fuzz: 86 runs-on: ubuntu-latest 87 steps: 88 - uses: actions/checkout@v2 89 - name: gcc-8 + ASan + UBSan + Fuzz Test 90 run: | 91 make gcc8install 92 CC=gcc-8 FUZZER_FLAGS="--long-tests" make clean uasan-fuzztest 93 94 gcc-asan-ubsan-fuzz32: 95 runs-on: ubuntu-latest 96 steps: 97 - uses: actions/checkout@v2 98 - name: ASan + UBSan + Fuzz Test 32bit 99 run: | 100 make libc6install 101 CFLAGS="-O3 -m32" FUZZER_FLAGS="--long-tests" make uasan-fuzztest 102 103 asan-ubsan-regression: 104 runs-on: ubuntu-latest 105 steps: 106 - uses: actions/checkout@v2 107 - name: ASan + UBSan + Regression Test 108 run: make -j uasanregressiontest 109 110 msan-regression: 111 runs-on: ubuntu-latest 112 steps: 113 - uses: actions/checkout@v2 114 - name: MSan + Regression Test 115 run: make -j msanregressiontest 116 117 clang-msan-fuzz: 118 runs-on: ubuntu-latest 119 steps: 120 - uses: actions/checkout@v2 121 - name: clang + MSan + Fuzz Test 122 run: | 123 sudo apt-get -qqq update 124 sudo apt-get install clang 125 CC=clang FUZZER_FLAGS="--long-tests" make clean msan-fuzztest 126 127 # lasts ~24mn 128 clang-msan-testzstd: 129 runs-on: ubuntu-latest 130 steps: 131 - uses: actions/checkout@v2 132 - name: clang + MSan + Test Zstd 133 run: | 134 sudo apt-get update 135 sudo apt-get install clang 136 CC=clang make msan-test-zstd HAVE_ZLIB=0 HAVE_LZ4=0 HAVE_LZMA=0 V=1 137 138 armfuzz: 139 runs-on: ubuntu-latest 140 steps: 141 - uses: actions/checkout@v2 142 - name: Qemu ARM emulation + Fuzz Test 143 run: | 144 sudo apt-get -qqq update 145 make arminstall 146 make armfuzz 147 148 valgrind-fuzz-test: 149 runs-on: ubuntu-latest 150 steps: 151 - uses: actions/checkout@v2 152 - name: valgrind + fuzz test stack mode # ~ 7mn 153 shell: 'script -q -e -c "bash {0}"' 154 run: | 155 make valgrindinstall 156 make -C tests valgrindTest 157 make clean 158 make -C tests test-fuzzer-stackmode 159 160 mingw-long-test: 161 runs-on: windows-latest 162 strategy: 163 fail-fast: false 164 matrix: 165 include: [ 166 { 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"}, 167 { compiler: gcc, platform: x64, action: test, script: ""}, 168 ] 169 steps: 170 - uses: actions/checkout@v2 171 - name: Mingw long test 172 run: | 173 $env:PATH_ORIGINAL = $env:PATH 174 $env:PATH_MINGW32 = "C:\msys64\mingw32\bin" 175 $env:PATH_MINGW64 = "C:\msys64\mingw64\bin" 176 COPY C:\msys64\usr\bin\make.exe C:\msys64\mingw32\bin\make.exe 177 COPY C:\msys64\usr\bin\make.exe C:\msys64\mingw64\bin\make.exe 178 IF ("${{matrix.platform}}" -eq "x64") 179 { 180 $env:PATH = $env:PATH_MINGW64 + ";" + $env:PATH_ORIGINAL 181 } 182 ELSEIF ("${{matrix.platform}}" -eq "x86") 183 { 184 $env:PATH = $env:PATH_MINGW32 + ";" + $env:PATH_ORIGINAL 185 } 186 IF ("${{matrix.action}}" -eq "build") 187 { 188 make -v 189 sh -c "${{matrix.compiler}} -v" 190 ECHO "Building zlib to static link" 191 $env:CC = "${{matrix.compiler}}" 192 sh -c "cd .. && git clone --depth 1 --branch v1.2.11 https://github.com/madler/zlib" 193 sh -c "cd ../zlib && make -f win32/Makefile.gcc libz.a" 194 ECHO "Building zstd" 195 $env:CPPFLAGS = "-I../../zlib" 196 $env:LDFLAGS = "../../zlib/libz.a" 197 sh -c "${{matrix.script}}" 198 } 199 ELSEIF ("${{matrix.action}}" -eq "test") 200 { 201 ECHO "Testing ${{matrix.compiler}} ${{matrix.platform}}" 202 $env:CC = "gcc" 203 $env:CXX = "g++" 204 MKDIR build\cmake\build 205 CD build\cmake\build 206 $env:FUZZERTEST = "-T2mn" 207 $env:ZSTREAM_TESTTIME = "-T2mn" 208 cmake -G "Visual Studio 14 2015 Win64" .. 209 cd ..\..\.. 210 make clean 211 } 212 213 # lasts ~20mn 214 oss-fuzz: 215 runs-on: ubuntu-latest 216 strategy: 217 fail-fast: false 218 matrix: 219 sanitizer: [address, undefined, memory] 220 steps: 221 - name: Build Fuzzers (${{ matrix.sanitizer }}) 222 id: build 223 uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master 224 with: 225 oss-fuzz-project-name: 'zstd' 226 dry-run: false 227 sanitizer: ${{ matrix.sanitizer }} 228 - name: Run Fuzzers (${{ matrix.sanitizer }}) 229 uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master 230 with: 231 oss-fuzz-project-name: 'zstd' 232 fuzz-seconds: 600 233 dry-run: false 234 sanitizer: ${{ matrix.sanitizer }} 235 - name: Upload Crash 236 uses: actions/upload-artifact@v1 237 if: failure() && steps.build.outcome == 'success' 238 with: 239 name: ${{ matrix.sanitizer }}-artifacts 240 path: ./out/artifacts 241