mirror of
https://github.com/hanzoai/datastore.git
synced 2026-09-26 13:55:07 +00:00
Adds a stress testing framework for ClickHouse Keeper under `tests/stress/keeper/`, wired into CI (PR gate + nightly workflows). Key components: - Workloads: `keeper_bench.py` runner with YAML-defined workload profiles (`prod_mix.yaml`, `read_requests.yaml`, `write_requests.yaml`, etc.) - Scenarios: `core_no_faults.yaml` and `core_faults.yaml` with netem-based network fault injection (latency, jitter, packet loss) - Fault framework: `faults/network.py` (netem), `faults/base.py` (step dispatcher with `kind: parallel` support) - Metrics: `MetricsSampler` collects keeper stats, `sink.py` writes JSONL, ingested into CIDB via `ingest_keeper_metrics.py` post-hook - Gates: scenario pass/fail conditions based on RPS, p99 latency, error rate - Grafana dashboards for run details, 1vs1 comparison, historical progression CI integration: - PR job: 3 no-fault scenarios (prod-mix, read-multi, write-multi), ARM_LARGE, 15 min each, runs when `src/Coordination/` or stress test files change - Nightly (no-faults): all no-fault scenarios, default + rocks backends, ARM_LARGE - Nightly (faults): all fault scenarios, default + rocks backends, ARM_LARGE - Single `keeper_stress_job` config; mode detected via `Info().pr_number` and `Info().workflow_name` inside the job script Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
42 lines
819 B
Python
42 lines
819 B
Python
from keeper.gates.base import (
|
|
apply_gate,
|
|
backlog_drains,
|
|
config_converged,
|
|
config_members_len_eq,
|
|
election_time_le,
|
|
ephemerals_gone_within,
|
|
error_rate_le,
|
|
fourlw_enforces,
|
|
health_precheck,
|
|
lgif_monotone,
|
|
log_sanity_ok,
|
|
no_watcher_hotspot,
|
|
p95_le,
|
|
p99_le,
|
|
prom_thresholds_le,
|
|
ready_expect,
|
|
single_leader,
|
|
watch_delta_within,
|
|
)
|
|
|
|
__all__ = [
|
|
"single_leader",
|
|
"backlog_drains",
|
|
"error_rate_le",
|
|
"p99_le",
|
|
"p95_le",
|
|
"watch_delta_within",
|
|
"no_watcher_hotspot",
|
|
"ephemerals_gone_within",
|
|
"ready_expect",
|
|
"lgif_monotone",
|
|
"fourlw_enforces",
|
|
"health_precheck",
|
|
"prom_thresholds_le",
|
|
"config_converged",
|
|
"config_members_len_eq",
|
|
"election_time_le",
|
|
"log_sanity_ok",
|
|
"apply_gate",
|
|
]
|