name: CI
on:
pull_request:
push:
branches: ["master"]
schedule:
- cron: "0 4 * * *"
jobs:
test-and-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Cargo fmt
run: cargo fmt --all -- --check
- name: Cargo test
run: cargo test
- name: Cargo test (uring-native)
run: cargo test --features uring-native
- name: Cargo bench --no-run
run: cargo bench --no-run
- name: Install mdBook
run: cargo install --locked mdbook --version 0.4.40
- name: Build mdBook
run: mdbook build book
- name: Fanout bench smoke
run: ./scripts/bench_fanout_smoke.sh
- name: Ping perf guardrail
run: ./scripts/bench_ping_guardrail.sh
- name: Fanout perf guardrail
run: ./scripts/bench_fanout_guardrail.sh
- name: Ping percentile guardrails
run: |
./scripts/bench_tail_guardrail.sh steady_ping_pong_rtt tokio_two_worker spargio_io_uring
./scripts/bench_tail_guardrail.sh steady_one_way_send_drain tokio_two_worker spargio_io_uring
./scripts/bench_tail_guardrail.sh cold_start_ping_pong tokio_two_worker spargio_io_uring
- name: Fanout percentile guardrails
run: |
MAX_P50_RATIO=2.5 MAX_P95_RATIO=2.5 MAX_P99_RATIO=2.5 ./scripts/bench_tail_guardrail.sh fanout_fanin_balanced tokio_mt_4 spargio_io_uring
MAX_P50_RATIO=2.5 MAX_P95_RATIO=2.5 MAX_P99_RATIO=2.5 ./scripts/bench_tail_guardrail.sh fanout_fanin_skewed tokio_mt_4 spargio_io_uring
- name: QUIC perf gate
run: QUIC_PERF_FIXTURE=tests/fixtures/quic_perf/native_vs_bridge.json ./scripts/quic_perf_gate.sh
companion-matrix:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Companion crate smoke
run: ./scripts/companion_ci_smoke.sh
- name: Companion crate hardening
run: ./scripts/companion_ci_hardening.sh
- name: QUIC interop matrix
run: ./scripts/quic_interop_matrix.sh
nightly-soak:
if: github.event_name == 'schedule'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Soak tests (ignored)
run: cargo test --features uring-native --test stress_tdd -- --ignored
- name: QUIC soak and fault qualification
run: ./scripts/quic_soak_fault.sh
- name: Install valgrind
run: sudo apt-get update && sudo apt-get install -y valgrind
- name: Scheduler profiler lane
run: |
SUMMARY_JSON=target/scheduler_profiles/nightly_skew_summary.json \
WARMUP=0.01 MEASURE=0.02 SAMPLES=10 \
./scripts/bench_scheduler_profile.sh fanout_fanin_skewed spargio_io_uring
MAX_CALLGRIND_IR_RATIO=1.35 \
MAX_CACHEGRIND_D1MR_RATIO=1.35 \
MAX_CACHEGRIND_D1MW_RATIO=1.35 \
./scripts/scheduler_profile_guardrail.sh \
tests/fixtures/scheduler_profile/fanout_fanin_skewed_spargio_io_uring.json \
target/scheduler_profiles/nightly_skew_summary.json
SUMMARY_JSON=target/scheduler_profiles/nightly_balanced_summary.json \
WARMUP=0.01 MEASURE=0.02 SAMPLES=10 \
./scripts/bench_scheduler_profile.sh fanout_fanin_balanced spargio_io_uring
MAX_CALLGRIND_IR_RATIO=1.35 \
MAX_CACHEGRIND_D1MR_RATIO=1.35 \
MAX_CACHEGRIND_D1MW_RATIO=1.35 \
./scripts/scheduler_profile_guardrail.sh \
tests/fixtures/scheduler_profile/fanout_fanin_balanced_spargio_io_uring.json \
target/scheduler_profiles/nightly_balanced_summary.json