Make busy-time snapshots monotonic #111
This file contains hidden or 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: | |
| pull_request: | |
| jobs: | |
| quality: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: clippy,rustfmt | |
| - uses: Swatinem/rust-cache@v2 | |
| - run: cargo fmt --all --check | |
| - run: cargo clippy --workspace --all-targets --locked -- -D warnings | |
| - run: RUSTDOCFLAGS="-D warnings" cargo doc --workspace --no-deps --locked | |
| - run: cargo test --workspace --doc --locked | |
| - run: cmp LICENSE-MIT crates/rapidgzip-core/LICENSE-MIT | |
| - run: cmp LICENSE-MIT crates/rapidgzip-rust-cli/LICENSE-MIT | |
| - run: cmp LICENSE-BSD-3-CLAUSE crates/rapidgzip-core/LICENSE-BSD-3-CLAUSE | |
| - run: cmp LICENSE-BSD-3-CLAUSE crates/rapidgzip-rust-cli/LICENSE-BSD-3-CLAUSE | |
| - run: cargo package --workspace --locked | |
| test: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: Swatinem/rust-cache@v2 | |
| - run: cargo test --workspace --all-targets --locked | |
| aarch64: | |
| # Exercise the AArch64 build and baseline NEON dispatch on native hardware. | |
| runs-on: ubuntu-24.04-arm | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: Swatinem/rust-cache@v2 | |
| - run: rustc --version --verbose | |
| - run: cargo test --workspace --all-targets --locked | |
| index-interop: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Install bgzip | |
| run: sudo apt-get update && sudo apt-get install -y tabix zlib1g-dev | |
| - name: Install Python interoperability tools | |
| run: python3 -m pip install --user indexed_gzip rapidgzip==0.16.0 | |
| - name: Build gztool | |
| run: | | |
| git clone --depth 1 --branch v1.8.2 https://github.com/circulosmeos/gztool.git /tmp/gztool | |
| cc -O2 -std=gnu11 -o /usr/local/bin/gztool /tmp/gztool/gztool.c -lz -lm | |
| - run: bgzip --version && gztool -h | head -1 && rapidgzip --version && python3 -c "import indexed_gzip" | |
| - run: cargo test -p rapidgzip-core --test index_interop --locked -- --ignored --nocapture | |
| - run: cargo test -p rapidgzip-rust-cli --test analyze_interop --locked -- --ignored --nocapture | |
| benchmark-tools: | |
| # Validate benchmark correctness and reproducibility, never hosted-runner speed. | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: Swatinem/rust-cache@v2 | |
| - run: cargo build --release --locked -p rapidgzip-rust-cli -p rapidgzip-bench --bin rapidgzip-rust --bin generate_corpora --bin summarize_results | |
| - run: bash -n benchmarks/run-fair.sh benchmarks/run-matrix.sh | |
| - name: Prove deterministic corpus generation | |
| run: | | |
| target/release/generate_corpora --output "$RUNNER_TEMP/rapidgzip-ci-corpus-a" --decoded-mib 2 --seed 7 | |
| target/release/generate_corpora --output "$RUNNER_TEMP/rapidgzip-ci-corpus-b" --decoded-mib 2 --seed 7 | |
| diff -qr "$RUNNER_TEMP/rapidgzip-ci-corpus-a" "$RUNNER_TEMP/rapidgzip-ci-corpus-b" | |
| - name: Exercise the complete Rust-only harness | |
| run: benchmarks/run-fair.sh --ci-smoke --corpus-dir "$RUNNER_TEMP/rapidgzip-ci-corpus-a" --results-dir "$RUNNER_TEMP/rapidgzip-ci-benchmark-results" | |
| - name: Prove deterministic raw-result summarization | |
| run: | | |
| target/release/summarize_results --input "$RUNNER_TEMP/rapidgzip-ci-benchmark-results/raw.tsv" --summary-tsv "$RUNNER_TEMP/rapidgzip-summary-copy.tsv" --summary-markdown "$RUNNER_TEMP/rapidgzip-SUMMARY-copy.md" | |
| diff "$RUNNER_TEMP/rapidgzip-ci-benchmark-results/summary.tsv" "$RUNNER_TEMP/rapidgzip-summary-copy.tsv" | |
| test -s "$RUNNER_TEMP/rapidgzip-ci-benchmark-results/parity.tsv" | |
| test -s "$RUNNER_TEMP/rapidgzip-ci-benchmark-results/corpora.tsv" | |
| msrv: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: dtolnay/rust-toolchain@1.87.0 | |
| - uses: Swatinem/rust-cache@v2 | |
| - run: cargo check --workspace --all-targets --locked |