示例#1
0
        public void WhenInstancesRemoved_ShouldOnlyDistributeAcrossRemainingInstances()
        {
            var strategy = new SingleInstanceRoundRobinDistributionStrategy("endpointA", DistributionStrategyScope.Send);

            var instances = new[]
            {
                "1",
                "2",
                "3"
            };

            var distributionContext = new DistributionContext(instances, null, null, null, null, null);
            var result = new List <string>
            {
                strategy.SelectDestination(distributionContext),
                strategy.SelectDestination(distributionContext)
            };

            instances           = instances.Take(2).ToArray(); // remove last instance.
            distributionContext = new DistributionContext(instances, null, null, null, null, null);
            result.Add(strategy.SelectDestination(distributionContext));

            Assert.That(result.Count, Is.EqualTo(3));
            Assert.That(result, Has.Exactly(2).EqualTo(instances[0]));
            Assert.That(result, Has.Exactly(1).EqualTo(instances[1]));
        }
示例#2
0
        public void WhenNewInstancesAdded_ShouldIncludeAllInstancesInDistribution()
        {
            var strategy = new SingleInstanceRoundRobinDistributionStrategy("endpointA", DistributionStrategyScope.Send);

            var instances = new[]
            {
                "1",
                "2",
            };

            var distributionContext = new DistributionContext(instances, null, null, null, null, null);
            var result = new List <string>
            {
                strategy.SelectDestination(distributionContext),
                strategy.SelectDestination(distributionContext)
            };

            instances           = instances.Concat(new[] { "3" }).ToArray(); // add new instance
            distributionContext = new DistributionContext(instances, null, null, null, null, null);
            result.Add(strategy.SelectDestination(distributionContext));

            Assert.That(result.Count, Is.EqualTo(3));
            Assert.That(result, Has.Exactly(1).EqualTo(instances[0]));
            Assert.That(result, Has.Exactly(1).EqualTo(instances[1]));
            Assert.That(result, Has.Exactly(1).EqualTo(instances[2]));
        }
        public void ShouldRestartAtFirstInstance()
        {
            var strategy = new SingleInstanceRoundRobinDistributionStrategy("endpointA", DistributionStrategyScope.Send);

            var instances = new[]
            {
                "1",
                "2",
                "3"
            };

            var result = new List <string>();

            result.Add(strategy.SelectReceiver(instances));
            result.Add(strategy.SelectReceiver(instances));
            result.Add(strategy.SelectReceiver(instances));
            result.Add(strategy.SelectReceiver(instances));

            Assert.That(result.Last(), Is.EqualTo(result.First()));
        }
示例#4
0
        public void ShouldRestartAtFirstInstance()
        {
            var strategy = new SingleInstanceRoundRobinDistributionStrategy("endpointA", DistributionStrategyScope.Send);

            var instances = new[]
            {
                "1",
                "2",
                "3"
            };

            var distributionContext = new DistributionContext(instances, null, null, null, null, null);
            var result = new List <string>
            {
                strategy.SelectDestination(distributionContext),
                strategy.SelectDestination(distributionContext),
                strategy.SelectDestination(distributionContext),
                strategy.SelectDestination(distributionContext)
            };

            Assert.That(result.Last(), Is.EqualTo(result.First()));
        }
        public void ShouldRoundRobinOverAllProvidedInstances()
        {
            var strategy = new SingleInstanceRoundRobinDistributionStrategy("endpointA", DistributionStrategyScope.Send);

            var instances = new[]
            {
                "1",
                "2",
                "3"
            };

            var result = new List <string>();

            result.Add(strategy.SelectReceiver(instances));
            result.Add(strategy.SelectReceiver(instances));
            result.Add(strategy.SelectReceiver(instances));

            Assert.That(result.Count, Is.EqualTo(3));
            Assert.That(result, Has.Exactly(1).EqualTo(instances[0]));
            Assert.That(result, Has.Exactly(1).EqualTo(instances[1]));
            Assert.That(result, Has.Exactly(1).EqualTo(instances[2]));
        }
示例#6
0
        public void ShouldRoundRobinOverAllProvidedInstances()
        {
            var strategy = new SingleInstanceRoundRobinDistributionStrategy("endpointA", DistributionStrategyScope.Send);

            var instances = new[]
            {
                "1",
                "2",
                "3"
            };

            var distributionContext = new DistributionContext(instances, null, null, null, null, null);
            var result = new List <string>
            {
                strategy.SelectDestination(distributionContext),
                strategy.SelectDestination(distributionContext),
                strategy.SelectDestination(distributionContext)
            };

            Assert.That(result.Count, Is.EqualTo(3));
            Assert.That(result, Has.Exactly(1).EqualTo(instances[0]));
            Assert.That(result, Has.Exactly(1).EqualTo(instances[1]));
            Assert.That(result, Has.Exactly(1).EqualTo(instances[2]));
        }