forked from qdrant/vector-db-benchmark
-
Notifications
You must be signed in to change notification settings - Fork 14
358 lines (266 loc) · 11.1 KB
/
Copy pathci.yml
File metadata and controls
358 lines (266 loc) · 11.1 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
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
name: CI
on:
push:
branches: [master]
paths:
- 'Cargo.toml'
- 'Cargo.lock'
- 'src/**'
- 'tests/**'
- 'datasets/datasets.json'
- 'experiments/configurations/**'
- '.github/workflows/ci.yml'
pull_request:
paths:
- 'Cargo.toml'
- 'Cargo.lock'
- 'src/**'
- 'tests/**'
- 'datasets/datasets.json'
- 'experiments/configurations/**'
- '.github/workflows/ci.yml'
jobs:
check:
name: Check (fmt + clippy)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y libhdf5-dev pkg-config
- uses: Swatinem/rust-cache@v2
- name: Check formatting
run: cargo fmt --check
- name: Run clippy
run: cargo clippy --all-targets -- -D warnings
- name: Security audit (advisories)
# Non-blocking: reports known-vulnerable/unmaintained crates without
# failing CI on advisories in transitive deps we can't immediately fix.
continue-on-error: true
run: |
cargo install cargo-audit --locked || true
cargo audit
test:
name: Unit tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y libhdf5-dev pkg-config
- uses: Swatinem/rust-cache@v2
- name: Run unit tests
# --lib AND --bins: the bulk of the unit tests (engine filter builders,
# CLI/config parsing, per-engine helpers) live in the binary crate, so
# `--lib` alone never executed them in CI.
run: cargo test --lib --bins --release
- name: Run CLI smoke tests (no container)
# --help / --describe datasets|engines — the same paths the docker-build
# job smoke-tests, now in the blocking suite.
run: cargo test --test integration_cli --release
- name: Run measurement-overhead invariants (no container)
# `--lib --bins` does NOT build `tests/*.rs` integration targets, and no
# job named this one, so INV-2/INV-3 — the source-shape tripwires that
# keep the per-query timed loops lock-free and the percentiles unbiased —
# had never run in CI. INV-4/INV-4b (#214) join them here.
run: cargo test --test overhead_invariants --release
- name: Run test-harness invariants (no container)
# INV-P1..P6 (#292): each suite has exactly one source of truth for its
# port and it matches docker-compose.test.yml; every server-wiping suite
# claims its instance from inside `test_port()`; the claim decision fails
# closed; and no shared helper under tests/common/ can wipe a server.
run: cargo test --test harness_invariants --release
integration-redis:
name: Integration tests (Redis)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y libhdf5-dev pkg-config
- uses: Swatinem/rust-cache@v2
- name: Start Redis
run: docker compose -f tests/docker-compose.test.yml up -d redis --wait
- name: Run Redis integration tests
run: cargo test --test integration_redis --release -- --test-threads=1
- name: Stop Redis
if: always()
run: docker compose -f tests/docker-compose.test.yml down
integration-vectorsets:
name: Integration tests (VectorSets)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y libhdf5-dev pkg-config
- uses: Swatinem/rust-cache@v2
# VectorSets (VADD/VSIM) ship in the same redis:8.8.0 image the Redis job uses.
- name: Start Redis (Vector Sets)
run: docker compose -f tests/docker-compose.test.yml up -d redis --wait
- name: Run VectorSets integration tests
run: VECTORSETS_PORT=6399 cargo test --test integration_vectorsets --release -- --test-threads=1
- name: Stop Redis
if: always()
run: docker compose -f tests/docker-compose.test.yml down
integration-pgvector:
name: Integration tests (PgVector)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y libhdf5-dev pkg-config
- uses: Swatinem/rust-cache@v2
- name: Start PgVector
run: docker compose -f tests/docker-compose.test.yml up -d pgvector --wait
- name: Run PgVector integration tests
run: PGVECTOR_PORT=5433 cargo test --test integration_pgvector --release -- --test-threads=1
- name: Stop PgVector
if: always()
run: docker compose -f tests/docker-compose.test.yml down
integration-qdrant:
name: Integration tests (Qdrant)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y libhdf5-dev pkg-config
- uses: Swatinem/rust-cache@v2
- name: Start Qdrant
run: docker compose -f tests/docker-compose.test.yml up -d qdrant --wait
- name: Run Qdrant integration tests
run: QDRANT_GRPC_PORT=6335 cargo test --test integration_qdrant --release -- --test-threads=1
- name: Stop Qdrant
if: always()
run: docker compose -f tests/docker-compose.test.yml down
integration-elasticsearch:
name: Integration tests (Elasticsearch)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y libhdf5-dev pkg-config
- uses: Swatinem/rust-cache@v2
- name: Start Elasticsearch
run: docker compose -f tests/docker-compose.test.yml up -d elasticsearch --wait
- name: Run Elasticsearch integration tests
run: ELASTIC_PORT=9201 cargo test --test integration_elasticsearch --release -- --test-threads=1
- name: Stop Elasticsearch
if: always()
run: docker compose -f tests/docker-compose.test.yml down
integration-milvus:
name: Integration tests (Milvus)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y libhdf5-dev pkg-config
- uses: Swatinem/rust-cache@v2
- name: Start Milvus
run: docker compose -f tests/docker-compose.test.yml up -d milvus --wait
- name: Run Milvus integration tests
run: MILVUS_PORT=19531 cargo test --test integration_milvus --release -- --test-threads=1
- name: Stop Milvus
if: always()
run: docker compose -f tests/docker-compose.test.yml down
integration-weaviate:
name: Integration tests (Weaviate)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y libhdf5-dev pkg-config
- uses: Swatinem/rust-cache@v2
- name: Start Weaviate
run: docker compose -f tests/docker-compose.test.yml up -d weaviate --wait
- name: Run Weaviate integration tests
run: WEAVIATE_HTTP_PORT=8081 cargo test --test integration_weaviate --release -- --test-threads=1
- name: Stop Weaviate
if: always()
run: docker compose -f tests/docker-compose.test.yml down
integration-opensearch:
name: Integration tests (OpenSearch)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y libhdf5-dev pkg-config
- uses: Swatinem/rust-cache@v2
- name: Start OpenSearch
run: docker compose -f tests/docker-compose.test.yml up -d opensearch --wait
- name: Run OpenSearch integration tests
run: OPENSEARCH_PORT=9202 cargo test --test integration_opensearch --release -- --test-threads=1
- name: Stop OpenSearch
if: always()
run: docker compose -f tests/docker-compose.test.yml down
integration-mongodb:
name: Integration tests (MongoDB)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y libhdf5-dev pkg-config
- uses: Swatinem/rust-cache@v2
- name: Start MongoDB
run: docker compose -f tests/docker-compose.test.yml up -d mongodb-search --wait
- name: Run MongoDB integration tests
run: MONGODB_PORT=27018 cargo test --test integration_mongodb --release -- --test-threads=1
- name: Stop MongoDB
if: always()
run: docker compose -f tests/docker-compose.test.yml down
integration-valkey:
name: Integration tests (Valkey)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y libhdf5-dev pkg-config
- uses: Swatinem/rust-cache@v2
- name: Start Valkey
run: docker compose -f tests/docker-compose.test.yml up -d valkey --wait
- name: Run Valkey integration tests
run: VALKEY_PORT=6380 cargo test --test integration_valkey --release -- --test-threads=1
- name: Stop Valkey
if: always()
run: docker compose -f tests/docker-compose.test.yml down
integration-dragonfly:
name: Integration tests (Dragonfly)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y libhdf5-dev pkg-config
- uses: Swatinem/rust-cache@v2
- name: Start Dragonfly
run: docker compose -f tests/docker-compose.test.yml up -d dragonfly --wait
- name: Run Dragonfly integration tests
run: DRAGONFLY_PORT=6385 cargo test --test integration_dragonfly --release -- --test-threads=1
- name: Stop Dragonfly
if: always()
run: docker compose -f tests/docker-compose.test.yml down
integration-kividb:
name: Integration tests (KiviDB)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y libhdf5-dev pkg-config
- uses: Swatinem/rust-cache@v2
- name: Start KiviDB
run: docker compose -f tests/docker-compose.test.yml up -d kividb --wait
- name: Run KiviDB integration tests
run: KIVIDB_PORT=6386 cargo test --test integration_kividb --release -- --test-threads=1
- name: Stop KiviDB
if: always()
run: docker compose -f tests/docker-compose.test.yml down
integration-chroma:
name: Integration tests (Chroma)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y libhdf5-dev pkg-config
- uses: Swatinem/rust-cache@v2
- name: Start Chroma
run: docker compose -f tests/docker-compose.test.yml up -d chroma --wait
- name: Run Chroma integration tests
run: CHROMA_PORT=8003 cargo test --test integration_chroma --release -- --test-threads=1
- name: Stop Chroma
if: always()
run: docker compose -f tests/docker-compose.test.yml down