✨ Introduce AFL support #22
Workflow file for this run
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
name: Test Fuzz Tests | |
on: | |
workflow_dispatch: | |
pull_request: # Workflow can be triggered by either a manual dispatch or a pull request | |
env: | |
HONGGFUZZ_VERSION: 0.5.56 # Honggfuzz version to install in the environment | |
AFL_VERSION: 0.15.10 # AFL version to install in the environment | |
jobs: | |
Fuzz-Tests: | |
name: Fuzz Tests | |
runs-on: ubuntu-20.04 | |
steps: | |
- run: echo "Starting Fuzz Tests" | |
simple-cpi-6: | |
name: Fuzz Tests (simple-cpi-6) | |
needs: Fuzz-Tests | |
# Runs on an Ubuntu 20.04 runner | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
name: Checkout Repository # Checkout the repository to get access to the project files | |
# https://github.com/Swatinem/rust-cache | |
- name: Cache Rust and its Packages | |
# Caches Rust dependencies to avoid redundant downloads and speed up builds | |
uses: Swatinem/rust-cache@v2 | |
with: | |
prefix-key: "fuzz" | |
shared-key: "trident-rust-cache" # Using a shared cache key for multiple jobs | |
- name: Setup Rust Environment | |
# Sets up the Rust environment (e.g., installing Rust and required components) | |
uses: ./.github/actions/setup-rust/ | |
- name: Install Trident | |
# Sets up the Trident | |
uses: ./.github/actions/setup-trident/ | |
- name: Setup AFL | |
# Sets up AFL, a fuzzing tool that will be used by Trident | |
uses: ./.github/actions/setup-afl/ | |
- name: Setup Honggfuzz | |
# Sets up Honggfuzz, a fuzzing tool that will be used by Trident | |
uses: ./.github/actions/setup-honggfuzz/ | |
# Cache the target folder, which stores the build artifacts generated by the fuzzing process | |
- name: Cache Target Folder | |
uses: actions/cache@v3 | |
with: | |
path: examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/fuzzing/honggfuzz/hfuzz_target # Cache the folder where build artifacts are stored | |
key: target-${{ runner.os }}-simple-cpi-6 # Unique key for caching based on OS and test | |
# Run the fuzzing test using Trident in the simple-cpi-6 directory | |
- name: Test Fuzz | |
working-directory: examples/fuzz-tests/simple-cpi-6 # Set the working directory for the fuzzing test | |
run: trident fuzz run-hfuzz fuzz_0 # Run the fuzz test with trident | |
arbitrary-limit-inputs-5: | |
name: Fuzz Tests (arbitrary-limit-inputs-5) | |
needs: Fuzz-Tests | |
# Runs on an Ubuntu 20.04 runner for a different fuzz test | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
name: Checkout Repository # Checkout the repository | |
# https://github.com/Swatinem/rust-cache | |
- name: Cache Rust and its Packages | |
# Caches Rust dependencies to avoid redundant downloads and speed up builds | |
uses: Swatinem/rust-cache@v2 | |
with: | |
prefix-key: "fuzz" # Using a locally shared cache key | |
shared-key: "trident-rust-cache" # Using a shared cache key for multiple jobs | |
- name: Setup Rust Environment | |
# Sets up the Rust environment (e.g., installing Rust and required components) | |
uses: ./.github/actions/setup-rust/ | |
- name: Install Trident | |
# Sets up the Trident | |
uses: ./.github/actions/setup-trident/ | |
- name: Setup AFL | |
# Sets up AFL, a fuzzing tool that will be used by Trident | |
uses: ./.github/actions/setup-afl/ | |
- name: Setup Honggfuzz | |
# Sets up Honggfuzz, a fuzzing tool that will be used by Trident | |
uses: ./.github/actions/setup-honggfuzz/ | |
# Cache the target folder, which stores the build artifacts generated by the fuzzing process | |
- name: Cache Target Folder | |
uses: actions/cache@v3 | |
with: | |
path: examples/fuzz-tests/arbitrary-limit-inputs-5/trident-tests/fuzz_tests/fuzzing/honggfuzz/hfuzz_target # Cache the folder where build artifacts are stored | |
key: target-${{ runner.os }}-arbitrary-limit-inputs-5 # Unique key for caching based on OS and test | |
# Run the fuzzing test using Trident in the arbitrary-limit-inputs-5 directory | |
- name: Test Fuzz | |
working-directory: examples/fuzz-tests/arbitrary-limit-inputs-5 # Set the working directory for the fuzzing test | |
run: trident fuzz run-hfuzz fuzz_0 # Run the fuzz test with trident | |
cpi-metaplex-7: | |
name: Fuzz Tests (cpi-metaplex-7) | |
needs: Fuzz-Tests | |
# Runs on an Ubuntu 20.04 runner for a different fuzz test | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
name: Checkout Repository # Checkout the repository | |
# https://github.com/Swatinem/rust-cache | |
- name: Cache Rust and its Packages | |
# Caches Rust dependencies to avoid redundant downloads and speed up builds | |
uses: Swatinem/rust-cache@v2 | |
with: | |
prefix-key: "fuzz" # Using a locally shared cache key | |
shared-key: "trident-rust-cache" # Using a shared cache key for multiple jobs | |
- name: Setup Rust Environment | |
# Sets up the Rust environment (e.g., installing Rust and required components) | |
uses: ./.github/actions/setup-rust/ | |
- name: Install Trident | |
# Sets up the Trident | |
uses: ./.github/actions/setup-trident/ | |
- name: Setup AFL | |
# Sets up AFL, a fuzzing tool that will be used by Trident | |
uses: ./.github/actions/setup-afl/ | |
- name: Setup Honggfuzz | |
# Sets up Honggfuzz, a fuzzing tool that will be used by Trident | |
uses: ./.github/actions/setup-honggfuzz/ | |
# Cache the target folder, which stores the build artifacts generated by the fuzzing process | |
- name: Cache Target Folder | |
uses: actions/cache@v3 | |
with: | |
path: examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/fuzzing/honggfuzz/hfuzz_target # Cache the folder where build artifacts are stored | |
key: target-${{ runner.os }}-cpi-metaplex-7 # Unique key for caching based on OS and test | |
# Run the fuzzing test using Trident in the cpi-metaplex-7 directory | |
- name: Test Fuzz | |
working-directory: examples/fuzz-tests/cpi-metaplex-7 # Set the working directory for the fuzzing test | |
run: trident fuzz run-hfuzz fuzz_0 # Run the fuzz test with trident | |
checks: | |
name: Fuzz Tests (Checks) | |
needs: [simple-cpi-6, arbitrary-limit-inputs-5,cpi-metaplex-7] | |
runs-on: ubuntu-20.04 | |
steps: | |
- run: echo "All fuzz tests completed successfully" |