public void AtomicMonotonicTimestampGenerator_Should_Log_After_Cooldown() { var loggerHandler = new TestHelper.TestLoggerHandler(); var generator = new AtomicMonotonicTimestampGenerator(80, 1000, new Logger(loggerHandler)); TimestampGeneratorLogAfterCooldownTest(generator, loggerHandler); }
public void AtomicMonotonicTimestampGenerator_Should_Log_When_Drifting_Above_Threshold() { var loggerHandler = new TestHelper.TestLoggerHandler(); var generator = new AtomicMonotonicTimestampGenerator(80, 1000, new Logger(loggerHandler)); TimestampGeneratorLogDriftingTest(generator, loggerHandler); }
public void Should_MapOptionsToProfileWithAllSettingsFromCluster_When_NoProfileIsChangedOrAdded() { var lbp = new RoundRobinPolicy(); var sep = new ConstantSpeculativeExecutionPolicy(1000, 1); var rp = new LoggingRetryPolicy(new DefaultRetryPolicy()); var tg = new AtomicMonotonicTimestampGenerator(); var cluster = Cluster .Builder() .AddContactPoint("127.0.0.1") .WithQueryOptions( new QueryOptions() .SetConsistencyLevel(ConsistencyLevel.EachQuorum) .SetSerialConsistencyLevel(ConsistencyLevel.LocalSerial) .SetDefaultIdempotence(true) .SetPageSize(5) .SetPrepareOnAllHosts(false) .SetReprepareOnUp(false)) .WithSocketOptions(new SocketOptions().SetReadTimeoutMillis(9999)) .WithLoadBalancingPolicy(lbp) .WithSpeculativeExecutionPolicy(sep) .WithRetryPolicy(rp) .WithQueryTimeout(30) .WithTimestampGenerator(tg) .Build(); Assert.AreEqual(1, cluster.Configuration.RequestOptions.Count); var profile = cluster.Configuration.ExecutionProfiles["default"]; Assert.AreEqual(ConsistencyLevel.EachQuorum, profile.ConsistencyLevel); Assert.AreEqual(ConsistencyLevel.LocalSerial, profile.SerialConsistencyLevel); Assert.AreEqual(9999, profile.ReadTimeoutMillis); Assert.AreSame(lbp, profile.LoadBalancingPolicy); Assert.AreSame(sep, profile.SpeculativeExecutionPolicy); Assert.AreSame(rp, profile.RetryPolicy); }
public void AtomicMonotonicWinApiTimestampGenerator_Value_Should_Be_Close_To_Base_Class() { // The accuracy of both should be within a 15.6ms range var generator1 = new AtomicMonotonicTimestampGenerator(); var generator2 = new AtomicMonotonicWinApiTimestampGenerator(); Assert.Less(Math.Abs(generator1.Next() - generator2.Next()), 20000); }
public void AtomicMonotonicTimestampGenerator_Next_Should_Return_Log_When_Drifting_Above_Threshold() { var minLogInterval = 2500; var loggerHandler = new TestHelper.TestLoggerHandler(); var generator = new AtomicMonotonicTimestampGenerator(5, minLogInterval, new Logger(loggerHandler)); TimestampGeneratorLogDriftingTest(generator, loggerHandler, minLogInterval); }
public void Should_MapProfileToOptionsWithSomeSettingsFromBaseProfile_When_ADerivedProfileIsProvided() { var lbp = new RoundRobinPolicy(); var sep = new ConstantSpeculativeExecutionPolicy(1000, 1); var sepProfile = new ConstantSpeculativeExecutionPolicy(200, 50); var rp = new LoggingRetryPolicy(new DefaultRetryPolicy()); var rpProfile = new LoggingRetryPolicy(new IdempotenceAwareRetryPolicy(new DefaultRetryPolicy())); var tg = new AtomicMonotonicTimestampGenerator(); var cluster = Cluster .Builder() .AddContactPoint("127.0.0.1") .WithQueryOptions( new QueryOptions() .SetConsistencyLevel(ConsistencyLevel.EachQuorum) .SetSerialConsistencyLevel(ConsistencyLevel.Serial) .SetDefaultIdempotence(true) .SetPageSize(5) .SetPrepareOnAllHosts(false) .SetReprepareOnUp(false)) .WithSocketOptions(new SocketOptions().SetReadTimeoutMillis(300)) .WithLoadBalancingPolicy(lbp) .WithSpeculativeExecutionPolicy(sep) .WithRetryPolicy(rp) .WithExecutionProfiles(opts => opts .WithProfile("baseProfile", baseProfile => baseProfile .WithConsistencyLevel(ConsistencyLevel.Quorum) .WithSpeculativeExecutionPolicy(sepProfile) .WithRetryPolicy(rpProfile)) .WithDerivedProfile("test1", "baseProfile", profileBuilder => profileBuilder .WithConsistencyLevel(ConsistencyLevel.All) .WithSerialConsistencyLevel(ConsistencyLevel.LocalSerial))) .WithQueryTimeout(30) .WithTimestampGenerator(tg) .Build(); Assert.AreEqual(3, cluster.Configuration.RequestOptions.Count); var options = cluster.Configuration.RequestOptions["test1"]; Assert.AreEqual(ConsistencyLevel.All, options.ConsistencyLevel); Assert.AreEqual(ConsistencyLevel.LocalSerial, options.SerialConsistencyLevel); Assert.AreEqual(300, options.ReadTimeoutMillis); Assert.AreSame(lbp, options.LoadBalancingPolicy); Assert.AreSame(sepProfile, options.SpeculativeExecutionPolicy); Assert.AreSame(rpProfile, options.RetryPolicy); Assert.AreEqual(true, options.DefaultIdempotence); Assert.AreEqual(5, options.PageSize); Assert.AreEqual(30, options.QueryAbortTimeout); Assert.AreSame(tg, options.TimestampGenerator); }
public void Should_MapDefaultProfileToOptionsWithAllSettingsFromCluster_When_NoSettingIsProvided() { var go = new GraphOptions(); var lbp = new RoundRobinPolicy(); var sep = new ConstantSpeculativeExecutionPolicy(1000, 1); var rp = new LoggingRetryPolicy(new DefaultRetryPolicy()); var tg = new AtomicMonotonicTimestampGenerator(); var cluster = Cluster .Builder() .AddContactPoint("127.0.0.1") .WithQueryOptions( new QueryOptions() .SetConsistencyLevel(ConsistencyLevel.EachQuorum) .SetSerialConsistencyLevel(ConsistencyLevel.LocalSerial) .SetDefaultIdempotence(true) .SetPageSize(5) .SetPrepareOnAllHosts(false) .SetReprepareOnUp(false)) .WithSocketOptions(new SocketOptions().SetReadTimeoutMillis(9999)) .WithLoadBalancingPolicy(lbp) .WithSpeculativeExecutionPolicy(sep) .WithRetryPolicy(rp) .WithExecutionProfiles(opts => { opts.WithProfile("default", profile => { }); }) .WithQueryTimeout(30) .WithTimestampGenerator(tg) .WithGraphOptions(go) .Build(); Assert.AreEqual(1, cluster.Configuration.RequestOptions.Count); var options = cluster.Configuration.RequestOptions["default"]; Assert.AreEqual(ConsistencyLevel.EachQuorum, options.ConsistencyLevel); Assert.AreEqual(ConsistencyLevel.LocalSerial, options.SerialConsistencyLevel); Assert.AreEqual(9999, options.ReadTimeoutMillis); Assert.AreSame(lbp, options.LoadBalancingPolicy); Assert.AreSame(sep, options.SpeculativeExecutionPolicy); Assert.AreSame(rp, options.RetryPolicy); Assert.AreEqual(true, options.DefaultIdempotence); Assert.AreEqual(5, options.PageSize); Assert.AreEqual(30, options.QueryAbortTimeout); Assert.AreSame(tg, options.TimestampGenerator); Assert.AreSame(go, options.GraphOptions); }