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); }
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); }