Skip to content

Commit 53a8367

Browse files
author
Zhen
committed
Fix red tests due to connectionLifeTime check enabled after change its value from infinite to 1h
1 parent dbecb3d commit 53a8367

File tree

1 file changed

+35
-4
lines changed

1 file changed

+35
-4
lines changed

Neo4j.Driver/Neo4j.Driver.Tests/ConnectionPoolTests.cs

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,19 @@ namespace Neo4j.Driver.Tests
3535
{
3636
public class ConnectionPoolTests
3737
{
38+
internal static ConnectionPool NewConnectionPoolWithNoConnectionTimeoutValidation(
39+
IConnection connection,
40+
BlockingCollection<IPooledConnection> availableConnections = null,
41+
ConcurrentSet<IPooledConnection> inUseConnections = null)
42+
{
43+
var testConfigWithIdleTimeoutAndLifetimeCheckDisabled = new Config
44+
{
45+
MaxConnectionLifetime = Config.InfiniteInterval,
46+
ConnectionIdleTimeout = Config.InfiniteInterval
47+
};
48+
return new ConnectionPool(connection, availableConnections, inUseConnections,
49+
poolSettings: new ConnectionPoolSettings(testConfigWithIdleTimeoutAndLifetimeCheckDisabled));
50+
}
3851
public class AcquireMethod
3952
{
4053
private readonly ITestOutputHelper _output;
@@ -45,6 +58,17 @@ private IConnection MockedConnection
4558
{
4659
var mock = new Mock<IPooledConnection>();
4760
mock.Setup(x => x.IsOpen).Returns(true);
61+
mock.Setup(x => x.IdleTimer).Returns(MockedTimer);
62+
mock.Setup(x => x.LifetimeTimer).Returns(MockedTimer);
63+
return mock.Object;
64+
}
65+
}
66+
67+
private ITimer MockedTimer
68+
{
69+
get {
70+
var mock = new Mock<ITimer>();
71+
mock.Setup(t => t.ElapsedMilliseconds).Returns(0);
4872
return mock.Object;
4973
}
5074
}
@@ -211,6 +235,8 @@ public void ShouldReuseWhenOpenConnectionInQueue()
211235
var conns = new BlockingCollection<IPooledConnection>();
212236
var mock = new Mock<IPooledConnection>();
213237
mock.Setup(x => x.IsOpen).Returns(true);
238+
mock.Setup(x => x.IdleTimer).Returns(MockedTimer);
239+
mock.Setup(x => x.LifetimeTimer).Returns(MockedTimer);
214240

215241
conns.Add(mock.Object);
216242
var pool = new ConnectionPool(MockedConnection, conns);
@@ -237,7 +263,7 @@ public void ShouldReuseOpenConnectionWhenOpenAndClosedConnectionsInQueue()
237263

238264
conns.Add(unhealthyMock.Object);
239265
conns.Add(healthyMock.Object);
240-
var pool = new ConnectionPool(MockedConnection, conns);
266+
var pool = NewConnectionPoolWithNoConnectionTimeoutValidation(MockedConnection, conns);
241267

242268
pool.NumberOfAvailableConnections.Should().Be(2);
243269
pool.NumberOfInUseConnections.Should().Be(0);
@@ -301,7 +327,11 @@ public void ShouldReuseIdleNotTooLongConn()
301327
conns.Add(mock.Object);
302328
var enableIdleTooLongTest = TimeSpan.FromMilliseconds(100);
303329
var poolSettings = new ConnectionPoolSettings(
304-
new Config {MaxIdleConnectionPoolSize = 2, ConnectionIdleTimeout = enableIdleTooLongTest});
330+
new Config {
331+
MaxIdleConnectionPoolSize = 2,
332+
ConnectionIdleTimeout = enableIdleTooLongTest,
333+
MaxConnectionLifetime = Config.InfiniteInterval, // disable life time check
334+
});
305335
var pool = new ConnectionPool(MockedConnection, conns, poolSettings: poolSettings);
306336

307337
pool.NumberOfAvailableConnections.Should().Be(1);
@@ -343,7 +373,7 @@ public void ShouldAcquireNewWhenBeingUsedConcurrentlyBy(int numberOfThreads)
343373
mockConns.Enqueue(mock);
344374
}
345375

346-
var pool = new ConnectionPool(MockedConnection, conns);
376+
var pool = NewConnectionPoolWithNoConnectionTimeoutValidation(MockedConnection, conns);
347377

348378
pool.NumberOfAvailableConnections.Should().Be(numberOfThreads);
349379
pool.NumberOfInUseConnections.Should().Be(0);
@@ -407,7 +437,7 @@ public void ShouldCloseAcquiredConnectionIfPoolDisposeStarted()
407437
// Given
408438
var conns = new BlockingCollection<IPooledConnection>();
409439
var healthyMock = new Mock<IPooledConnection>();
410-
var pool = new ConnectionPool(MockedConnection, conns);
440+
var pool = NewConnectionPoolWithNoConnectionTimeoutValidation(MockedConnection, conns);
411441

412442
pool.NumberOfAvailableConnections.Should().Be(0);
413443
pool.NumberOfInUseConnections.Should().Be(0);
@@ -453,6 +483,7 @@ public void ShouldTimeoutAfterAcquireTimeoutIfPoolIsFull()
453483
public void ShouldTimeoutAfterAcquireTimeoutWhenConnectionIsNotValidated()
454484
{
455485
Config config = Config.Builder.WithConnectionAcquisitionTimeout(TimeSpan.FromSeconds(5))
486+
.WithConnectionTimeout(Config.InfiniteInterval)
456487
.ToConfig();
457488

458489
var notValidConnection = new Mock<IPooledConnection>();

0 commit comments

Comments
 (0)