test(runtime): #678.2 #672 initial-state unreachable peer + strengthen Self_unreachable_is_ignored
This commit is contained in:
+22
-2
@@ -223,10 +223,30 @@ public sealed class DriverHostActorHistorizationRoleViewTests : RuntimeActorTest
|
||||
host.Tell(new ClusterEvent.UnreachableMember(MemberAt(Peer672)));
|
||||
AwaitAssert(() => hist.Published.ShouldBe([false, true]), duration: Timeout);
|
||||
|
||||
// And self "returning" does not close what the peer's loss opened.
|
||||
// Self "returning" is ignored too, and it does not close what the peer's loss opened. Events are
|
||||
// processed in order, so the peer's return (which MUST close the gate) is the only thing that may
|
||||
// appear next: had the self event published anything it would sit between `true` and `false`.
|
||||
host.Tell(new ClusterEvent.ReachableMember(MemberAt(Self672)));
|
||||
host.Tell(new ClusterEvent.ReachableMember(MemberAt(Peer672)));
|
||||
AwaitAssert(() => hist.Published.ShouldBe([false, true, false]), duration: Timeout);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A host that starts while its peer is ALREADY unreachable (the <c>InitialStateAsEvents</c> replay
|
||||
/// delivers the <c>UnreachableMember</c> before the first redundancy snapshot) must still treat that
|
||||
/// peer as unreachable when the snapshot naming it Primary finally arrives.
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public void A_peer_unreachable_before_the_first_snapshot_still_opens_capture()
|
||||
{
|
||||
var hist = new RecordingHistorizationView();
|
||||
IActorRef host = SpawnHost672(hist, others: null, captureWhilePrimaryUnreachable: true);
|
||||
|
||||
host.Tell(new ClusterEvent.UnreachableMember(MemberAt(Peer672)));
|
||||
host.Tell(Snapshot((Self672, RedundancyRole.Secondary), (Peer672, RedundancyRole.Primary)));
|
||||
AwaitAssert(() => hist.Published.ShouldBe([false, true, true]), duration: Timeout);
|
||||
|
||||
// Exactly one publication, and it is `true`: no spurious `false` from treating the peer as reachable.
|
||||
AwaitAssert(() => hist.Published.ShouldBe([true]), duration: Timeout);
|
||||
}
|
||||
|
||||
/// <summary><c>CaptureWhilePrimaryUnreachable = false</c> restores the pre-#672 behaviour.</summary>
|
||||
|
||||
Reference in New Issue
Block a user