• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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