Пример #1
0
        public void Should_OnlyDisposePoliciesOnce_When_NoProfileIsProvided()
        {
            var lbp        = new FakeLoadBalancingPolicy();
            var sep        = new FakeSpeculativeExecutionPolicy();
            var testConfig = new TestConfigurationBuilder()
            {
                ControlConnectionFactory = new FakeControlConnectionFactory(),
                ConnectionFactory        = new FakeConnectionFactory(),
                Policies = new Cassandra.Policies(
                    lbp,
                    new ConstantReconnectionPolicy(50),
                    new DefaultRetryPolicy(),
                    sep,
                    new AtomicMonotonicTimestampGenerator())
            }.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();
            cluster.Dispose();

            Assert.AreEqual(1, sep.DisposeCount);
        }
Пример #2
0
        public async Task Should_UseStatementSettings_When_StatementSettingsAreSet(RequestTypeTestCase requestType)
        {
            var lbpCluster  = new FakeLoadBalancingPolicy();
            var sepCluster  = new FakeSpeculativeExecutionPolicy();
            var rpCluster   = new FakeRetryPolicy();
            var lbp         = new FakeLoadBalancingPolicy();
            var sep         = new FakeSpeculativeExecutionPolicy();
            var rp          = new FakeRetryPolicy();
            var rpStatement = new FakeRetryPolicy();
            var profile     = ((ExecutionProfileBuilder) new ExecutionProfileBuilder()
                               .WithConsistencyLevel(ConsistencyLevel.All)
                               .WithSerialConsistencyLevel(ConsistencyLevel.Serial)
                               .WithReadTimeoutMillis(50)
                               .WithLoadBalancingPolicy(lbp)
                               .WithSpeculativeExecutionPolicy(sep)
                               .WithRetryPolicy(rp)
                               ).Build();

            var mockResult = BuildRequestHandler(
                BuildStatement(requestType)
                .SetIdempotence(true)
                .SetConsistencyLevel(ConsistencyLevel.EachQuorum)
                .SetReadTimeoutMillis(400)
                .SetSerialConsistencyLevel(ConsistencyLevel.LocalSerial)
                .SetRetryPolicy(rpStatement),
                builder =>
            {
                builder.QueryOptions =
                    new QueryOptions()
                    .SetConsistencyLevel(ConsistencyLevel.LocalOne)
                    .SetSerialConsistencyLevel(ConsistencyLevel.LocalSerial);
                builder.SocketOptions =
                    new SocketOptions().SetReadTimeoutMillis(10);
                builder.Policies = new Cassandra.Policies(
                    lbpCluster, new ConstantReconnectionPolicy(5), rpCluster, sepCluster, new AtomicMonotonicTimestampGenerator());
            },
                profile);

            await mockResult.RequestHandler.SendAsync().ConfigureAwait(false);

            var results = mockResult.SendResults.ToArray();

            Assert.GreaterOrEqual(results.Length, 1);
            var timeouts = results.Select(r => r.TimeoutMillis).ToList();

            Assert.Greater(results.Length, 0);
            Assert.AreEqual(ConsistencyLevel.EachQuorum, GetConsistencyLevels(requestType, results).Distinct().Single());
            Assert.AreEqual(ConsistencyLevel.LocalSerial, GetSerialConsistencyLevels(requestType, results).Distinct().Single());
            Assert.AreEqual(400, timeouts.Distinct().Single());

            Assert.Greater(Interlocked.Read(ref lbp.Count), 0);
            Assert.Greater(Interlocked.Read(ref sep.Count), 0);
            Assert.Greater(Interlocked.Read(ref rpStatement.Count), 0);
            Assert.AreEqual(0, Interlocked.Read(ref lbpCluster.Count));
            Assert.AreEqual(0, Interlocked.Read(ref sepCluster.Count));
            Assert.AreEqual(0, Interlocked.Read(ref rpCluster.Count));
            Assert.AreEqual(0, Interlocked.Read(ref rp.Count));
        }
Пример #3
0
        public void Should_OnlyInitializeRelevantPolicies_When_PoliciesAreProvidedByDefaultProfile()
        {
            var lbp1       = new FakeLoadBalancingPolicy();
            var sep1       = new FakeSpeculativeExecutionPolicy();
            var lbp2       = new FakeLoadBalancingPolicy();
            var sep2       = new FakeSpeculativeExecutionPolicy();
            var testConfig = new TestConfigurationBuilder()
            {
                ControlConnectionFactory = new FakeControlConnectionFactory(),
                ConnectionFactory        = new FakeConnectionFactory(),
                Policies = new Cassandra.Policies(
                    lbp1,
                    new ConstantReconnectionPolicy(50),
                    new DefaultRetryPolicy(),
                    sep1,
                    new AtomicMonotonicTimestampGenerator()),
                ExecutionProfiles = new Dictionary <string, IExecutionProfile>
                {
                    { Configuration.DefaultExecutionProfileName, new ExecutionProfile(null, null, null, lbp2, sep2, null, null) }
                }
            }.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.AreEqual(0, lbp1.InitializeCount);
            Assert.AreEqual(0, sep1.InitializeCount);
            Assert.AreEqual(1, lbp2.InitializeCount);
            Assert.AreEqual(1, sep2.InitializeCount);
        }