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