key-value domain. It also establishes the SUT-connection abstraction: a
suite runs against a local reference OR an already-running service selected purely
by config — the same seam a cloud-managed backend attaches to later.
The suite wraps the recognized upstream YCSB tool (load phase + run phase),
like the SWE-bench suite wraps the Docker harness — it does not reimplement the
load generator. The real path needs the YCSB launcher (Java ≥ 11) on PATH or
$YCSB_HOME; the offline mock path needs nothing.
The connection abstraction
The system under test is YCSB’s own binding + endpoint, resolved from the runTarget by the key-value adapters:
params.workload is a YCSB core workload (workloada..workloadf, default
workloada); recordcount / operationcount default to 10000.
What it measures
Theofficial-ycsb-evaluator parses YCSB’s run-phase output into ycsb.*
measurements, all reproducibility_class="environmental" (YCSB is a
throughput/latency benchmark — there is no answer-correctness dimension):
A metric absent from the output (e.g. no UPDATE line for a read-only workload) is
omitted. All carry
official=True — a provenance flag (emitted by the suite’s
recognized evaluator), not an audit claim. The last three are reliability
evidence and remain tool-evidence-only: the error counts exist only when the
tool printed Return= lines, and the disruption claim only when the harness
recorded that it fired — nothing is invented.
Reliability (disruption) runs
params.reliability: {action: reset|stall, at_s, stall_ms?} arms a driver-side
disruption of the measured run phase (the load phase stays clean). The plan
is validated at resolve() and folded into the dataset digest — a different
disruption is a different benchmark. The measured phase routes through a
driver-side DisruptionProxy TCP relay (core/disruption.py) that fires the
action at at_s; it requires the redis binding plus a target.endpoint and
fails loudly otherwise — never a clean benchmark under a disruption-labeled
dataset. A disruption span lands in the trajectory. Full runbook:
Evaluate a managed KV service §5.
Deliberate scope (slice 1)
- Real numbers need the real YCSB tool + a real backend; offline is the mock
path.
ycsb-local(binding=basic) exercises YCSB’s own machinery without a datastore. ycsb-endpointconnects to an already-running service (Redis-protocol first) — full cloud runbook: Evaluate a managed KV service.- Cloud-provisioned / managed KV backends attach later on the same seam.
