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.",
|
description: "A timeout occurred while running check.",
|
||||||
duration: duration,
|
duration: duration,
|
||||||
exception: ex,
|
exception: ex,
|
||||||
data: null);
|
data: null,
|
||||||
|
tags: registration.Tags);
|
||||||
|
|
||||||
Log.HealthCheckError(_logger, registration, ex, duration);
|
Log.HealthCheckError(_logger, registration, ex, duration);
|
||||||
}
|
}
|
||||||
|
|
@ -139,7 +140,8 @@ namespace Microsoft.Extensions.Diagnostics.HealthChecks
|
||||||
description: ex.Message,
|
description: ex.Message,
|
||||||
duration: duration,
|
duration: duration,
|
||||||
exception: ex,
|
exception: ex,
|
||||||
data: null);
|
data: null,
|
||||||
|
tags: registration.Tags);
|
||||||
|
|
||||||
Log.HealthCheckError(_logger, registration, ex, duration);
|
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]
|
[Fact]
|
||||||
public async Task CheckAsync_RunsFilteredChecksAndAggregatesResultsAsync()
|
public async Task CheckAsync_RunsFilteredChecksAndAggregatesResultsAsync()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue