-
Notifications
You must be signed in to change notification settings - Fork 2
60 lines (56 loc) · 2.21 KB
/
Copy pathconcurrency-gate.yml
File metadata and controls
60 lines (56 loc) · 2.21 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
name: Concurrency gate
# Guards the #397 fix (nested pooled-connection draws) at 2x pool
# oversubscription: 32 concurrent clients against a 16-connection pool, driven
# through the REAL HTTP transport. Before the fix this exact configuration
# browned out (174 req/s, 30s max latency, failed writes) and 4x hard-wedged;
# after it, the run must complete with zero errors, every write persisted, and
# the wall well inside the 60s budget. The four named hammer tests then pin
# the per-subsystem concurrency invariants (audited-writer history, link/edge
# durability, follow increments, pool starvation) so a failure names the
# subsystem that regressed. Lean build (--no-default-features): the pool
# behavior under test is independent of the embedding stack, and the lean
# build keeps the gate fast. (#404)
on:
push:
branches: [main, master]
paths:
- "src/**"
- "Cargo.toml"
- "Cargo.lock"
- ".github/workflows/concurrency-gate.yml"
pull_request:
branches: [main, master]
paths:
- "src/**"
- "Cargo.toml"
- "Cargo.lock"
- ".github/workflows/concurrency-gate.yml"
env:
CARGO_TERM_COLOR: always
jobs:
concurrency-gate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Build (lean, release)
run: cargo build --release --no-default-features --tests
- name: Pool load test at 2x oversubscription (32 clients / pool 16)
env:
MIMIR_LOADTEST_CLIENTS: "32"
MIMIR_LOADTEST_WRITES: "25"
MIMIR_LOADTEST_READS: "75"
MIMIR_POOL_MAX_SIZE: "16"
MIMIR_BUSY_TIMEOUT_MS: "5000"
MIMIR_LOADTEST_MAX_WALL_SECS: "60"
run: |
cargo test --release --no-default-features \
pool_load_test_http_transport -- --ignored --nocapture
- name: Concurrency hammer tests
run: |
cargo test --release --no-default-features -- \
concurrent_audited_writers_serialize_without_corrupting_history \
concurrent_links_and_remembers_do_not_lose_edges \
concurrent_follows_do_not_lose_increments \
many_concurrent_linkers_do_not_starve_the_pool