Fuzz iterators and fix bugs #536
Workflow file for this run
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
| on: | |
| push: | |
| branches: | |
| - staging | |
| - trying | |
| pull_request: | |
| branches: | |
| - main | |
| merge_group: | |
| name: Continuous integration | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| rust: | |
| - stable | |
| - beta | |
| - nightly | |
| - 1.80.1 | |
| env: | |
| RUSTFLAGS: "-C target-cpu=native -C opt-level=3" | |
| steps: | |
| - name: Checkout roaring-rs | |
| uses: actions/checkout@v4 | |
| - name: Initialize rust toolchain | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: ${{ matrix.rust }} | |
| components: rustfmt, clippy | |
| - name: Caching | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Check | |
| # clippy will also do a build check | |
| # so we don't need to run `cargo check` or `cargo build` | |
| # use different features to check if everything is fine | |
| # the incremental compilation will make this faster | |
| # We disallow todo!s in the code too. | |
| run: | | |
| cargo clippy -p roaring --all-targets --no-default-features -- -D warnings | |
| cargo clippy -p roaring --all-targets --features serde -- -Dclippy::todo -D warnings | |
| - name: Check SIMD | |
| if: matrix.rust == 'nightly' | |
| run: cargo clippy -p roaring --all-targets --all-features -- -D warnings | |
| - name: Check formatting | |
| run: cargo fmt --all -- --check | |
| test: | |
| runs-on: ubuntu-latest | |
| needs: build | |
| strategy: | |
| matrix: | |
| rust: | |
| - stable | |
| - beta | |
| - nightly | |
| - 1.80.1 | |
| features: | |
| - default | |
| - no-std | |
| include: | |
| - rust: nightly | |
| features: simd | |
| env: | |
| RUSTFLAGS: "-C target-cpu=native -C opt-level=3" | |
| ROARINGRS_BENCH_OFFLINE: "true" | |
| steps: | |
| - name: Checkout roaring-rs | |
| uses: actions/checkout@v4 | |
| - name: Checkout benchmark datasets | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: "RoaringBitmap/real-roaring-datasets" | |
| path: "benchmarks/real-roaring-datasets" | |
| - name: Caching | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Initialize rust toolchain | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: ${{ matrix.rust }} | |
| - name: Test | |
| if: matrix.features == 'default' | |
| run: cargo test -p roaring --features serde | |
| - name: Test Benches | |
| if: matrix.rust != '1.80.1' && matrix.features == 'default' | |
| run: cargo test -p benchmarks --benches | |
| - name: Test no default features | |
| if: matrix.features == 'no-std' | |
| run: cargo test -p roaring --no-default-features | |
| - name: SIMD test | |
| if: matrix.rust == 'nightly' && matrix.features == 'simd' | |
| run: cargo +nightly test -p roaring --features simd | |
| miri: | |
| runs-on: ubuntu-latest | |
| needs: build | |
| env: | |
| # warning: Miri does not support optimizations: the opt-level is ignored. | |
| RUSTFLAGS: "-C target-cpu=native" | |
| steps: | |
| - name: Checkout roaring-rs | |
| uses: actions/checkout@v4 | |
| - name: Initialize rust toolchain | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: nightly | |
| components: miri | |
| - name: Caching | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Setup miri | |
| run: cargo miri setup | |
| - name: Test bit endian | |
| run: cargo miri test --target s390x-unknown-linux-gnu -p roaring --lib -- bitmap::serialization::test::test_from_lsb0_bytes | |
| fuzz: | |
| runs-on: ubuntu-latest | |
| needs: build | |
| env: | |
| RUSTFLAGS: "-C target-cpu=native -C opt-level=3" | |
| steps: | |
| - name: Checkout roaring-rs | |
| uses: actions/checkout@v4 | |
| - name: Initialize rust toolchain | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: nightly | |
| - name: Caching | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Install cargo fuzz | |
| run: cargo install cargo-fuzz | |
| - name: Setup Cache for corpus and artifacts | |
| uses: actions/cache@v4 | |
| with: | |
| key: always | |
| path: | | |
| fuzz/artifacts | |
| fuzz/corpus | |
| - name: Run Fuzzer vs croaring for 15 minutes | |
| run: cargo fuzz run against_croaring -s none -- -timeout=5 -max_total_time=900 | |
| - name: Run Fuzzer (with simd) vs croaring for 15 minutes | |
| run: cargo fuzz run --features=simd against_croaring -- -timeout=5 -max_total_time=900 |