public void Should_GetAllSettingsFromBaseProfile_When_DerivedProfileHasNoSettings()
        {
            var go  = new GraphOptions();
            var lbp = new RoundRobinPolicy();
            var sep = new ConstantSpeculativeExecutionPolicy(1000, 1);
            var rp  = new LoggingRetryPolicy(new DefaultRetryPolicy());
            var baseProfileBuilder = new ExecutionProfileBuilder();

            baseProfileBuilder
            .WithLoadBalancingPolicy(lbp)
            .WithSpeculativeExecutionPolicy(sep)
            .WithSerialConsistencyLevel(ConsistencyLevel.LocalSerial)
            .WithConsistencyLevel(ConsistencyLevel.Quorum)
            .WithReadTimeoutMillis(3000)
            .WithGraphOptions(go)
            .WithRetryPolicy(rp);

            var baseProfile = baseProfileBuilder.Build();

            var profile = new ExecutionProfile(baseProfile, new ExecutionProfileBuilder().Build());

            Assert.AreSame(lbp, profile.LoadBalancingPolicy);
            Assert.AreSame(sep, profile.SpeculativeExecutionPolicy);
            Assert.AreSame(rp, profile.RetryPolicy);
            Assert.AreEqual(3000, profile.ReadTimeoutMillis);
            Assert.AreEqual(ConsistencyLevel.LocalSerial, profile.SerialConsistencyLevel);
            Assert.AreEqual(ConsistencyLevel.Quorum, profile.ConsistencyLevel);
            Assert.AreEqual(go, profile.GraphOptions);
        }
        public void Should_GetNoSettingFromBaseProfile_When_DerivedProfileHasAllSettings()
        {
            var go                 = new GraphOptions().SetName("ee");
            var goProfile          = new GraphOptions().SetName("tt");
            var lbp                = new RoundRobinPolicy();
            var sep                = new ConstantSpeculativeExecutionPolicy(1000, 1);
            var rp                 = new LoggingRetryPolicy(new DefaultRetryPolicy());
            var sepProfile         = new ConstantSpeculativeExecutionPolicy(200, 50);
            var lbpProfile         = new TokenAwarePolicy(new DCAwareRoundRobinPolicy());
            var rpProfile          = new LoggingRetryPolicy(new IdempotenceAwareRetryPolicy(new DefaultRetryPolicy()));
            var baseProfileBuilder = new ExecutionProfileBuilder();

            baseProfileBuilder
            .WithLoadBalancingPolicy(lbp)
            .WithSpeculativeExecutionPolicy(sep)
            .WithSerialConsistencyLevel(ConsistencyLevel.LocalSerial)
            .WithConsistencyLevel(ConsistencyLevel.Quorum)
            .WithReadTimeoutMillis(3000)
            .WithGraphOptions(go)
            .WithRetryPolicy(rp);

            var baseProfile = baseProfileBuilder.Build();

            var derivedProfileBuilder = new ExecutionProfileBuilder();

            derivedProfileBuilder
            .WithLoadBalancingPolicy(lbpProfile)
            .WithSpeculativeExecutionPolicy(sepProfile)
            .WithSerialConsistencyLevel(ConsistencyLevel.Serial)
            .WithConsistencyLevel(ConsistencyLevel.LocalQuorum)
            .WithReadTimeoutMillis(5000)
            .WithGraphOptions(goProfile)
            .WithRetryPolicy(rpProfile);

            var derivedProfile = derivedProfileBuilder.Build();

            var profile = new ExecutionProfile(baseProfile, derivedProfile);

            Assert.AreSame(lbpProfile, profile.LoadBalancingPolicy);
            Assert.AreSame(sepProfile, profile.SpeculativeExecutionPolicy);
            Assert.AreSame(rpProfile, profile.RetryPolicy);
            Assert.AreEqual(5000, profile.ReadTimeoutMillis);
            Assert.AreEqual(ConsistencyLevel.Serial, profile.SerialConsistencyLevel);
            Assert.AreEqual(ConsistencyLevel.LocalQuorum, profile.ConsistencyLevel);
            Assert.AreSame(goProfile, profile.GraphOptions);
        }
Ejemplo n.º 3
0
        public void Should_OnlyInitializePoliciesOnce_When_MultiplePoliciesAreProvidedWithExecutionProfiles()
        {
            var lbps            = Enumerable.Range(1, 4).Select(i => new FakeLoadBalancingPolicy()).ToArray();
            var seps            = Enumerable.Range(1, 4).Select(i => new FakeSpeculativeExecutionPolicy()).ToArray();
            var profile1Builder = new ExecutionProfileBuilder();

            profile1Builder.
            WithSpeculativeExecutionPolicy(seps[1])
            .WithLoadBalancingPolicy(lbps[1]);
            var profile1 = profile1Builder.Build();

            var profile2Builder = new ExecutionProfileBuilder();

            profile2Builder.WithSpeculativeExecutionPolicy(seps[2]);
            var profile2 = profile2Builder.Build();

            var profile3Builder = new ExecutionProfileBuilder();

            profile3Builder.WithLoadBalancingPolicy(lbps[2]);
            var profile3 = profile3Builder.Build();

            var profile4 = new ExecutionProfileBuilder().Build();

            var profile5 = new ExecutionProfileBuilder().Build();

            var defaultProfileBuilder = new ExecutionProfileBuilder();

            defaultProfileBuilder
            .WithLoadBalancingPolicy(lbps[3])
            .WithSpeculativeExecutionPolicy(seps[3]);
            var defaultProfile = defaultProfileBuilder.Build();

            var testConfig = new TestConfigurationBuilder
            {
                ControlConnectionFactory = new FakeControlConnectionFactory(),
                ConnectionFactory        = new FakeConnectionFactory(),
                Policies = new Policies(
                    lbps[0],
                    new ConstantReconnectionPolicy(50),
                    new DefaultRetryPolicy(),
                    seps[0],
                    new AtomicMonotonicTimestampGenerator()),
                ExecutionProfiles = new Dictionary <string, IExecutionProfile>
                {
                    { "profile1", profile1 },
                    { "profile2", profile2 },
                    { "profile3", profile3 },
                    { "profile4", profile4 },
                    { "profile5", new ExecutionProfile(profile1, profile5) },
                    { "default", defaultProfile }
                }
            }.Build();
            var initializerMock = Mock.Of <IInitializer>();

            Mock.Get(initializerMock)
            .Setup(i => i.ContactPoints)
            .Returns(new List <IPEndPoint> {
                new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9042)
            });
            Mock.Get(initializerMock)
            .Setup(i => i.GetConfiguration())
            .Returns(testConfig);

            var cluster = Cluster.BuildFrom(initializerMock, new List <string>());

            cluster.Connect();

            Assert.IsTrue(lbps.All(lbp => lbp.InitializeCount == 1));
            Assert.IsTrue(seps.All(sep => sep.InitializeCount == 1));
        }