fix(traefik): bandwidth and 4xx sparklines; cards in a grid with a gap; slow rows/widget log their phases (#5355)
The operator: "load was still slow" (the access log: 7.6-8.0 s on every poll, warm), "why do the bandwidth and 4xx sections not also get sparklines", and "no gap between the widgets". router_history reads the 4xx share and bandwidth too, and the card draws all five lines. The problem cards sit in .node-grid with a bottom margin; a CSS column box dropped the last card's margin. rows() and widget() log each phase when a request passes 1 s, so the slow query names itself on the next load. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -33,7 +33,7 @@ def test_router_state(latest, grade):
|
||||
def _router(name, latest):
|
||||
state, why = router_state(latest, TH)
|
||||
return {"name": name, "latest": latest, "state": state, "why": why,
|
||||
"sparkline_req": "", "sparkline_p95": "", "sparkline_5xx": ""}
|
||||
**{f"sparkline_{k}": f"<svg data-line={k}></svg>" for k in ("req", "bytes", "p95", "4xx", "5xx")}}
|
||||
|
||||
|
||||
def test_failing_routers_come_before_slow_ones_and_healthy_ones_split_off():
|
||||
@@ -63,6 +63,12 @@ async def test_the_page_leads_with_problems_and_folds_the_healthy(app):
|
||||
assert page.index(">docs</td>") < page.index(">web</td>")
|
||||
assert 'class="tone-crit">2 days</td>' in page and 'class="tone-ok">60 days</td>' in page
|
||||
assert "font-weight:600" not in page and not hex_colours(page), hex_colours(page)
|
||||
# #5214: every figure that changes over time has its line, not only req/s, p95 and 5xx.
|
||||
card = page[page.index(">api</h3>"):page.index('id="traefik-healthy"')]
|
||||
assert [k for k in ("req", "bytes", "p95", "4xx", "5xx") if f"data-line={k}>" in card] == [
|
||||
"req", "bytes", "p95", "4xx", "5xx"]
|
||||
# The cards sit in a grid with its own bottom gap, not CSS columns (whose last margin is lost).
|
||||
assert '<div class="node-grid" style="margin-bottom:1rem;">' in page and "column-width" not in page
|
||||
|
||||
|
||||
def test_a_router_traefik_stopped_reporting_is_set_apart_not_failing():
|
||||
|
||||
Reference in New Issue
Block a user