Skip to content

Fuzz iterators and fix bugs #539

Fuzz iterators and fix bugs

Fuzz iterators and fix bugs #539

Workflow file for this run

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
# When changing this value don't forget to change the `package.rust-version` field in
# `roaring/Cargo.toml`!!!
- 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