add slot ttl output with effective timeout config
This commit is contained in:
parent
d8afde8b18
commit
8fdf2d5e5b
5 changed files with 211 additions and 4 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue