fix(notification-outbox): give KPI response a failure shape; log status-query faults
This commit is contained in:
@@ -323,6 +323,8 @@ public class NotificationOutboxActorQueryTests : TestKit
|
||||
|
||||
var response = ExpectMsg<NotificationKpiResponse>();
|
||||
Assert.Equal("corr-11", response.CorrelationId);
|
||||
Assert.True(response.Success);
|
||||
Assert.Null(response.ErrorMessage);
|
||||
Assert.Equal(7, response.QueueDepth);
|
||||
Assert.Equal(2, response.StuckCount);
|
||||
Assert.Equal(3, response.ParkedCount);
|
||||
@@ -332,4 +334,27 @@ public class NotificationOutboxActorQueryTests : TestKit
|
||||
_repository.Received(1).ComputeKpisAsync(
|
||||
Arg.Any<DateTimeOffset>(), Arg.Any<DateTimeOffset>(), Arg.Any<CancellationToken>());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void KpiRequest_RepositoryThrows_RepliesFailureResponse()
|
||||
{
|
||||
_repository.ComputeKpisAsync(
|
||||
Arg.Any<DateTimeOffset>(), Arg.Any<DateTimeOffset>(), Arg.Any<CancellationToken>())
|
||||
.ThrowsAsync(new InvalidOperationException("kpi db down"));
|
||||
var actor = CreateActor();
|
||||
|
||||
actor.Tell(new NotificationKpiRequest("corr-12"), TestActor);
|
||||
|
||||
// A repository fault yields a failure NotificationKpiResponse, not a Status.Failure.
|
||||
var response = ExpectMsg<NotificationKpiResponse>();
|
||||
Assert.Equal("corr-12", response.CorrelationId);
|
||||
Assert.False(response.Success);
|
||||
Assert.NotNull(response.ErrorMessage);
|
||||
Assert.Contains("kpi db down", response.ErrorMessage);
|
||||
Assert.Equal(0, response.QueueDepth);
|
||||
Assert.Equal(0, response.StuckCount);
|
||||
Assert.Equal(0, response.ParkedCount);
|
||||
Assert.Equal(0, response.DeliveredLastInterval);
|
||||
Assert.Null(response.OldestPendingAge);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user