Repository navigation
Add end-to-end acceptance on real collector containers, and cost/accuracy experiment tooling - #30
Merged
Merged
Conversation
zzylol
force-pushed
the
feat/e2e-acceptance
branch
from
October 13, 2026 00:20
9a62ef4 to
ff1cc27
Compare
zzylol
force-pushed
the
feat/merge-bench
branch
2 times, most recently
from
October 19, 2026 02:31
3191eeb to
81a2f89
Compare
zzylol
force-pushed
the
feat/e2e-acceptance
branch
2 times, most recently
from
October 19, 2026 14:57
70b60ab to
2f1564b
Compare
zzylol
force-pushed
the
feat/merge-bench
branch
from
October 19, 2026 14:57
81a2f89 to
63b6d95
Compare
zzylol
force-pushed
the
feat/e2e-acceptance
branch
2 times, most recently
from
October 19, 2026 20:15
deaf7ed to
9906188
Compare
zzylol
force-pushed
the
feat/merge-bench
branch
from
October 19, 2026 20:15
a031d61 to
5a34f74
Compare
zzylol
force-pushed
the
feat/e2e-acceptance
branch
from
October 19, 2026 20:16
9906188 to
184bf71
Compare
zzylol
force-pushed
the
feat/merge-bench
branch
2 times, most recently
from
October 19, 2026 20:16
1576e2d to
c261c17
Compare
zzylol
force-pushed
the
feat/e2e-acceptance
branch
from
October 19, 2026 20:16
184bf71 to
093aa7b
Compare
zzylol
force-pushed
the
feat/merge-bench
branch
from
October 19, 2026 20:16
c261c17 to
a2587ba
Compare
zzylol
force-pushed
the
feat/e2e-acceptance
branch
2 times, most recently
from
October 19, 2026 20:17
16fa6ad to
ae85b5d
Compare
zzylol
force-pushed
the
feat/merge-bench
branch
2 times, most recently
from
October 19, 2026 20:17
523dbff to
9cf249a
Compare
zzylol
force-pushed
the
feat/e2e-acceptance
branch
from
October 19, 2026 20:17
ae85b5d to
3aed20f
Compare
zzylol
force-pushed
the
feat/merge-bench
branch
from
October 19, 2026 20:18
9cf249a to
5e8ff88
Compare
zzylol
force-pushed
the
feat/e2e-acceptance
branch
from
October 19, 2026 20:18
3aed20f to
d284043
Compare
zzylol
force-pushed
the
feat/merge-bench
branch
from
October 19, 2026 20:18
5e8ff88 to
d34a67e
Compare
zzylol
force-pushed
the
feat/e2e-acceptance
branch
from
October 19, 2026 20:18
d284043 to
5f11337
Compare
acceptance.py runs each use case (latency, cardinality, drift, top-k) on the real collector containers with time scaled 6x and checks sketch answers against the exact pipeline's ground truth through Prometheus and Loki: every stage up, full rate delivered, identical points per window, bounds containing the exact answer, classes, drift and novelty detected with no false positives, events in Loki, and a window completion delay from each of the three pipelines. Exits non-zero on any failure. experiments.py pipelines runs the sketch, exact and raw pipelines side by side over offered rates (CPU, memory, delivered rate, delay per pipeline); experiments.py accuracy-size measures error vs sketch size (KLL k, Count-Min width).
zzylol
force-pushed
the
feat/e2e-acceptance
branch
from
October 19, 2026 20:18
5f11337 to
3f5525f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part 8 of the telemetry-functions stack: the end-to-end acceptance, plus the tooling for experiments 1 and 2. The measured results come in the last PR of the stack.
deploy/telemetry-functions/acceptance.pyRuns all four use cases on the real collector containers: the sketch, exact and raw pipelines (18 stages) with Prometheus, Loki and
loki-raw. It checks the sketch answers against the exact pipeline's ground truth through Prometheus and Loki, checks that every pipeline reports its window completion delay, prints PASS or FAIL per check, and exits non-zero on any failure.To keep it to a few minutes per use case, time is scaled down 6×: 10-second windows, a 2-second grace (raised back to the deployed 5 s in #31, after the first real CI run showed sketches arriving later than 2 s on a shared 4-CPU runner), changes at second 100, and growth 6× faster. Rules counted in windows (baselines, thresholds) are as deployed. Comparisons are pinned to one window answered by both methods, with PromQL's
@modifier.Result on a 56-core x86 server: 29/29 checks passed.
/new/hot-routein both top-10s; recall@10 = 1.00; novelty event in LokiWindow completion delay (10-second windows, 5 s merge grace): sketch 5.2–5.6 s and exact 5.2–5.7 s in every use case. The raw pipeline's rate is reported, not required, because whether it keeps up is what it measures: it delivered every point with 4.6 s (latency), 9.6 s (drift) and 14.7 s (top-k), but for cardinality
loki-rawstored only about 190,000 of 400,000 points per window, 39 s late, since everyuser.idis new to it.Informational, not a pass condition: with 10-second windows, the p99 relative error for routes with ≥ 20,000 points reached 12.8%. That is KLL's rank error in a log-normal tail (see #25).
experiments.pyandreport_experiments.pypipelines: the three pipelines side by side over offered rates, fed identical points: CPU and memory of each stage, points delivered per second and window completion delay per pipeline. The raw branch only forwards points, so the sketch branch's CPU minus the raw branch's is the cost of the function.accuracy-size: error against exact as KLLkand Count-Min width change (100,000 keys), with the bytes merge receives per window.report_experiments.pyturns the CSVs into a Markdown report with tables and a figure.Also includes
PIPELINES/COMMONand the published Loki port in compose,run.sh --build-only, and a README covering every use case.cargo fmt --check,cargo clippy ... -D warningsandcargo test --features otap-engine,stream-benchmarkpass at this PR's head.