public static void HealthCheckEnd(ILogger logger, IHealthCheck healthCheck, HealthCheckResult result, TimeSpan duration) { _healthCheckEnd(logger, healthCheck.Name, duration.TotalMilliseconds, result.Status, null); }
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); }); }
public Task <HealthCheckResult> CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default) { return(Task.FromResult(HealthCheckResult.Healthy())); }