Fuzzer: some fixes and improvements #11924
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: CI | |
on: | |
push: | |
branches: | |
- main | |
- develop | |
- docs | |
- alphanet | |
- betanet | |
- release\/* | |
pull_request: | |
env: | |
CARGO_TERM_COLOR: always | |
concurrency: | |
group: ci-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
check-code-format: | |
name: Check code format | |
runs-on: ubuntu-latest | |
container: | |
image: rust:1.70.0-bullseye | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Check format | |
run: | | |
rustup component add rustfmt | |
bash ./check.sh | |
sbor-unit-tests: | |
name: Run SBOR unit tests | |
runs-on: ubuntu-latest | |
container: | |
image: rust:1.70.0-bullseye | |
steps: | |
- uses: actions/checkout@v3 | |
- name: setup the container | |
run: | | |
apt update && apt install -y clang llvm cmake build-essential | |
rustup component add llvm-tools | |
curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C ${CARGO_HOME:-~/.cargo}/bin | |
- name: Run tests | |
run: cargo test | |
working-directory: sbor | |
- name: Run tests (no_std) | |
run: cargo test --no-default-features --features alloc | |
working-directory: sbor | |
- name: Run derive tests | |
run: cargo test | |
working-directory: sbor-derive-common | |
sbor-integration-tests: | |
name: Run SBOR integration tests | |
runs-on: ubuntu-latest | |
container: | |
image: rust:1.70.0-bullseye | |
steps: | |
- uses: actions/checkout@v3 | |
- name: setup the container | |
run: | | |
apt update && apt install -y clang llvm cmake build-essential | |
rustup component add llvm-tools | |
curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C ${CARGO_HOME:-~/.cargo}/bin | |
- name: Run tests | |
run: cargo test | |
working-directory: sbor-tests | |
- name: Run tests (no_std) | |
run: cargo test --no-default-features --features alloc | |
working-directory: sbor-tests | |
- name: Run bench | |
run: cargo bench | |
working-directory: sbor-tests | |
scrypto-unit-tests: | |
name: Run Scrypto unit tests | |
runs-on: ubuntu-latest | |
container: | |
image: rust:1.70.0-bullseye | |
steps: | |
- uses: actions/checkout@v3 | |
- name: setup the container | |
run: | | |
apt update && apt install -y clang llvm cmake build-essential | |
rustup component add llvm-tools | |
curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C ${CARGO_HOME:-~/.cargo}/bin | |
- name: Run tests | |
run: cargo test | |
working-directory: scrypto | |
- name: Run tests (no_std) | |
run: cargo test --no-default-features --features alloc | |
working-directory: scrypto | |
- name: Run abi tests | |
run: cargo test | |
working-directory: scrypto-schema | |
- name: Run derive tests | |
run: cargo test | |
working-directory: scrypto-derive | |
scrypto-integration-tests: | |
name: Run Scrypto integration tests | |
runs-on: ubuntu-latest | |
container: | |
image: rust:1.70.0-bullseye | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.70.0 | |
- name: setup the container | |
run: | | |
apt update && apt install -y clang llvm cmake build-essential | |
rustup component add llvm-tools | |
curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C ${CARGO_HOME:-~/.cargo}/bin | |
- name: Run tests | |
run: cargo test | |
working-directory: scrypto-derive-tests | |
- name: Run tests with no_std | |
run: cargo test --no-default-features --features alloc | |
working-directory: scrypto-derive-tests | |
scrypto-examples: | |
name: Run Scrypto examples | |
runs-on: ubuntu-latest | |
container: | |
image: rust:1.70.0-bullseye | |
steps: | |
- uses: actions/checkout@v3 | |
- name: setup the container | |
run: | | |
apt update && apt install -y clang llvm cmake build-essential | |
rustup component add llvm-tools | |
rustup target add wasm32-unknown-unknown | |
- name: Build faucet | |
run: cargo build --target wasm32-unknown-unknown --release | |
working-directory: assets/blueprints/faucet | |
- name: Build radiswap | |
run: cargo build --target wasm32-unknown-unknown --release | |
working-directory: assets/blueprints/radiswap | |
- name: Build no-std | |
run: cargo build --target wasm32-unknown-unknown --release | |
working-directory: examples/no-std | |
- name: Build and test hello-world | |
run: cargo build --target wasm32-unknown-unknown --release && cargo test --release | |
working-directory: examples/hello-world | |
- name: Build and test everything | |
run: cargo build --target wasm32-unknown-unknown --release && cargo test --release | |
working-directory: examples/everything | |
scrypto-stubs: | |
name: Check Scrypto Stubs | |
runs-on: ubuntu-latest | |
container: | |
image: rust:1.70.0-bullseye | |
steps: | |
- uses: actions/checkout@v3 | |
- name: setup the container | |
run: | | |
apt update && apt install -y clang llvm cmake build-essential | |
rustup component add llvm-tools rustfmt | |
- run: ./check_stubs.sh | |
radix-engine-build: | |
name: Run Radix Engine build (RocksDB) | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest-16-cores] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.70.0 | |
- name: Install dependency | |
run: sudo apt-get -y update && sudo apt-get -y install pkg-config libfreetype6-dev libfontconfig1-dev | |
- name: Build with resource tracking | |
run: cargo build --features resource_tracker | |
- name: Build with rocksdb | |
run: cargo test -p radix-engine-profiling -p radix-engine-stores --features rocksdb --release --no-run -- --nocapture | |
- name: Build bench with rocksdb | |
run: cargo bench --features rocksdb --no-run | |
radix-engine: | |
name: Run Radix Engine tests | |
runs-on: ubuntu-latest-16-cores | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.70.0 | |
- name: Install nextest | |
uses: taiki-e/install-action@nextest | |
- name: Add wasm target | |
run: rustup target add wasm32-unknown-unknown | |
- name: Run tests | |
run: | | |
cargo nextest run \ | |
-p radix-engine-common \ | |
-p radix-engine-derive \ | |
-p radix-engine-interface \ | |
-p radix-engine \ | |
-p radix-engine-tests | |
./check_stack_usage.sh | |
radix-engine-release: | |
# Run tests in release variant. | |
# We are particularly interested with the flags: | |
# - debug-assertions, | |
# - overflow-checks | |
# which are false for release variant | |
name: Run Radix Engine tests (release) | |
runs-on: ubuntu-latest-16-cores | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.70.0 | |
- name: Install nextest | |
uses: taiki-e/install-action@nextest | |
- name: Add wasm target | |
run: rustup target add wasm32-unknown-unknown | |
- name: Run tests | |
run: | | |
cargo nextest run \ | |
--release \ | |
-p radix-engine-common \ | |
-p radix-engine-derive \ | |
-p radix-engine-interface \ | |
-p radix-engine \ | |
-p radix-engine-tests | |
radix-engine-no-std: | |
name: Run Radix Engine tests (no_std) | |
runs-on: ubuntu-latest-16-cores | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.70.0 | |
- name: Install nextest | |
uses: taiki-e/install-action@nextest | |
- name: Add wasm target | |
run: rustup target add wasm32-unknown-unknown | |
- name: Run tests | |
run: | | |
cargo nextest run \ | |
--no-default-features --features alloc \ | |
-p radix-engine-common \ | |
-p radix-engine-derive \ | |
-p radix-engine-interface \ | |
-p radix-engine \ | |
-p radix-engine-tests | |
radix-engine-wasmer: | |
name: Run Radix Engine tests (wasmer) | |
runs-on: ubuntu-latest-16-cores | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.70.0 | |
- name: Install nextest | |
uses: taiki-e/install-action@nextest | |
- name: Add wasm target | |
run: rustup target add wasm32-unknown-unknown | |
- name: Run tests | |
run: | | |
cargo nextest run \ | |
--features wasmer \ | |
-p radix-engine-common \ | |
-p radix-engine-derive \ | |
-p radix-engine-interface \ | |
-p radix-engine \ | |
-p radix-engine-tests | |
radix-engine-bench: | |
name: Run Radix Engine benchmarks | |
runs-on: ubuntu-latest | |
container: | |
image: rust:1.70.0-bullseye | |
steps: | |
- uses: actions/checkout@v3 | |
- name: setup the container | |
run: | | |
apt update && apt install -y clang llvm cmake build-essential | |
rustup component add llvm-tools | |
rustup target add wasm32-unknown-unknown | |
- name: Run bench | |
run: cargo bench | |
working-directory: radix-engine-tests | |
radix-engine-common-bench: | |
name: Run Radix Engine common benchmarks | |
runs-on: ubuntu-latest | |
container: | |
image: rust:1.70.0-bullseye | |
steps: | |
- uses: actions/checkout@v3 | |
- name: setup the container | |
run: | | |
apt update && apt install -y clang llvm cmake build-essential | |
rustup component add llvm-tools | |
rustup target add wasm32-unknown-unknown | |
- name: Run bench | |
run: cargo bench | |
working-directory: radix-engine-common | |
transaction: | |
name: Run transaction tests | |
runs-on: ubuntu-latest | |
container: | |
image: rust:1.70.0-bullseye | |
steps: | |
- uses: actions/checkout@v3 | |
- name: setup the container | |
run: | | |
apt update && apt install -y clang llvm cmake build-essential | |
rustup component add llvm-tools | |
curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C ${CARGO_HOME:-~/.cargo}/bin | |
- name: Run tests | |
run: cargo test | |
working-directory: transaction | |
transaction-scenarios: | |
name: Run transaction scenarios | |
runs-on: ubuntu-latest | |
container: | |
image: rust:1.70.0-bullseye | |
steps: | |
- uses: actions/checkout@v3 | |
- name: setup the container | |
run: | | |
apt update && apt install -y clang llvm cmake build-essential | |
rustup component add llvm-tools | |
curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C ${CARGO_HOME:-~/.cargo}/bin | |
- name: Run tests | |
run: cargo test | |
working-directory: transaction-scenarios | |
cli-resim-rtmc-rtmd: | |
name: Run CLI tests (resim & rtmc & rtmd) | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest-16-cores, windows-latest-16-cores] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.70.0 | |
- uses: radixdlt/rust-cache@allow_registry_src_caching | |
with: | |
prefix-key: "" | |
shared-key: simulator-debug-${{ runner.os }} | |
cache-directories: ~/.cargo/registry/src/**/librocksdb-sys-* | |
workspaces: simulator | |
- name: Add wasm target | |
run: rustup target add wasm32-unknown-unknown | |
- name: Set LIBCLANG_PATH # See https://github.com/rust-lang/rust-bindgen/issues/1797 | |
if: runner.os == 'Windows' | |
run: echo "LIBCLANG_PATH=$((gcm clang).source -replace "clang.exe")" >> $env:GITHUB_ENV | |
- name: Install dependencies | |
if: runner.os == 'Windows' | |
run: choco install llvm -y | |
- name: Run Unit tests | |
run: cargo test | |
working-directory: simulator | |
- name: Run tests | |
run: bash ./tests/resim.sh | |
working-directory: simulator | |
- name: Run tests | |
run: bash ./tests/manifest.sh | |
working-directory: simulator | |
cli-scrypto: | |
name: Run CLI tests (scrypto) | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest-16-cores, windows-latest-16-cores, macos-latest] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.70.0 | |
- uses: radixdlt/rust-cache@allow_registry_src_caching | |
with: | |
prefix-key: "" | |
shared-key: simulator-debug-${{ runner.os }} | |
cache-directories: ~/.cargo/registry/src/**/librocksdb-sys-* | |
workspaces: simulator | |
- name: Add wasm target | |
run: rustup target add wasm32-unknown-unknown | |
- name: Set LIBCLANG_PATH # See https://github.com/rust-lang/rust-bindgen/issues/1797 | |
if: runner.os == 'Windows' | |
run: echo "LIBCLANG_PATH=$((gcm clang).source -replace "clang.exe")" >> $env:GITHUB_ENV | |
- name: Install dependencies | |
if: runner.os == 'Windows' | |
run: choco install llvm -y | |
- name: Run tests | |
run: bash ./tests/scrypto.sh | |
working-directory: simulator | |
fuzzer-check: | |
name: Build fuzzer | |
runs-on: ubuntu-latest | |
container: | |
image: rust:1.70.0-bullseye | |
steps: | |
- uses: actions/checkout@v3 | |
- name: setup the container | |
run: | | |
apt update && apt install -y clang llvm cmake build-essential | |
rustup component add llvm-tools | |
curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C ${CARGO_HOME:-~/.cargo}/bin | |
- name: Setup AFL | |
run: bash ./install_afl.sh | |
working-directory: fuzz-tests | |
- name: Build simple fuzzer | |
run: bash ./fuzz.sh simple build | |
working-directory: fuzz-tests | |
- name: Build AFL fuzzer | |
run: bash ./fuzz.sh afl build | |
working-directory: fuzz-tests | |
- name: Check fuzzed instructions coverage | |
run: cargo nextest run test_check_fuzzed_instruction_coverage | |
working-directory: fuzz-tests | |
cargo-check: | |
name: Run cargo check | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest-16-cores] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.70.0 | |
- name: Cargo Check | |
run: cargo check --all | |
cargo-check-post-run-db-check: | |
name: Run cargo check | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest-16-cores] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.70.0 | |
- name: Cargo Check | |
run: cargo check --all --features post_run_db_check |