From 615b562b64f2d392975a697fa36748f5c2759f08 Mon Sep 17 00:00:00 2001 From: tommady Date: Tue, 31 Oct 2023 16:08:40 +0800 Subject: [PATCH] github action: split the run of the fuzzers (#5444) * fix-5443 by using strategy --- .github/workflows/fuzzing.yml | 74 ++++++++++++++++++++--------------- 1 file changed, 42 insertions(+), 32 deletions(-) diff --git a/.github/workflows/fuzzing.yml b/.github/workflows/fuzzing.yml index 311d6a0d7..e7a9cb1e3 100644 --- a/.github/workflows/fuzzing.yml +++ b/.github/workflows/fuzzing.yml @@ -13,52 +13,62 @@ concurrency: cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} jobs: - fuzz: - name: Run the fuzzers + fuzz-build: + name: Build the fuzzers runs-on: ubuntu-latest - env: - RUN_FOR: 60 steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@nightly - name: Install `cargo-fuzz` run: cargo install cargo-fuzz - uses: Swatinem/rust-cache@v2 + with: + shared-key: "cargo-fuzz-cache-key" + cache-directories: "fuzz/target" + - name: Run `cargo-fuzz build` + run: cargo +nightly fuzz build + + fuzz-run: + needs: fuzz-build + name: Run the fuzzers + runs-on: ubuntu-latest + env: + RUN_FOR: 60 + strategy: + matrix: + test-target: + [ + fuzz_date, + fuzz_test, + fuzz_expr, + fuzz_parse_glob, + fuzz_parse_size, + fuzz_parse_time, + # adding more fuzz tests here. + # e.g. fuzz_test_a, + ] + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@nightly + - name: Install `cargo-fuzz` + run: cargo install cargo-fuzz + - uses: Swatinem/rust-cache@v2 + with: + shared-key: "cargo-fuzz-cache-key" + cache-directories: "fuzz/target" - name: Restore Cached Corpus uses: actions/cache/restore@v3 with: - key: corpus-cache + key: corpus-cache-${{ matrix.test-target }} path: | - fuzz/corpus - - name: Run fuzz_date for XX seconds - continue-on-error: true + fuzz/corpus/${{ matrix.test-target }} + - name: Run ${{ matrix.test-target }} for XX seconds shell: bash run: | - cargo +nightly fuzz run fuzz_date -- -max_total_time=${{ env.RUN_FOR }} -detect_leaks=0 - - name: Run fuzz_test for XX seconds - shell: bash - run: | - cargo +nightly fuzz run fuzz_test -- -max_total_time=${{ env.RUN_FOR }} -detect_leaks=0 - - name: Run fuzz_expr for XX seconds - continue-on-error: true - shell: bash - run: | - cargo +nightly fuzz run fuzz_expr -- -max_total_time=${{ env.RUN_FOR }} -detect_leaks=0 - - name: Run fuzz_parse_glob for XX seconds - shell: bash - run: | - cargo +nightly fuzz run fuzz_parse_glob -- -max_total_time=${{ env.RUN_FOR }} -detect_leaks=0 - - name: Run fuzz_parse_size for XX seconds - shell: bash - run: | - cargo +nightly fuzz run fuzz_parse_size -- -max_total_time=${{ env.RUN_FOR }} -detect_leaks=0 - - name: Run fuzz_parse_time for XX seconds - shell: bash - run: | - cargo +nightly fuzz run fuzz_parse_time -- -max_total_time=${{ env.RUN_FOR }} -detect_leaks=0 + cargo +nightly fuzz run ${{ matrix.test-target }} -- -max_total_time=${{ env.RUN_FOR }} -detect_leaks=0 - name: Save Corpus Cache uses: actions/cache/save@v3 with: - key: corpus-cache + key: corpus-cache-${{ matrix.test-target }} path: | - fuzz/corpus + fuzz/corpus/${{ matrix.test-target }}