• 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
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