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, 5).Select(i => new FakeLoadBalancingPolicy()).ToArray();
            var seps     = Enumerable.Range(1, 5).Select(i => new FakeSpeculativeExecutionPolicy()).ToArray();
            var profile1 =
                new ExecutionProfileBuilder()
                .WithSpeculativeExecutionPolicy(seps[1])
                .WithLoadBalancingPolicy(lbps[1])
                .CastToClass()
                .Build();
            var testConfig = new TestConfigurationBuilder
            {
                ControlConnectionFactory = new FakeControlConnectionFactory(),
                ConnectionFactory        = new FakeConnectionFactory(),
                Policies = new Cassandra.Policies(
                    lbps[0],
                    new ConstantReconnectionPolicy(50),
                    new DefaultRetryPolicy(),
                    seps[0],
                    new AtomicMonotonicTimestampGenerator()),
                ExecutionProfiles = new Dictionary <string, IExecutionProfile>
                {
                    { "profile1", profile1 },
                    {
                        "profile2",
                        new ExecutionProfileBuilder()
                        .WithSpeculativeExecutionPolicy(seps[2])
                        .CastToClass()
                        .Build()
                    },
                    {
                        "profile3",
                        new ExecutionProfileBuilder()
                        .WithLoadBalancingPolicy(lbps[2])
                        .CastToClass()
                        .Build()
                    },
                    {
                        "profile4",
                        new ExecutionProfileBuilder()
                        .Build()
                    },
                    {
                        "profile5",
                        new ExecutionProfile(profile1, new ExecutionProfileBuilder().Build())
                    },
                    {
                        "graphProfile1",
                        new ExecutionProfileBuilder()
                        .WithLoadBalancingPolicy(lbps[4])
                        .WithSpeculativeExecutionPolicy(seps[4])
                        .CastToClass()
                        .Build()
                    },
                    {
                        "default",
                        new ExecutionProfileBuilder()
                        .WithLoadBalancingPolicy(lbps[3])
                        .WithSpeculativeExecutionPolicy(seps[3])
                        .CastToClass()
                        .Build()
                    }
                }
            }.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>(), testConfig);

            cluster.Connect();

            Assert.IsTrue(lbps.Skip(1).All(lbp => lbp.InitializeCount == 1));
            Assert.IsTrue(seps.Skip(1).All(sep => sep.InitializeCount == 1));
            Assert.AreEqual(0, lbps[0].InitializeCount);
            Assert.AreEqual(0, seps[0].InitializeCount);
        }