Beispiel #1
0
        public void MinInFlight_Returns_The_Min_Inflight_From_Two_Connections()
        {
            var connections = new[]
            {
                GetConnectionMock(0),
                GetConnectionMock(1),
                GetConnectionMock(1),
                GetConnectionMock(10),
                GetConnectionMock(1)
            };
            var index = 1;
            var c     = HostConnectionPool.MinInFlight(connections, ref index, 100);

            Assert.AreEqual(index, 2);
            Assert.AreSame(connections[2], c);
            c = HostConnectionPool.MinInFlight(connections, ref index, 100);
            Assert.AreEqual(index, 3);
            //previous had less in flight
            Assert.AreSame(connections[2], c);
            c = HostConnectionPool.MinInFlight(connections, ref index, 100);
            Assert.AreEqual(index, 4);
            Assert.AreSame(connections[4], c);
            c = HostConnectionPool.MinInFlight(connections, ref index, 100);
            Assert.AreEqual(index, 5);
            Assert.AreSame(connections[0], c);
            c = HostConnectionPool.MinInFlight(connections, ref index, 100);
            Assert.AreEqual(index, 6);
            Assert.AreSame(connections[0], c);
            index = 9;
            c     = HostConnectionPool.MinInFlight(connections, ref index, 100);
            Assert.AreEqual(index, 10);
            Assert.AreSame(connections[0], c);
        }
        public void MinInFlight_Goes_Through_All_The_Connections_When_Over_Threshold()
        {
            var connections = new[]
            {
                GetConnectionMock(10),
                GetConnectionMock(1),
                GetConnectionMock(201),
                GetConnectionMock(200),
                GetConnectionMock(210)
            };
            var index = 0;
            int inFlight;

            var c = HostConnectionPool.MinInFlight(connections, ref index, 100, out inFlight);

            Assert.AreEqual(index, 1);
            Assert.AreSame(connections[1], c);
            Assert.AreEqual(1, inFlight);

            c = HostConnectionPool.MinInFlight(connections, ref index, 100, out inFlight);
            Assert.AreEqual(index, 2);
            // Should pick the first below the threshold
            Assert.AreSame(connections[0], c);
            Assert.AreEqual(10, inFlight);
        }
Beispiel #3
0
        private IHostConnectionPool CreatePool(IEndPointResolver res = null)
        {
            _host = new Host(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9042));
            if (res == null)
            {
                _resolver = Mock.Of <IEndPointResolver>();
                Mock.Get(_resolver).Setup(resolver => resolver.GetConnectionEndPointAsync(_host, It.IsAny <bool>()))
                .ReturnsAsync((Host h, bool b) => new ConnectionEndPoint(h.Address, null));
            }
            else
            {
                _resolver = res;
            }
            var pool = new HostConnectionPool(
                _host,
                new TestConfigurationBuilder
            {
                EndPointResolver  = _resolver,
                ConnectionFactory = new FakeConnectionFactory(),
                Policies          = new Cassandra.Policies(
                    new RoundRobinPolicy(),
                    new ConstantReconnectionPolicy(1),
                    new DefaultRetryPolicy(),
                    NoSpeculativeExecutionPolicy.Instance,
                    new AtomicMonotonicTimestampGenerator()),
                PoolingOptions = PoolingOptions.Create(ProtocolVersion.V4).SetCoreConnectionsPerHost(HostDistance.Local, 2)
            }.Build(),
                SerializerManager.Default.GetCurrentSerializer(),
                new MetricsObserverFactory(new MetricsManager(new NullDriverMetricsProvider(), new DriverMetricsOptions(), false, "s1"))
                );

            pool.SetDistance(HostDistance.Local); // set expected connections length
            return(pool);
        }