コード例 #1
0
        public void DomainEvents_must_be_produced_for_members_becoming_reachable_after_unreachable()
        {
            var reachability1 = Reachability.Empty.
                                Unreachable(aUp.UniqueAddress, cUp.UniqueAddress).
                                Reachable(aUp.UniqueAddress, cUp.UniqueAddress).
                                Unreachable(aUp.UniqueAddress, eUp.UniqueAddress).
                                Unreachable(aUp.UniqueAddress, bUp.UniqueAddress);
            var g1            = new Gossip(ImmutableSortedSet.Create(aUp, bUp, cUp, eUp), new GossipOverview(reachability1));
            var reachability2 = reachability1.
                                Unreachable(aUp.UniqueAddress, cUp.UniqueAddress).
                                Reachable(aUp.UniqueAddress, bUp.UniqueAddress);
            var g2 = new Gossip(ImmutableSortedSet.Create(aUp, cUp, bUp, eUp), new GossipOverview(reachability2));

            ClusterEvent.DiffUnreachable(g1, g2, selfDummyAddress)
            .Should()
            .BeEquivalentTo(ImmutableList.Create(new ClusterEvent.UnreachableMember(cUp)));
            // never include self member in unreachable
            ClusterEvent.DiffUnreachable(g1, g2, cUp.UniqueAddress)
            .Should()
            .BeEquivalentTo(ImmutableList.Create <ClusterEvent.UnreachableMember>());

            ClusterEvent.DiffReachable(g1, g2, selfDummyAddress)
            .Should()
            .BeEquivalentTo(ImmutableList.Create(new ClusterEvent.ReachableMember(bUp)));
            // never include self member in reachable
            ClusterEvent.DiffReachable(g1, g2, bUp.UniqueAddress)
            .Should()
            .BeEquivalentTo(ImmutableList.Create <ClusterEvent.ReachableMember>());
        }
コード例 #2
0
        public void DomainEventMustBeProducedForMembersBecomingReachableAfterUnreachable()
        {
            var reachability1 = Reachability.Empty.
                                Unreachable(aUp.UniqueAddress, cUp.UniqueAddress).Reachable(aUp.UniqueAddress, cUp.UniqueAddress).
                                Unreachable(aUp.UniqueAddress, eUp.UniqueAddress).
                                Unreachable(aUp.UniqueAddress, bUp.UniqueAddress);
            var g1            = new Gossip(ImmutableSortedSet.Create(aUp, bUp, cUp, eUp), new GossipOverview(reachability1));
            var reachability2 = reachability1.
                                Unreachable(aUp.UniqueAddress, cUp.UniqueAddress).
                                Reachable(aUp.UniqueAddress, bUp.UniqueAddress);
            var g2 = new Gossip(ImmutableSortedSet.Create(aUp, cUp, bUp, eUp), new GossipOverview(reachability2));

            Assert.Equal(ImmutableList.Create(new ClusterEvent.UnreachableMember(cUp)), ClusterEvent.DiffUnreachable(g1, g2));
            Assert.Equal(ImmutableList.Create(new ClusterEvent.ReachableMember(bUp)), ClusterEvent.DiffReachable(g1, g2));
        }