Esempio n. 1
0
        public void AtomicMonotonicTimestampGenerator_Should_Log_After_Cooldown()
        {
            var loggerHandler = new TestHelper.TestLoggerHandler();
            var generator     = new AtomicMonotonicTimestampGenerator(80, 1000, new Logger(loggerHandler));

            TimestampGeneratorLogAfterCooldownTest(generator, loggerHandler);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 7
0
        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);
        }