Fuzz Tests #410
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Runs fuzzing nightly. | |
name: Fuzz Tests | |
on: | |
workflow_dispatch: # allow running workflow manually | |
schedule: | |
- cron: '0 3 * * *' | |
pull_request: | |
branches: [master] | |
paths: | |
- "test/fuzz/**/*.go" | |
jobs: | |
fuzz-nightly-test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-go@v3 | |
with: | |
go-version: '1.18' | |
- uses: actions/checkout@v3 | |
- name: Install go-fuzz | |
working-directory: test/fuzz | |
run: go install github.com/dvyukov/go-fuzz/go-fuzz@latest github.com/dvyukov/go-fuzz/go-fuzz-build@latest | |
- name: Fuzz mempool | |
working-directory: test/fuzz | |
run: timeout -s SIGINT --preserve-status 10m make fuzz-mempool | |
continue-on-error: true | |
- name: Fuzz p2p-sc | |
working-directory: test/fuzz | |
run: timeout -s SIGINT --preserve-status 10m make fuzz-p2p-sc | |
continue-on-error: true | |
- name: Fuzz p2p-rpc-server | |
working-directory: test/fuzz | |
run: timeout -s SIGINT --preserve-status 10m make fuzz-rpc-server | |
continue-on-error: true | |
- name: Archive crashers | |
uses: actions/upload-artifact@v3 | |
with: | |
name: crashers | |
path: test/fuzz/**/crashers | |
retention-days: 3 | |
- name: Archive suppressions | |
uses: actions/upload-artifact@v3 | |
with: | |
name: suppressions | |
path: test/fuzz/**/suppressions | |
retention-days: 3 | |
- name: Set crashers count | |
working-directory: test/fuzz | |
run: echo "::set-output name=count::$(find . -type d -name 'crashers' | xargs -I % sh -c 'ls % | wc -l' | awk '{total += $1} END {print total}')" | |
id: set-crashers-count | |
outputs: | |
crashers-count: ${{ steps.set-crashers-count.outputs.count }} | |
fuzz-nightly-fail: | |
needs: fuzz-nightly-test | |
if: ${{ needs.fuzz-nightly-test.outputs.crashers-count != 0 }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Notify Slack if any crashers | |
uses: rtCamp/action-slack-notify@12e36fc18b0689399306c2e0b3e0f2978b7f1ee7 | |
env: | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} | |
SLACK_CHANNEL: tendermint-internal | |
SLACK_USERNAME: Nightly Fuzz Tests | |
SLACK_ICON_EMOJI: ':firecracker:' | |
SLACK_COLOR: danger | |
SLACK_MESSAGE: Crashers found in Nightly Fuzz tests | |
SLACK_FOOTER: '' |