add slot ttl output with effective timeout config

This commit is contained in:
Abel Luck 2026-02-27 16:43:52 +01:00
parent d8afde8b18
commit 8fdf2d5e5b
5 changed files with 211 additions and 4 deletions

View file

@ -2,10 +2,12 @@
from __future__ import annotations
from datetime import UTC, datetime, timedelta
import pytest
from nix_builder_autoscaler import cli
from nix_builder_autoscaler.cli import _parse_args, _print_status_summary
from nix_builder_autoscaler.cli import _parse_args, _print_slots, _print_status_summary, _slot_ttl
def test_parse_args_without_command_prints_help_and_exits_zero(
@ -95,3 +97,55 @@ def test_bulk_unquarantine_only_targets_error_slots(monkeypatch: pytest.MonkeyPa
assert summary["succeeded"] == 1
assert summary["failed"] == 0
assert summary["skipped"] == 1
def test_slot_ttl_ready_pinned_at_min_slots() -> None:
now = datetime.now(UTC)
slot = {
"state": "ready",
"lease_count": 0,
"last_state_change": (now - timedelta(seconds=60)).isoformat(),
}
policy = {
"capacity": {
"min_slots": 1,
"idle_scale_down_seconds": 900,
"launch_timeout_seconds": 300,
"boot_timeout_seconds": 300,
"binding_timeout_seconds": 180,
"drain_timeout_seconds": 120,
"terminating_timeout_seconds": 300,
},
"scheduler": {"reconcile_seconds": 15.0},
}
assert _slot_ttl(slot, policy, active_slots=1) == "pinned"
def test_print_slots_includes_ttl_column(capsys: pytest.CaptureFixture[str]) -> None:
now = datetime.now(UTC)
slots = [
{
"slot_id": "slot001",
"state": "launching",
"instance_id": "i-123",
"instance_ip": None,
"lease_count": 0,
"last_state_change": (now - timedelta(seconds=20)).isoformat(),
}
]
policy = {
"capacity": {
"min_slots": 0,
"idle_scale_down_seconds": 900,
"launch_timeout_seconds": 300,
"boot_timeout_seconds": 300,
"binding_timeout_seconds": 180,
"drain_timeout_seconds": 120,
"terminating_timeout_seconds": 300,
},
"scheduler": {"reconcile_seconds": 15.0},
}
_print_slots(slots, policy)
out = capsys.readouterr().out
assert "ttl" in out
assert "slot001" in out