Publish curated Unraid-AppOps-Gateway source from a194da2defbd709ea58bd4c9503966dbd37b11f2
This commit is contained in:
1 parent
2c5788da5d
commit
c5224725b7
11 files changed
+626
-18
No files matched your search
@@ -0,0 +1,93 @@
|
||||
"""Complete display inventory must never authorize recovery of fenced runners."""
|
||||
|
||||
from datetime import UTC, datetime, timedelta
|
||||
|
||||
from backend.app.core.config import settings
|
||||
from backend.tests.test_runner_scheduler_liveness_recovery import _configure
|
||||
|
||||
|
||||
def _snapshot(
|
||||
monkeypatch, *, busy=False, queued=False, apply_filter=True, incomplete=False
|
||||
):
|
||||
connector = _configure(monkeypatch)
|
||||
monkeypatch.setitem(
|
||||
settings.apis,
|
||||
"GITEA_RUNNER_TARGETS_JSON",
|
||||
'{"linux-validation":"itworx-ci-backend"}',
|
||||
)
|
||||
runners = [
|
||||
{
|
||||
"id": 71 + index,
|
||||
"name": f"itworx-ci-{profile}",
|
||||
"status": "online" if busy and profile == "backend" else "offline",
|
||||
"busy": busy and profile == "backend",
|
||||
"disabled": True,
|
||||
"labels": ["linux-validation"],
|
||||
"token": "fixture-secret",
|
||||
}
|
||||
for index, profile in enumerate(
|
||||
("checks", "backend", "frontend", "security", "browser", "build")
|
||||
)
|
||||
]
|
||||
requests = []
|
||||
|
||||
def request(path, params=None):
|
||||
requests.append((path, params))
|
||||
if path.endswith("/runners"):
|
||||
rows = [] if apply_filter and params.get("disabled") == "false" else runners
|
||||
return {"total_count": len(rows) + int(incomplete), "runners": rows}
|
||||
jobs = []
|
||||
if queued and params.get("status") == "queued":
|
||||
jobs = [
|
||||
{
|
||||
"id": 9,
|
||||
"status": "queued",
|
||||
"runner_id": 0,
|
||||
"labels": ["linux-validation"],
|
||||
"created_at": (
|
||||
datetime.now(UTC) - timedelta(minutes=20)
|
||||
).isoformat(),
|
||||
}
|
||||
]
|
||||
return {"total_count": len(jobs), "jobs": jobs}
|
||||
|
||||
monkeypatch.setattr(connector, "_request", request)
|
||||
return connector.snapshot(refresh=True), requests
|
||||
|
||||
|
||||
def test_standby_fleet_remains_visible_and_does_not_appear_broken(monkeypatch):
|
||||
result, requests = _snapshot(monkeypatch)
|
||||
assert len(result["runners"]) == 6
|
||||
assert result["summary"]["disabled"] == 6
|
||||
assert result["summary"]["available"] == 0
|
||||
assert result["inventory"] == {"scope": "all_registrations", "complete": True}
|
||||
assert result["severity"] == "healthy"
|
||||
assert result["recommendedAction"] is None
|
||||
assert "fixture-secret" not in repr(result)
|
||||
assert requests[0][1] == {"page": 1, "limit": 100}
|
||||
|
||||
|
||||
def test_fenced_busy_runner_is_counted_without_becoming_claimable(monkeypatch):
|
||||
result, _ = _snapshot(monkeypatch, busy=True)
|
||||
assert result["summary"]["busy"] == 1
|
||||
assert result["summary"]["online"] == 0
|
||||
assert result["summary"]["available"] == 0
|
||||
assert result["summary"]["disabled"] == 6
|
||||
assert result["runners"][1]["busy"] is True
|
||||
assert result["runners"][1]["disabled"] is True
|
||||
|
||||
|
||||
def test_disabled_runner_never_receives_restart_guidance_for_a_stalled_queue(
|
||||
monkeypatch,
|
||||
):
|
||||
result, _ = _snapshot(monkeypatch, queued=True, apply_filter=False)
|
||||
assert result["severity"] == "critical"
|
||||
assert result["queue"]["queued"] == 1
|
||||
assert result["recommendedAction"] is None
|
||||
|
||||
|
||||
def test_incomplete_runner_sample_is_not_reported_as_complete(monkeypatch):
|
||||
result, _ = _snapshot(monkeypatch, incomplete=True)
|
||||
assert len(result["runners"]) == 6
|
||||
assert result["inventory"] == {"scope": "all_registrations", "complete": False}
|
||||
assert result["recommendedAction"] is None
|
||||
Reference in new issue
Block a user