Add tags to HealthReportEntry if an exception occurs
This commit is contained in:
parent
15d5ffebca
commit
d1d9b97f77
|
|
@ -125,7 +125,8 @@ namespace Microsoft.Extensions.Diagnostics.HealthChecks
|
|||
description: "A timeout occurred while running check.",
|
||||
duration: duration,
|
||||
exception: ex,
|
||||
data: null);
|
||||
data: null,
|
||||
tags: registration.Tags);
|
||||
|
||||
Log.HealthCheckError(_logger, registration, ex, duration);
|
||||
}
|
||||
|
|
@ -139,7 +140,8 @@ namespace Microsoft.Extensions.Diagnostics.HealthChecks
|
|||
description: ex.Message,
|
||||
duration: duration,
|
||||
exception: ex,
|
||||
data: null);
|
||||
data: null,
|
||||
tags: registration.Tags);
|
||||
|
||||
Log.HealthCheckError(_logger, registration, ex, duration);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -113,6 +113,47 @@ namespace Microsoft.Extensions.Diagnostics.HealthChecks
|
|||
});
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task CheckAsync_TagsArePresentInHealthReportEntryIfExceptionOccurs()
|
||||
{
|
||||
const string ExceptionMessage = "exception-message";
|
||||
const string OperationCancelledMessage = "operation-cancelled-message";
|
||||
var exceptionTags = new[] { "unhealthy-check-tag" };
|
||||
var operationExceptionTags = new[] { "degraded-check-tag" };
|
||||
|
||||
// Arrange
|
||||
var service = CreateHealthChecksService(b =>
|
||||
{
|
||||
b.AddAsyncCheck("ExceptionCheck", _ => throw new Exception(ExceptionMessage), exceptionTags);
|
||||
b.AddAsyncCheck("OperationExceptionCheck", _ => throw new OperationCanceledException(OperationCancelledMessage), operationExceptionTags);
|
||||
});
|
||||
|
||||
// Act
|
||||
var results = await service.CheckHealthAsync();
|
||||
|
||||
// Assert
|
||||
Assert.Collection(
|
||||
results.Entries.OrderBy(kvp => kvp.Key),
|
||||
actual =>
|
||||
{
|
||||
Assert.Equal("ExceptionCheck", actual.Key);
|
||||
Assert.Equal(ExceptionMessage, actual.Value.Description);
|
||||
Assert.Equal(HealthStatus.Unhealthy, actual.Value.Status);
|
||||
Assert.Equal(ExceptionMessage, actual.Value.Exception.Message);
|
||||
Assert.Empty(actual.Value.Data);
|
||||
Assert.Equal(actual.Value.Tags, exceptionTags);
|
||||
},
|
||||
actual =>
|
||||
{
|
||||
Assert.Equal("OperationExceptionCheck", actual.Key);
|
||||
Assert.Equal("A timeout occurred while running check.", actual.Value.Description);
|
||||
Assert.Equal(HealthStatus.Unhealthy, actual.Value.Status);
|
||||
Assert.Equal(OperationCancelledMessage, actual.Value.Exception.Message);
|
||||
Assert.Empty(actual.Value.Data);
|
||||
Assert.Equal(actual.Value.Tags, operationExceptionTags);
|
||||
});
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task CheckAsync_RunsFilteredChecksAndAggregatesResultsAsync()
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue