-
Notifications
You must be signed in to change notification settings - Fork 109
171 lines (140 loc) · 4.49 KB
/
Copy pathtest.yml
File metadata and controls
171 lines (140 loc) · 4.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
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.90.0
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.90.0
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.90.0' && 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