File size: 1,196 Bytes
b641d3d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from pydantic import ValidationError

from server.models import Action, Observation, SystemMetrics


def test_system_metrics_rejects_success_rate_above_one() -> None:
    try:
        SystemMetrics(
            gateway_success_rate=1.2,
            gateway_p99_latency_ms=20,
            queue_depth=0,
            worker_restart_count=0,
            consumer_stall_count=0,
        )
    except ValidationError:
        return
    raise AssertionError("Expected ValidationError for success rate > 1.0")


def test_observation_roundtrip() -> None:
    original = Observation(
        command_output="ok",
        metrics=SystemMetrics(
            gateway_success_rate=0.7,
            gateway_p99_latency_ms=123,
            queue_depth=3,
            worker_restart_count=1,
            consumer_stall_count=2,
        ),
        process_status={"gateway": "running pid=42"},
    )

    restored = Observation.model_validate_json(original.model_dump_json())
    assert restored == original


def test_action_rejects_empty_command() -> None:
    try:
        Action(command="   ")
    except ValidationError:
        return
    raise AssertionError("Expected ValidationError for empty command")