Example #1
0
        public void DataEnvelope_must_handle_pruning_transitions()
        {
            var g1 = GCounter.Empty.Increment(node1, 1);
            var d1 = new DataEnvelope(g1);

            var d2 = d1.InitRemovedNodePruning(node1, node2);

            d2.Pruning[node1].Should().BeOfType <PruningInitialized>();
            ((PruningInitialized)d2.Pruning[node1]).Owner.Should().Be(node2);

            // bug check for https://github.com/akkadotnet/akka.net/issues/4200
            var merged = d1.Merge(d2);

            merged.Data.As <GCounter>().Value.Should().Be(1);

            var d3 = d2.AddSeen(node3.Address);

            ((PruningInitialized)d3.Pruning[node1]).Seen.Should().BeEquivalentTo(node3.Address);

            var d4 = d3.Prune(node1, new PruningPerformed(obsoleteTimeInFuture));

            ((GCounter)d4.Data).ModifiedByNodes.Should().BeEquivalentTo(node2);

            // bug check for https://github.com/akkadotnet/akka.net/issues/4200
            var merged2 = d2.Merge(d4);

            merged2.Data.As <GCounter>().Value.Should().Be(1);
            merged2.NeedPruningFrom(node1).Should().BeFalse();
            merged2.Pruning[node1].Should().BeOfType <PruningPerformed>();
        }
Example #2
0
        public void DataEnvelope_must_handle_pruning_transitions()
        {
            var g1 = GCounter.Empty.Increment(node1, 1);
            var d1 = new DataEnvelope(g1);

            var d2 = d1.InitRemovedNodePruning(node1, node2);

            d2.Pruning[node1].Should().BeOfType <PruningInitialized>();
            ((PruningInitialized)d2.Pruning[node1]).Owner.Should().Be(node2);

            var d3 = d2.AddSeen(node3.Address);

            ((PruningInitialized)d3.Pruning[node1]).Seen.Should().BeEquivalentTo(node3.Address);

            var d4 = d3.Prune(node1, new PruningPerformed(obsoleteTimeInFuture));

            ((GCounter)d4.Data).ModifiedByNodes.Should().BeEquivalentTo(node2);
        }