bench: add btree and dash benchmark #333
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: congee | |
on: | |
push: | |
branches: | |
- main | |
- tiered | |
pull_request: | |
branches: [ main ] | |
schedule: | |
- cron: '0 10 * * 3' | |
jobs: | |
check: | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
name: Setup toolchain | |
with: | |
toolchain: stable | |
override: true | |
components: rustfmt, clippy | |
- uses: actions-rs/cargo@v1 | |
name: Check | |
with: | |
command: clippy | |
args: --all-features -- -D warnings | |
fmt: | |
needs: check | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
name: Setup toolchain | |
with: | |
toolchain: stable | |
override: true | |
components: rustfmt, clippy | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: fmt | |
args: --all -- --check | |
name: Format check | |
test_sans: | |
needs: fmt | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
name: Setup toolchain | |
with: | |
toolchain: nightly | |
override: true | |
components: rust-src | |
- run: sudo apt install llvm-dev | |
- run: cargo test | |
- run: > | |
env ASAN_OPTIONS="detect_odr_violation=0" RUSTFLAGS="-Z sanitizer=address" | |
cargo test -Zbuild-std --target x86_64-unknown-linux-gnu --tests | |
- run: > | |
env RUSTFLAGS="-Z sanitizer=memory" | |
cargo test -Zbuild-std --target x86_64-unknown-linux-gnu --tests | |
shuttle: | |
needs: test_sans | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
name: Setup toolchain | |
with: | |
toolchain: nightly | |
override: true | |
components: rust-src | |
- run: cargo test --features "shuttle" shuttle_concurrent_insert_read --release -- --nocapture | |
- run: cargo test --features "shuttle" shuttle_insert_only --release -- --nocapture | |
benchmark: | |
needs: shuttle | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
name: Setup toolchain | |
with: | |
toolchain: stable | |
override: true | |
components: rust-src | |
- run: env SHUMAI_FILTER="basic-basic-.*-ART" SHUMAI_THREAD=4 cargo bench --bench basic | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: shumai-results | |
path: target/benchmark/**/*.json | |
- run: python3 .github/workflows/shumai_converter.py | |
- name: Store benchmark result | |
uses: benchmark-action/github-action-benchmark@v1 | |
with: | |
name: 'Congee basic op performance' | |
# What benchmark tool the output.txt came from | |
tool: 'customBiggerIsBetter' | |
# Where the output from the benchmark tool is stored | |
output-file-path: output.json | |
# Workflow will fail when an alert happens | |
fail-on-alert: true | |
# Access token to deploy GitHub Pages branch | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
# Push and deploy GitHub pages branch automatically | |
auto-push: true | |
fuzzing: | |
needs: fmt | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
name: Setup toolchain | |
with: | |
toolchain: nightly | |
override: true | |
components: rust-src, llvm-tools-preview | |
- run: cargo install cargo-fuzz | |
- run: cargo install cargo-binutils | |
- run: | | |
cd fuzz | |
git clone --depth 1 https://${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/XiangpengHao/congee-fuzzing.git | |
mv congee-fuzzing/* . | |
- run: | | |
cd fuzz | |
cargo fuzz run btree_check --release --debug-assertions -s address -- -max_len=655350 -runs=0 | |
# Seems to be a bug from cargo-fuzz: https://github.com/rust-fuzz/cargo-fuzz/issues/320 | |
# - run: | | |
# cd fuzz | |
# cargo fuzz coverage btree_check corpus/btree_check | |
# cargo cov -- export target/x86_64-unknown-linux-gnu/release/btree_check --instr-profile=coverage/btree_check/coverage.profdata -ignore-filename-regex=".cargo" -format="lcov" > coverage.txt | |
# - name: Upload to codecov.io | |
# uses: codecov/codecov-action@v2 | |
# with: | |
# files: ./fuzz/coverage.txt | |
# flags: fuzzing | |