public void DomainEvents_must_be_produced_for_leader_changes() { var t1 = Converge(new Gossip(ImmutableSortedSet.Create(aUp, bUp, eJoining))); var t2 = Converge(new Gossip(ImmutableSortedSet.Create(bUp, eJoining))); var g1 = t1.Item1; var g2 = t2.Item1; var s2 = t2.Item2; ClusterEvent.DiffMemberEvents(g1, g2) .Should() .BeEquivalentTo(ImmutableList.Create(new ClusterEvent.MemberRemoved(aRemoved, MemberStatus.Up))); ClusterEvent.DiffUnreachable(g1, g2, selfDummyAddress) .Should() .BeEquivalentTo(ImmutableList.Create <ClusterEvent.UnreachableMember>()); ClusterEvent.DiffSeen(g1, g2, selfDummyAddress) .Should() .BeEquivalentTo(ImmutableList.Create(new ClusterEvent.SeenChanged(true, s2.Select(a => a.Address).ToImmutableHashSet()))); ClusterEvent.DiffLeader(g1, g2, selfDummyAddress) .Should() .BeEquivalentTo(ImmutableList.Create(new ClusterEvent.LeaderChanged(bUp.Address))); }
public void DomainEventMustBeProducedForLeaderChanges() { var t1 = Converge(new Gossip(ImmutableSortedSet.Create(aUp, bUp, eJoining))); var t2 = Converge(new Gossip(ImmutableSortedSet.Create(bUp, eJoining))); var g1 = t1.Item1; var g2 = t2.Item1; var s2 = t2.Item2; Assert.Equal(ImmutableList.Create(new ClusterEvent.MemberRemoved(aRemoved, MemberStatus.Up)), ClusterEvent.DiffMemberEvents(g1, g2)); Assert.Equal(ImmutableList.Create <ClusterEvent.UnreachableMember>(), ClusterEvent.DiffUnreachable(g1, g2)); Assert.Equal(ImmutableList.Create(new ClusterEvent.SeenChanged(true, s2.Select(a => a.Address).ToImmutableHashSet())), ClusterEvent.DiffSeen(g1, g2, selfDummyAddress)); Assert.Equal(ImmutableList.Create(new ClusterEvent.LeaderChanged(bUp.Address)), ClusterEvent.DiffLeader(g1, g2, selfDummyAddress)); }