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@v4
- name: Setup toolchain
uses: dtolnay/rust-toolchain@v1
with:
toolchain: stable
components: rustfmt, clippy
- name: Check
run: cargo clippy --all-features -- -D warnings
fmt:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Setup toolchain
uses: dtolnay/rust-toolchain@v1
with:
toolchain: stable
components: rustfmt, clippy
- name: Format check
run: cargo fmt --all -- --check
test_sans:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Setup toolchain
uses: dtolnay/rust-toolchain@v1
with:
toolchain: nightly
components: rust-src
- name: Install llvm-dev
run: sudo apt install llvm-dev
- name: Run cargo test
run: cargo test
- name: Run address sanitizer tests
run: |
env ASAN_OPTIONS="detect_odr_violation=0" RUSTFLAGS="-Z sanitizer=address" \
cargo test -Zbuild-std --target x86_64-unknown-linux-gnu --tests
- name: Run memory sanitizer tests
run: |
env RUSTFLAGS="-Z sanitizer=memory" \
cargo test -Zbuild-std --target x86_64-unknown-linux-gnu --tests
shuttle:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Setup toolchain
uses: dtolnay/rust-toolchain@v1
with:
toolchain: nightly
components: rust-src
- name: Shuttle concurrent insert read
run: cargo test --features "shuttle" shuttle_concurrent_insert_read --release -- --nocapture
- name: Shuttle insert only
run: cargo test --features "shuttle" shuttle_insert_only --release -- --nocapture
- name: congee_arc
run: cargo test --features "shuttle" shuttle_get_insert_race --release -- --nocapture
benchmark:
needs: shuttle
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Setup toolchain
uses: dtolnay/rust-toolchain@v1
with:
toolchain: stable
components: rust-src
- name: Run benchmark
run: env SHUMAI_FILTER="basic-basic-.*-ART" SHUMAI_THREAD=4 cargo bench --bench basic
- uses: actions/upload-artifact@v4
with:
name: shumai-results
path: target/benchmark/**/*.json
- name: Convert benchmark output
run: python3 .github/workflows/shumai_converter.py
- name: Store benchmark result
uses: benchmark-action/github-action-benchmark@v1
with:
name: 'Congee basic op performance'
tool: 'customBiggerIsBetter'
output-file-path: output.json
fail-on-alert: true
github-token: ${{ secrets.GITHUB_TOKEN }}
auto-push: true
fuzzing:
needs: fmt
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Setup toolchain
uses: dtolnay/rust-toolchain@v1
with:
toolchain: nightly
components: rust-src, llvm-tools-preview
- name: Install cargo-fuzz
run: cargo install cargo-fuzz
- name: Install cargo-binutils
run: cargo install cargo-binutils
- name: Clone fuzzing repo
run: |
cd fuzz
git clone --depth 1 https://${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/XiangpengHao/congee-fuzzing.git
mv congee-fuzzing/* .
- name: Run fuzzing
run: |
cd fuzz
cargo fuzz run btree_check --release --debug-assertions -s address -- -max_len=655350 -runs=0