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 12permissions: read-all 13 14jobs: 15 make-all: 16 runs-on: ubuntu-latest 17 steps: 18 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 19 - name: make all 20 run: make all 21 22 # lasts ~24mn 23 make-test: 24 runs-on: ubuntu-latest 25 env: 26 DEVNULLRIGHTS: 1 27 READFROMBLOCKDEVICE: 1 28 steps: 29 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 30 - name: make test 31 run: make test 32 33 # lasts ~26mn 34 make-test-osx: 35 runs-on: macos-latest 36 steps: 37 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 38 - name: OS-X test 39 run: make test # make -c lib all doesn't work because of the fact that it's not a tty 40 41 # lasts ~24mn 42 make-test-32bit: 43 runs-on: ubuntu-latest 44 env: 45 DEVNULLRIGHTS: 1 46 READFROMBLOCKDEVICE: 1 47 steps: 48 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 49 - name: make test 50 run: | 51 sudo apt-get -qqq update 52 make libc6install 53 CFLAGS="-m32" make test 54 55 no-intrinsics-fuzztest: 56 runs-on: ubuntu-latest 57 steps: 58 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 59 - name: no intrinsics fuzztest 60 run: MOREFLAGS="-DZSTD_NO_INTRINSICS" make -C tests fuzztest 61 62 tsan-zstreamtest: 63 runs-on: ubuntu-20.04 64 steps: 65 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 66 - name: thread sanitizer zstreamtest 67 run: CC=clang ZSTREAM_TESTTIME=-T3mn make tsan-test-zstream 68 69 ubsan-zstreamtest: 70 runs-on: ubuntu-20.04 71 steps: 72 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 73 - name: undefined behavior sanitizer zstreamtest 74 run: CC=clang make uasan-test-zstream 75 76 # lasts ~15mn 77 tsan-fuzztest: 78 runs-on: ubuntu-20.04 79 steps: 80 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 81 - name: thread sanitizer fuzztest 82 run: CC=clang make tsan-fuzztest 83 84 85 big-tests-zstreamtest32: 86 runs-on: ubuntu-latest 87 steps: 88 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 89 - name: zstream tests in 32bit mode, with big tests 90 run: | 91 sudo apt-get -qqq update 92 make libc6install 93 CC=clang make -C tests test-zstream32 FUZZER_FLAGS="--big-tests" 94 95 # lasts ~23mn 96 gcc-8-asan-ubsan-testzstd: 97 runs-on: ubuntu-20.04 98 steps: 99 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 100 - name: gcc-8 + ASan + UBSan + Test Zstd 101 # See https://askubuntu.com/a/1428822 102 run: | 103 echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu focal main universe" | sudo tee -a /etc/apt/sources.list 104 sudo apt-get -qqq update 105 make gcc8install 106 CC=gcc-8 make -j uasan-test-zstd </dev/null V=1 107 108 clang-asan-ubsan-testzstd: 109 runs-on: ubuntu-20.04 110 steps: 111 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 112 - name: clang + ASan + UBSan + Test Zstd 113 run: CC=clang make -j uasan-test-zstd </dev/null V=1 114 115 gcc-asan-ubsan-testzstd-32bit: 116 runs-on: ubuntu-20.04 117 steps: 118 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 119 - name: ASan + UBSan + Test Zstd, 32bit mode 120 run: | 121 sudo apt-get -qqq update 122 make libc6install 123 make -j uasan-test-zstd32 V=1 124 125 # Note : external libraries must be turned off when using MSAN tests, 126 # because they are not msan-instrumented, 127 # so any data coming from these libraries is always considered "uninitialized" 128 129 gcc-8-asan-ubsan-fuzz: 130 runs-on: ubuntu-20.04 131 steps: 132 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 133 - name: gcc-8 + ASan + UBSan + Fuzz Test 134 # See https://askubuntu.com/a/1428822 135 run: | 136 echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu focal main universe" | sudo tee -a /etc/apt/sources.list 137 sudo apt-get -qqq update 138 make gcc8install 139 CC=gcc-8 FUZZER_FLAGS="--long-tests" make clean uasan-fuzztest 140 141 clang-asan-ubsan-fuzz: 142 runs-on: ubuntu-20.04 143 steps: 144 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 145 - name: clang + ASan + UBSan + Fuzz Test 146 run: CC=clang FUZZER_FLAGS="--long-tests" make clean uasan-fuzztest 147 148 gcc-asan-ubsan-fuzz32: 149 runs-on: ubuntu-20.04 150 steps: 151 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 152 - name: ASan + UBSan + Fuzz Test 32bit 153 run: | 154 sudo apt-get -qqq update 155 make libc6install 156 CFLAGS="-O3 -m32" FUZZER_FLAGS="--long-tests" make uasan-fuzztest 157 158 clang-asan-ubsan-fuzz32: 159 runs-on: ubuntu-20.04 160 steps: 161 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 162 - name: clang + ASan + UBSan + Fuzz Test 32bit 163 run: | 164 sudo apt-get -qqq update 165 make libc6install 166 CC=clang CFLAGS="-O3 -m32" FUZZER_FLAGS="--long-tests" make uasan-fuzztest 167 168 asan-ubsan-regression: 169 runs-on: ubuntu-20.04 170 steps: 171 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 172 - name: ASan + UBSan + Regression Test 173 run: make -j uasanregressiontest 174 175 clang-ubsan-regression: 176 runs-on: ubuntu-20.04 177 steps: 178 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 179 - name: clang + ASan + UBSan + Regression Test 180 run: CC=clang make -j uasanregressiontest 181 182 msan-regression: 183 runs-on: ubuntu-20.04 184 steps: 185 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 186 - name: MSan + Regression Test 187 run: make -j msanregressiontest 188 189 clang-msan-fuzz-unoptimized: 190 runs-on: ubuntu-20.04 191 steps: 192 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 193 - name: clang + MSan + Fuzz Test 194 run: | 195 sudo apt-get -qqq update 196 sudo apt-get install clang 197 CC=clang MOREFLAGS="-O0" make clean msan-fuzztest 198 199 clang-msan-fuzz: 200 runs-on: ubuntu-20.04 201 steps: 202 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 203 - name: clang + MSan + Fuzz Test 204 run: | 205 sudo apt-get -qqq update 206 sudo apt-get install clang 207 CC=clang FUZZER_FLAGS="--long-tests" make clean msan-fuzztest 208 209 # lasts ~24mn 210 clang-msan-testzstd: 211 runs-on: ubuntu-20.04 212 steps: 213 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 214 - name: clang + MSan + Test Zstd 215 run: | 216 sudo apt-get update 217 sudo apt-get install clang 218 CC=clang make msan-test-zstd HAVE_ZLIB=0 HAVE_LZ4=0 HAVE_LZMA=0 V=1 219 220 armfuzz: 221 runs-on: ubuntu-latest 222 steps: 223 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 224 - name: Qemu ARM emulation + Fuzz Test 225 run: | 226 sudo apt-get -qqq update 227 make arminstall 228 make armfuzz 229 230 valgrind-fuzz-test: 231 runs-on: ubuntu-latest 232 steps: 233 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 234 - name: valgrind + fuzz test stack mode # ~ 7mn 235 shell: 'script -q -e -c "bash {0}"' 236 run: | 237 sudo apt-get -qqq update 238 make valgrindinstall 239 make -C tests test-valgrind 240 make clean 241 make -C tests test-fuzzer-stackmode 242 243 mingw-long-test: 244 runs-on: windows-latest 245 defaults: 246 run: 247 shell: msys2 {0} 248 steps: 249 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 250 - uses: msys2/setup-msys2@cc11e9188b693c2b100158c3322424c4cc1dadea # tag=v2.22.0 251 with: 252 msystem: MINGW64 253 install: make 254 update: true 255 # Based on https://ariya.io/2020/07/on-github-actions-with-msys2 256 - name: install mingw gcc 257 run: pacman --noconfirm -S gcc 258 - name: MINGW64 gcc fuzztest 259 run: | 260 export CC="gcc" 261 export CXX="g++" 262 export FUZZERTEST="-T2mn" 263 export ZSTREAM_TESTTIME="-T2mn" 264 echo "Testing $CC $CXX MINGW64" 265 make -v 266 $CC --version 267 $CXX --version 268 make -C tests fuzztest 269 270 # lasts ~20mn 271 oss-fuzz: 272 runs-on: ubuntu-20.04 273 strategy: 274 fail-fast: false 275 matrix: 276 sanitizer: [address, undefined, memory] 277 steps: 278 - name: Build Fuzzers (${{ matrix.sanitizer }}) 279 id: build 280 uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master 281 with: 282 oss-fuzz-project-name: 'zstd' 283 dry-run: false 284 sanitizer: ${{ matrix.sanitizer }} 285 - name: Run Fuzzers (${{ matrix.sanitizer }}) 286 uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master 287 with: 288 oss-fuzz-project-name: 'zstd' 289 fuzz-seconds: 600 290 dry-run: false 291 sanitizer: ${{ matrix.sanitizer }} 292 - name: Upload Crash 293 uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # tag=v4.3.1 294 if: failure() && steps.build.outcome == 'success' 295 with: 296 name: ${{ matrix.sanitizer }}-artifacts 297 path: ./out/artifacts 298