fix(r2-10): breaker-close marker + IsBreakerOpen on ResilienceStatusSnapshot
This commit is contained in:
+35
@@ -55,6 +55,41 @@ public sealed class DriverResilienceStatusTrackerTests
|
||||
tracker.TryGet("drv", "host")!.LastBreakerOpenUtc.ShouldBe(Now);
|
||||
}
|
||||
|
||||
/// <summary>Verifies that RecordBreakerClose stamps the close timestamp.</summary>
|
||||
[Fact]
|
||||
public void RecordBreakerClose_StampsCloseTime()
|
||||
{
|
||||
var tracker = new DriverResilienceStatusTracker();
|
||||
tracker.RecordBreakerOpen("drv", "host", Now);
|
||||
|
||||
tracker.RecordBreakerClose("drv", "host", Now.AddSeconds(20));
|
||||
|
||||
tracker.TryGet("drv", "host")!.LastBreakerClosedUtc.ShouldBe(Now.AddSeconds(20));
|
||||
}
|
||||
|
||||
/// <summary>Verifies that IsBreakerOpen tracks open → close → reopen transitions.</summary>
|
||||
[Fact]
|
||||
public void IsBreakerOpen_TracksOpenCloseReopen()
|
||||
{
|
||||
var tracker = new DriverResilienceStatusTracker();
|
||||
|
||||
// A snapshot with no breaker event is never "open".
|
||||
tracker.RecordFailure("drv", "host", Now);
|
||||
tracker.TryGet("drv", "host")!.IsBreakerOpen.ShouldBeFalse();
|
||||
|
||||
// Opened.
|
||||
tracker.RecordBreakerOpen("drv", "host", Now.AddSeconds(1));
|
||||
tracker.TryGet("drv", "host")!.IsBreakerOpen.ShouldBeTrue();
|
||||
|
||||
// Closed later → no longer open.
|
||||
tracker.RecordBreakerClose("drv", "host", Now.AddSeconds(2));
|
||||
tracker.TryGet("drv", "host")!.IsBreakerOpen.ShouldBeFalse();
|
||||
|
||||
// Re-opened after the last close → open again.
|
||||
tracker.RecordBreakerOpen("drv", "host", Now.AddSeconds(3));
|
||||
tracker.TryGet("drv", "host")!.IsBreakerOpen.ShouldBeTrue();
|
||||
}
|
||||
|
||||
/// <summary>Verifies that RecordRecycle populates the LastRecycleUtc timestamp.</summary>
|
||||
[Fact]
|
||||
public void RecordRecycle_Populates_LastRecycleUtc()
|
||||
|
||||
Reference in New Issue
Block a user