コード例 #1
0
 public static void HealthCheckEnd(ILogger logger, IHealthCheck healthCheck, HealthCheckResult result, TimeSpan duration)
 {
     _healthCheckEnd(logger, healthCheck.Name, duration.TotalMilliseconds, result.Status, null);
 }
コード例 #2
0
        public async Task CheckAsync_RunsAllChecksAndAggregatesResultsAsync()
        {
            const string DataKey          = "Foo";
            const string DataValue        = "Bar";
            const string DegradedMessage  = "I'm not feeling so good";
            const string UnhealthyMessage = "Halp!";
            const string HealthyMessage   = "Everything is A-OK";
            var          exception        = new Exception("Things are pretty bad!");
            var          healthyCheckTags = new List <string> {
                "healthy-check-tag"
            };
            var degradedCheckTags = new List <string> {
                "degraded-check-tag"
            };
            var unhealthyCheckTags = new List <string> {
                "unhealthy-check-tag"
            };

            // Arrange
            var data = new Dictionary <string, object>()
            {
                { DataKey, DataValue }
            };

            var service = CreateHealthChecksService(b =>
            {
                b.AddAsyncCheck("HealthyCheck", _ => Task.FromResult(HealthCheckResult.Healthy(HealthyMessage, data)), healthyCheckTags);
                b.AddAsyncCheck("DegradedCheck", _ => Task.FromResult(HealthCheckResult.Degraded(DegradedMessage)), degradedCheckTags);
                b.AddAsyncCheck("UnhealthyCheck", _ => Task.FromResult(HealthCheckResult.Unhealthy(UnhealthyMessage, exception)), unhealthyCheckTags);
            });

            // Act
            var results = await service.CheckHealthAsync();

            // Assert
            Assert.Collection(
                results.Entries.OrderBy(kvp => kvp.Key),
                actual =>
            {
                Assert.Equal("DegradedCheck", actual.Key);
                Assert.Equal(DegradedMessage, actual.Value.Description);
                Assert.Equal(HealthStatus.Degraded, actual.Value.Status);
                Assert.Null(actual.Value.Exception);
                Assert.Empty(actual.Value.Data);
                Assert.Equal(actual.Value.Tags, degradedCheckTags);
            },
                actual =>
            {
                Assert.Equal("HealthyCheck", actual.Key);
                Assert.Equal(HealthyMessage, actual.Value.Description);
                Assert.Equal(HealthStatus.Healthy, actual.Value.Status);
                Assert.Null(actual.Value.Exception);
                Assert.Collection(actual.Value.Data, item =>
                {
                    Assert.Equal(DataKey, item.Key);
                    Assert.Equal(DataValue, item.Value);
                });
                Assert.Equal(actual.Value.Tags, healthyCheckTags);
            },
                actual =>
            {
                Assert.Equal("UnhealthyCheck", actual.Key);
                Assert.Equal(UnhealthyMessage, actual.Value.Description);
                Assert.Equal(HealthStatus.Unhealthy, actual.Value.Status);
                Assert.Same(exception, actual.Value.Exception);
                Assert.Empty(actual.Value.Data);
                Assert.Equal(actual.Value.Tags, unhealthyCheckTags);
            });
        }
コード例 #3
0
 public Task <HealthCheckResult> CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default)
 {
     return(Task.FromResult(HealthCheckResult.Healthy()));
 }