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
|