< Summary

Information
Class: Intentum.AspNetCore.HealthChecks.PolicyEngineHealthCheck
Assembly: Intentum.AspNetCore
File(s): /home/runner/work/Intentum/Intentum/src/Intentum.AspNetCore/HealthChecks/PolicyEngineHealthCheck.cs
Line coverage
68%
Covered lines: 15
Uncovered lines: 7
Coverable lines: 22
Total lines: 43
Line coverage: 68.1%
Branch coverage
50%
Covered branches: 1
Total branches: 2
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
CheckHealthAsync(...)50%2268.18%

File(s)

/home/runner/work/Intentum/Intentum/src/Intentum.AspNetCore/HealthChecks/PolicyEngineHealthCheck.cs

#LineLine coverage
 1using Intentum.Core.Intents;
 2using Intentum.Runtime.Engine;
 3using Intentum.Runtime.Policy;
 4using Microsoft.Extensions.Diagnostics.HealthChecks;
 5
 6namespace Intentum.AspNetCore.HealthChecks;
 7
 8/// <summary>
 9/// Health check for policy engine.
 10/// </summary>
 11public sealed class PolicyEngineHealthCheck : IHealthCheck
 12{
 13    public Task<HealthCheckResult> CheckHealthAsync(
 14        HealthCheckContext context,
 15        CancellationToken cancellationToken = default)
 116    {
 17        try
 118        {
 119            var testIntent = new Intent(
 120                Name: "HealthCheckIntent",
 121                Signals: new List<IntentSignal>(),
 122                Confidence: IntentConfidence.FromScore(0.9));
 23
 124            var testPolicy = new IntentPolicy()
 125                .AddRule(new PolicyRule(
 126                    "TestRule",
 127                    i => i.Confidence.Level == "Certain",
 128                    PolicyDecision.Allow));
 29
 130            var decision = IntentPolicyEngine.Evaluate(testIntent, testPolicy);
 131            if (decision == PolicyDecision.Allow)
 132                return Task.FromResult(HealthCheckResult.Healthy("Policy engine is healthy"));
 033            return Task.FromResult(HealthCheckResult.Degraded(
 034                $"Policy engine returned unexpected decision: {decision}"));
 35        }
 036        catch (Exception ex)
 037        {
 038            return Task.FromResult(HealthCheckResult.Unhealthy(
 039                "Policy engine health check failed",
 040                ex));
 41        }
 142    }
 43}