feat(agent-call): implement remediation plan
This commit is contained in:
@@ -4,6 +4,7 @@ import copy
|
||||
import json
|
||||
import tempfile
|
||||
import unittest
|
||||
from datetime import timedelta
|
||||
from pathlib import Path
|
||||
|
||||
from agent_call.core import (
|
||||
@@ -104,6 +105,53 @@ class AgentCallTests(unittest.TestCase):
|
||||
attempts = self.service.store.one("SELECT COUNT(*) AS n FROM attempts")["n"]
|
||||
self.assertEqual(calls, 1)
|
||||
self.assertEqual(attempts, 1)
|
||||
self.assertEqual(
|
||||
self.service.store.one(
|
||||
"SELECT status FROM executions WHERE tenant_id=? AND execution_id=?",
|
||||
("tenant-demo", "exec_once"),
|
||||
)["status"],
|
||||
"completed",
|
||||
)
|
||||
|
||||
def test_unhealthy_cell_isolated_without_blocking_healthy_capacity(self) -> None:
|
||||
self.service.set_cell_health("cell-a", False)
|
||||
self.assertTrue(self.service.ready())
|
||||
snapshot = self.run_command(self.command("cmd_healthy_cell"))
|
||||
call = self.service.get_call("tenant-demo", snapshot["call_id"])
|
||||
self.assertEqual(call["call_state"], "ended")
|
||||
self.assertEqual(
|
||||
self.service.store.one(
|
||||
"SELECT cell_id FROM calls WHERE call_id=?", (snapshot["call_id"],)
|
||||
)["cell_id"],
|
||||
"cell-b",
|
||||
)
|
||||
|
||||
def test_missing_tenant_route_closes_readiness(self) -> None:
|
||||
self.service._unrouteable_tenants.add("tenant-demo")
|
||||
snapshot = self.service.readiness()
|
||||
self.assertFalse(snapshot["checks"]["routes"])
|
||||
self.assertFalse(snapshot["ready"])
|
||||
|
||||
def test_expired_scheduler_lease_fences_old_instance(self) -> None:
|
||||
body = self.command("cmd_lease_fence")
|
||||
self.service.publish_execute(body)
|
||||
self.service.ingest_commands()
|
||||
second = AgentCallService(
|
||||
db_path=Path(self.temp.name) / "executor.sqlite3",
|
||||
object_dir=Path(self.temp.name) / "objects-second",
|
||||
broker=self.broker,
|
||||
)
|
||||
try:
|
||||
with self.service.store.tx() as con:
|
||||
con.execute(
|
||||
"UPDATE leases SET expires_at=? WHERE lease_name='scheduler'",
|
||||
(iso(utcnow() - timedelta(seconds=1)),),
|
||||
)
|
||||
self.assertEqual(second.schedule_once(), 1)
|
||||
self.assertEqual(self.service.schedule_once(), 0)
|
||||
second.wait_for_idle()
|
||||
finally:
|
||||
second.stop()
|
||||
|
||||
def test_controls_use_cas_and_old_commands_do_not_resume(self) -> None:
|
||||
pause = self.service.control_task(
|
||||
|
||||
Reference in New Issue
Block a user