Skip to content

fix(ui): break the test history chart lines at gaps between runs - #361

Merged
skylenet merged 2 commits into
masterfrom
fix/history-chart-gaps
Oct 21, 2026
Merged

skylenet merged 2 commits into
masterfrom
fix/history-chart-gaps

Conversation

@skylenet

@skylenet skylenet commented Oct 21, 2026 •

Copy link
Copy Markdown
Member

Summary

The MGas/s chart on a test history page did not match the runs table. An example is test_deploy_then_interact[...greedy_fill-independent_pairs-benchmark-gas-value_200M] in suite a1f2039d3c1dc45d. Each client has one run on Oct 15, then no runs until Oct 20. Geth has 54 runs, and the other clients have 4–10.

Fixes

  1. More runs show as dots, and each client decides on its own. Before, the chart hid the dots of all clients when any client had more than 30 runs. With 54 geth runs, the 4 besu runs looked like one continuous line, and geth had no dots. Now a client line shows its dots up to 100 runs (the default runs per client): normal dots up to 30, small dots above. It hides them only above 100 runs. The zoom slider still shows when any client has more than 30 runs.
  2. A line breaks at a gap between runs. Before, a line joined the Oct 15 run to the Oct 20 run, so it looked like a slow trend across 5 days with no runs. On the time axis, a line now breaks where a gap is at least 5× the median interval of the client and at least 6 hours. The "Run #" axis does not change.
  3. A run between two gaps shows as a dot. A line with hidden dots cannot show a single point, so a scatter series with the same name shows it. The legend shows and hides both series together.
  4. The x axis opens on Run #. It spaces the runs evenly, so a gap of days between runs does not squeeze the recent runs into a corner. The time axis is the second option, with ?x=time in the URL. Old links with ?x=runCount still work.

Tests

  • New tests for findRunGaps: a gap of days between runs every few hours, a steady daily series, a short gap between frequent runs, and a series with only one interval.
  • The UI has 133 tests, and all pass. tsc and eslint report no errors.
  • I checked the example page against the prod API. On the time axis, the lines break at the gap, the Oct 15 runs show as dots, and the 54 geth runs have small dots. The page opens on Run # with no x param in the URL.

The MGas/s chart of a test history did not match the runs table in two
ways:

- The chart hid the symbols of all clients when one client had more
  than 30 runs. With 54 geth runs, the 4 besu runs looked like one
  continuous line. Each client line now hides its symbols only when it
  has more than 30 runs itself.
- A line joined two runs across a gap of days, so it looked like a
  slow trend with no runs in it. On the time axis, a line now breaks
  where the gap is 5x the median interval of the client and at least
  6 hours. A run with a gap on both sides shows as a dot.
A client line hid its dots above 30 runs, so the 54 geth runs of a test
showed as a plain line. A line now shows small dots up to 100 runs, the
default runs per client, and hides them only above that.

The x axis now opens on Run #. It spaces the runs evenly, so a gap of
days between runs does not squeeze the recent runs into a corner. The
time axis stays one click away, with ?x=time in the URL.
@redpandabot

This comment has been minimized.

@redpandabot

redpandabot Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

CI failed @ 69392cfd

All five failed jobs share one root cause: the shared dependencies step ("Setup Podman and CRIU" in .github/actions/dependencies/action.yaml:113-116) failed because apt fetches from the Launchpad CRIU PPA (https://ppa.launchpadcontent.net/criu/ppa/ubuntu) returned HTTP 503 Service Unavailable from multiple Launchpad CDN IPs, causing apt to exit with code 100. The PR diff touches only four UI files (TestHistoryChart.tsx, TestHistoryPage.tsx, testHistory.ts, testHistory.test.ts) and no workflow or action code; the failing step is unchanged since master commit 9d71041 (#341). No test, lint, or build of the PR's code ran before the failure. Category: infrastructure for all five. Fix: re-run the jobs once the PPA recovers; optional hardening is a retry around the apt-get install -y criu line at .github/actions/dependencies/action.yaml:116.

  • Check - CI Github Action / podman-checkpoint-restore — infrastructure — apt-get install criu failed because the Launchpad CRIU PPA returned HTTP 503 Service Unavailable; E: Package 'criu' has no installation candidate (log line 324), exit code 100. (.github/actions/dependencies/action.yaml:116) — Re-run the job once the PPA is serving again; optionally add a retry around the apt-get install -y criu line.
  • Check - CI Github Action / state-actor — infrastructure — Same PPA 503 outage; E: Package 'criu' has no installation candidate (log lines 209-242), exit code 100. (.github/actions/dependencies/action.yaml:116) — Re-run the job once the PPA is serving again.
  • Check - CI Github Action / pre-runs — infrastructure — Same PPA 503 outage, at the .deb download stage: E: Failed to fetch .../criu_4.3-1ppa1.24.04_amd64.deb 503 Service Unavailable (log lines 237-241), exit code 100. (.github/actions/dependencies/action.yaml:116) — Re-run the job once the PPA is serving again.
  • Check - CI Github Action / podman — infrastructure — Same PPA 503 outage; E: Package 'criu' has no installation candidate (log line 324), exit code 100. (.github/actions/dependencies/action.yaml:116) — Re-run the job once the PPA is serving again.
  • Check - CI Github Action / docker — infrastructure — Same PPA 503 outage; E: Package 'criu' has no installation candidate (log line 324), exit code 100. (.github/actions/dependencies/action.yaml:116) — Re-run the job once the PPA is serving again.

Diagnosed Check - CI Github Action @ 69392cfd
"A pessimist is a well-informed optimist." — Hungarian saying

@redpandabot redpandabot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR makes the test-history chart show per-client dots up to 100 runs (small above 30), break lines at time-axis gaps of at least 5× the median interval and 6 hours, render isolated runs via a same-named scatter series when symbols are hidden, and default the x axis to Run # with ?x=time for the time axis. I traced the gap-index/isolated-point logic, the oldest-first ordering contract with buildHistoryPoints, the dense-vs-large threshold split, and the URL param flip, and verified the gap heuristics with a scratch repro and the new tests — all consistent. No real problems found.


Reviewed 4 changed file(s) @ 69392cfd — no blocking issues found.
"A pessimist is a well-informed optimist." — Hungarian saying

@skylenet
skylenet merged commit 4032f67 into master Oct 21, 2026
3 of 8 checks passed
@skylenet
skylenet deleted the fix/history-chart-gaps branch October 21, 2026 17:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant