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
# Nextest configuration for zeph project
# https://nexte.st/book/configuration.html
[]
# Default profile for local development
# No default filter - run all unit tests
# Integration tests are in separate test binaries (tests/*_integration.rs)
# and can be run explicitly with --test flag or using the ci profile
# Blanket bump from nextest's 100ms default to tolerate process-teardown
# latency under concurrent load (see #5617).
= "500ms"
[[]]
# tokio::task::spawn_blocking worker-thread teardown can outlast the default
# leak-timeout under load even though the handle is joined before the test
# returns (false-positive LEAK, see #5425).
= 'package(zeph-index) & (test(index_file_spawn_blocking_dedup_path) | test(index_file_with_blocking_spawner))'
= "1s"
[]
# CI profile that runs ALL tests including integration tests
# Override with: cargo nextest run --profile ci
= "all()"
# Integration tests are largely I/O-bound (testcontainers, network).
# Running more threads than vCPUs improves throughput while waiting on containers.
= 8
[[]]
# Integration tests pull container images and hit transient network issues
# (e.g. Docker Hub rate limits under parallel CI runs). Retry twice with
# backoff before failing the test.
= "binary(~integration)"
= { = "exponential", = 2, = "10s", = true }
[]
# postgres_integration binaries (zeph-db, zeph-index, zeph-memory) each spin up
# their own Postgres testcontainer per test with no shared coordination. At the
# default test-threads = 8, dozens of containers can start concurrently, which
# overloads Docker Desktop and trips testcontainers-rs 0.27.3's startup-timeout
# leak (see #5546/#5547 — that crate version has no Ryuk reaper, so a timed-out
# container is never cleaned up). Capping concurrency here is cheaper than
# annotating ~40 individual tests with #[serial]. `test-threads` is not a valid
# per-override key (nextest silently ignores it there) — a test-group with
# max-threads is the correct mechanism.
= 2
[[]]
= "binary(postgres_integration)"
= "postgres-containers"
[]
# Same failure class as postgres-containers: qdrant_integration and
# document_integration each start their own Qdrant testcontainer per test.
# Uncapped concurrency (test-threads = 8) can overload Docker and surface
# testcontainers-rs 0.27.3 races — observed locally as PortNotExposed when 5
# containers start at once (see also #5546/#5547 for the startup-timeout leak).
= 2
[[]]
= "binary(qdrant_integration) or binary(document_integration)"
= "qdrant-containers"
[]
# Store JUnit XML report for CI
= "target/nextest/ci/junit.xml"
[]
# Used by the partitioned test matrix in CI (unit tests only).
# Each shard receives --partition hash:K/12 on the command line (issue #6737).
= 8
# Blanket bump from nextest's 100ms default to tolerate process-teardown
# latency under concurrent load (see #5617).
= "500ms"
[[]]
# Warn (but don't fail) if any test exceeds 30s — surfaces slow tests early.
= "all()"
= { = "30s" }
[[]]
# tokio::task::spawn_blocking worker-thread teardown can outlast the default
# leak-timeout under load even though the handle is joined before the test
# returns (false-positive LEAK, see #5425).
= 'package(zeph-index) & (test(index_file_spawn_blocking_dedup_path) | test(index_file_with_blocking_spawner))'
= "1s"
[]
= "target/nextest/ci/junit.xml"