port must be between 1 and 65535, got 0.
' in page assert 'value="db"' in page and 'value="10.0.0.9"' in page and 'value="30"' in page def test_down_reason_says_why_in_a_few_words(): from steward.monitors.service import down_reason assert down_reason(_check(False)) == "503 Service Unavailable" # the probe's own error first assert down_reason(SimpleNamespace(error_msg=None, status_code=502, content_matched=None)) == "HTTP 502" assert down_reason(SimpleNamespace(error_msg=None, status_code=None, content_matched=False)) == \ "expected content not found" assert down_reason(None) is None async def test_a_down_monitor_says_since_when_and_why_in_the_list(app): row = _row(_mon("api", mid="m2"), "down", _check(False), 90.0) row.update(down_since=datetime.now(timezone.utc) - timedelta(minutes=12), down_reason="connection refused") async with app.test_request_context("/monitors/rows"): page = await render_template("monitors/rows.html", monitor_data=[row], counts={"up": 0, "degraded": 0, "down": 1, "pending": 0, "paused": 0}) page = " ".join(page.split()) assert re.search(r'Down · connection refused', page), page async def _widget(app, problems, rest, more=0, counts=None): counts = counts or {"up": len(rest), "degraded": 0, "down": len(problems), "pending": 0, "paused": 0} async with app.test_request_context("/monitors/widget"): session["user_id"] = "u1" return await render_template("monitors/widget.html", problems=problems, rest=rest, more=more, counts=counts, total=len(problems) + len(rest) + more, show_down_only=False, widget_id="1") async def test_the_widget_gives_a_verdict_then_problems_with_uptime_columns(app): """#5250: one home for uptime. A verdict, the down monitor first with why and since when, then each monitor's latency and 24h/7d/30d under one header.""" down = {**_row(_mon("api", mid="m2"), "down", _check(False)), "uptime": {"24h": 90.0, "7d": 97.5, "30d": 99.12}, "down_since": datetime.now(timezone.utc) - timedelta(minutes=12), "down_reason": "HTTP 503"} up = {**_row(_mon("web", mid="m1"), "up", _check(ms=31)), "uptime": {"24h": 100.0, "7d": 99.96}} page = await _widget(app, [down], [up], more=3) assert "1 of 5 monitors down." in page assert page.index(">api<") < page.index(">web<") assert 'href="/monitors/m2"' in page and "went down" in page and "12m ago" in page and "HTTP 503" in page assert page.count("