648db22b |
1 | name: dev-long-tests |
2 | # Tests longer than 10mn |
3 | |
4 | concurrency: |
5 | group: long-${{ github.ref }} |
6 | cancel-in-progress: true |
7 | |
8 | on: |
9 | pull_request: |
10 | branches: [ dev, release, actionsTest ] |
11 | |
12 | permissions: read-all |
13 | |
14 | jobs: |
15 | make-all: |
16 | runs-on: ubuntu-latest |
17 | steps: |
f535537f |
18 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
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: |
f535537f |
29 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
30 | - name: make test |
31 | run: make test |
32 | |
33 | # lasts ~26mn |
34 | make-test-osx: |
35 | runs-on: macos-latest |
36 | steps: |
f535537f |
37 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
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: |
f535537f |
48 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
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: |
f535537f |
58 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
59 | - name: no intrinsics fuzztest |
60 | run: MOREFLAGS="-DZSTD_NO_INTRINSICS" make -C tests fuzztest |
61 | |
62 | tsan-zstreamtest: |
f535537f |
63 | runs-on: ubuntu-20.04 |
648db22b |
64 | steps: |
f535537f |
65 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
66 | - name: thread sanitizer zstreamtest |
67 | run: CC=clang ZSTREAM_TESTTIME=-T3mn make tsan-test-zstream |
68 | |
69 | ubsan-zstreamtest: |
f535537f |
70 | runs-on: ubuntu-20.04 |
648db22b |
71 | steps: |
f535537f |
72 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
73 | - name: undefined behavior sanitizer zstreamtest |
74 | run: CC=clang make uasan-test-zstream |
75 | |
76 | # lasts ~15mn |
77 | tsan-fuzztest: |
f535537f |
78 | runs-on: ubuntu-20.04 |
648db22b |
79 | steps: |
f535537f |
80 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
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: |
f535537f |
88 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
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: |
f535537f |
97 | runs-on: ubuntu-20.04 |
648db22b |
98 | steps: |
f535537f |
99 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
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: |
f535537f |
109 | runs-on: ubuntu-20.04 |
648db22b |
110 | steps: |
f535537f |
111 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
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: |
f535537f |
116 | runs-on: ubuntu-20.04 |
648db22b |
117 | steps: |
f535537f |
118 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
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: |
f535537f |
130 | runs-on: ubuntu-20.04 |
648db22b |
131 | steps: |
f535537f |
132 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
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: |
f535537f |
142 | runs-on: ubuntu-20.04 |
648db22b |
143 | steps: |
f535537f |
144 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
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: |
f535537f |
149 | runs-on: ubuntu-20.04 |
648db22b |
150 | steps: |
f535537f |
151 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
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: |
f535537f |
159 | runs-on: ubuntu-20.04 |
648db22b |
160 | steps: |
f535537f |
161 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
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: |
f535537f |
169 | runs-on: ubuntu-20.04 |
648db22b |
170 | steps: |
f535537f |
171 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
172 | - name: ASan + UBSan + Regression Test |
173 | run: make -j uasanregressiontest |
174 | |
175 | clang-ubsan-regression: |
f535537f |
176 | runs-on: ubuntu-20.04 |
648db22b |
177 | steps: |
f535537f |
178 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
179 | - name: clang + ASan + UBSan + Regression Test |
180 | run: CC=clang make -j uasanregressiontest |
181 | |
182 | msan-regression: |
f535537f |
183 | runs-on: ubuntu-20.04 |
648db22b |
184 | steps: |
f535537f |
185 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
186 | - name: MSan + Regression Test |
187 | run: make -j msanregressiontest |
188 | |
189 | clang-msan-fuzz-unoptimized: |
f535537f |
190 | runs-on: ubuntu-20.04 |
648db22b |
191 | steps: |
f535537f |
192 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
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: |
f535537f |
200 | runs-on: ubuntu-20.04 |
648db22b |
201 | steps: |
f535537f |
202 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
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: |
f535537f |
211 | runs-on: ubuntu-20.04 |
648db22b |
212 | steps: |
f535537f |
213 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
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: |
f535537f |
223 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
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: |
f535537f |
233 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
648db22b |
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: |
f535537f |
249 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 |
250 | - uses: msys2/setup-msys2@cc11e9188b693c2b100158c3322424c4cc1dadea # tag=v2.22.0 |
648db22b |
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: |
f535537f |
272 | runs-on: ubuntu-20.04 |
648db22b |
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 |
f535537f |
293 | uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # tag=v4.3.1 |
648db22b |
294 | if: failure() && steps.build.outcome == 'success' |
295 | with: |
296 | name: ${{ matrix.sanitizer }}-artifacts |
297 | path: ./out/artifacts |