public void TestMaximumPoolSizeIsEnsured() { var builder = new MongoConnectionStringBuilder { MaximumPoolSize = 2 }; using(var pool = new PooledConnectionFactory(builder.ToString())) { var connection1 = pool.Open(); Assert.IsNotNull(connection1); Assert.IsNotNull(pool.Open()); RawConnection connection3 = null; var thread = new Thread(o => { connection3 = pool.Open(); }); thread.Start(); Thread.Sleep(300); Assert.IsNull(connection3); pool.Close(connection1); Thread.Sleep(300); Assert.IsNotNull(connection3); thread.Abort(); } }
public void TestClose() { using(var pool = new PooledConnectionFactory(string.Empty)) { var connection1 = pool.Open(); pool.Close(connection1); var connection2 = pool.Open(); Assert.AreEqual(connection1,connection2); Assert.AreEqual(1, pool.PoolSize); } }
public void TestExceptionIfMaximumPoolSizeAndConnectionTimeoutAreReached() { var builder = new MongoConnectionStringBuilder { MaximumPoolSize = 1, ConnectionTimeout = TimeSpan.FromMilliseconds(500)}; using(var pool = new PooledConnectionFactory(builder.ToString())) { pool.Open(); pool.Open(); } }
public void TestDisconnectedConnectionsArentReturndToPool() { using(var pool = new PooledConnectionFactory(string.Empty)) { var connection = pool.Open(); connection.Dispose(); pool.Close(connection); Assert.AreEqual(0, pool.PoolSize); } }
public void TestBorrowOneConnection() { var builder = new MongoConnectionStringBuilder(); using(var pool = new PooledConnectionFactory(builder.ToString())) { var connection = pool.Open(); Assert.IsNotNull(connection); Assert.AreEqual(1, pool.PoolSize); } }
public void TestServerCirculationWorks() { var builder = new MongoConnectionStringBuilder(); builder.AddServer("localhost", 27017); builder.AddServer("localhost", 27018); using(var pool = new PooledConnectionFactory(builder.ToString())) { var connection1 = pool.Open(); var connection2 = pool.Open(); var connection3 = pool.Open(); var connection4 = pool.Open(); var connection5 = pool.Open(); Assert.AreEqual(27017, connection1.EndPoint.Port); Assert.AreEqual(27018, connection2.EndPoint.Port); Assert.AreEqual(27017, connection3.EndPoint.Port); Assert.AreEqual(27018, connection4.EndPoint.Port); Assert.AreEqual(27017, connection5.EndPoint.Port); } }
public void TestCleanup() { var builder = new MongoConnectionStringBuilder { MinimumPoolSize = 0, ConnectionLifetime = TimeSpan.FromMilliseconds(100) }; using(var pool = new PooledConnectionFactory(builder.ToString())) { var connection1 = pool.Open(); var connection2 = pool.Open(); var connection3 = pool.Open(); pool.Close(connection1); pool.Close(connection2); pool.Close(connection3); Thread.Sleep(300); // ensure lifetime reached pool.Cleanup(); Assert.AreEqual(0,pool.PoolSize); } }
public void TestIfConnectionLifetimeIsReachedItDoesNotReturndToPool() { var builder = new MongoConnectionStringBuilder { ConnectionLifetime = TimeSpan.FromMilliseconds(100) }; using(var pool = new PooledConnectionFactory(builder.ToString())) { var connection = pool.Open(); Thread.Sleep(200); // wait for lifetime reached pool.Close(connection); Assert.AreEqual(0, pool.PoolSize); } }