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