Akka.Cluster.Tools.Tests.MultiNode.PublishSubscribe.DistributedPubSubMediatorSpec.DistributedPubSubMediator_should_transfer_delta_correctly C# (CSharp) Method

DistributedPubSubMediator_should_transfer_delta_correctly() public method

        public void DistributedPubSubMediator_should_transfer_delta_correctly()
        {
            DistributedPubSubMediator_should_send_one_message_to_each_group();

            var firstAddress = Node(_first).Address;
            var secondAddress = Node(_second).Address;
            var thirdAddress = Node(_third).Address;

            RunOn(() =>
            {
                Mediator.Tell(new Tools.PublishSubscribe.Internal.Status(new Dictionary<Address, long>()));
                var deltaBuckets = ExpectMsg<Delta>().Buckets;
                Assert.Equal(3, deltaBuckets.Count());
                Assert.Equal(9, deltaBuckets.First(x => x.Owner == firstAddress).Content.Count);
                Assert.Equal(8, deltaBuckets.First(x => x.Owner == secondAddress).Content.Count);
                Assert.Equal(2, deltaBuckets.First(x => x.Owner == thirdAddress).Content.Count);
            }, _first);
            EnterBarrier("verified-initial-delta");

            // this test is configured with max-delta-elements = 500
            var many = 1010;
            RunOn(() =>
            {
                for (int i = 1; i <= many; i++)
                {
                    Mediator.Tell(new Put(CreateChatUser("u" + (i + 1000))));
                }

                Mediator.Tell(new Tools.PublishSubscribe.Internal.Status(new Dictionary<Address, long>()));
                var deltaBuckets1 = ExpectMsg<Delta>().Buckets;
                Assert.Equal(500, deltaBuckets1.Sum(x => x.Content.Count));

                Mediator.Tell(new Tools.PublishSubscribe.Internal.Status(deltaBuckets1.ToDictionary(b => b.Owner, b => b.Version)));
                var deltaBuckets2 = ExpectMsg<Delta>().Buckets;
                Assert.Equal(500, deltaBuckets2.Sum(x => x.Content.Count));

                Mediator.Tell(new Tools.PublishSubscribe.Internal.Status(deltaBuckets2.ToDictionary(b => b.Owner, b => b.Version)));
                var deltaBuckets3 = ExpectMsg<Delta>().Buckets;
                Assert.Equal(9 + 8 + 2 + many - 500 - 500, deltaBuckets3.Sum(x => x.Content.Count));

            }, _first);
            EnterBarrier("verified-delta-with-many");

            Within(TimeSpan.FromSeconds(10), () =>
            {
                AwaitCount(17 + many);
            });
            EnterBarrier("after-13");
        }