File size: 1,533 Bytes
6d20eab
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 unittest.mock import Mock
from app.services.risk_service import evaluate_intent, evaluate_healing_decision
from agentic_reliability_framework.core.governance.intents import ProvisionResourceIntent, ResourceType
from agentic_reliability_framework.core.models.event import ReliabilityEvent
from agentic_reliability_framework.core.governance.policy_engine import PolicyEngine


def test_evaluate_intent():
    engine = Mock()
    engine.calculate_risk.return_value = (0.5, "explanation", {"a": 1})
    intent = ProvisionResourceIntent(
        resource_type=ResourceType.VM,
        region="eastus",
        size="Standard_D2s_v3",
        requester="alice",
        environment="dev"
    )
    result = evaluate_intent(
        engine,
        intent,
        cost_estimate=100.0,
        policy_violations=[])
    assert result["risk_score"] == 0.5
    assert result["explanation"] == "explanation"
    engine.calculate_risk.assert_called_once()


def test_evaluate_healing_decision():
    event = ReliabilityEvent(
        component="test",
        latency_p99=600,
        error_rate=0.2,
        service_mesh="default"
    )
    policy_engine = PolicyEngine()
    # Temporarily disable decision engine to get raw actions
    policy_engine.use_decision_engine = False
    result = evaluate_healing_decision(event, policy_engine)
    assert "selected_action" in result
    assert "risk_score" in result
    # The result should have epistemic_signals (zeros) even without model
    assert result["epistemic_signals"] is not None