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 TestMinimalPoolSizeIsEnsuredAtStartup() { var builder = new MongoConnectionStringBuilder { MinimumPoolSize = 3 }; using (var pool = new PooledConnectionFactory(builder.ToString())) Assert.AreEqual(3, pool.PoolSize); }
public void TestDisconnectedConnectionsArentReturndToPool() { using (var pool = new PooledConnectionFactory(string.Empty)) { var connection = pool.Open(); connection.Dispose(); pool.Close(connection); Assert.AreEqual(0, pool.PoolSize); } }
private IDriver SetupWithCustomResolver(Uri overridenUri, Config config) { var connectionSettings = new ConnectionSettings(AuthToken, config); connectionSettings.SocketSettings.HostResolver = new CustomHostResolver(Server.BoltUri, connectionSettings.SocketSettings.HostResolver); var bufferSettings = new BufferSettings(config); var connectionFactory = new PooledConnectionFactory(connectionSettings, bufferSettings, config.Logger); return(GraphDatabase.CreateDriver(overridenUri, config, connectionFactory)); }
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 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 TestExceptionIfMaximumPoolSizeAndConnectionTimeoutAreReached() { var builder = new MongoConnectionStringBuilder { MaximumPoolSize = 1, ConnectionTimeout = TimeSpan.FromMilliseconds(500) }; using (var pool = new PooledConnectionFactory(builder.ToString())) { pool.Open(); pool.Open(); } }
/// <summary> /// Returns a driver for a Neo4j instance with custom configuration. /// </summary> /// <param name="uri"> /// The URI to the Neo4j instance. Should be in the form /// <c>bolt://<server location>:<port></c>. If <c>port</c> is not supplied the default of <c>7687</c> will /// be used.</param> /// <param name="authToken">Authentication to use, <see cref="AuthTokens" />.</param> /// <param name="config"> /// Configuration for the driver instance to use, if <c>null</c> <see cref="Config.DefaultConfig" /> /// is used. /// </param> /// <returns>A new driver to the database instance specified by the <paramref name="uri"/>.</returns> public static IDriver Driver(Uri uri, IAuthToken authToken, Config config) { Throw.ArgumentNullException.IfNull(uri, nameof(uri)); Throw.ArgumentNullException.IfNull(authToken, nameof(authToken)); config = config ?? Config.DefaultConfig; var connectionSettings = new ConnectionSettings(authToken, config); var bufferSettings = new BufferSettings(config); var connectionFactory = new PooledConnectionFactory(connectionSettings, bufferSettings, config.Logger); return(CreateDriver(uri, config, connectionFactory)); }
/// <summary> /// Returns a driver for a Neo4j instance with custom configuration. /// </summary> /// <param name="uri"> /// The URI to the Neo4j instance. Should be in the form /// <c>neo4j://<server location>:<port></c>. /// If <c>port</c> is not supplied the default of <c>7687</c> will be used.</param> /// <param name="authToken">Authentication to use, <see cref="AuthTokens" />.</param> /// <param name="action"> /// Defines how to build a driver configuration <see cref="Config"/> using <see cref="ConfigBuilder"/>. /// If set to <c>null</c>, then no modification will be carried out on the build. /// As a result, a default config with default settings will be used <see cref="Config" /> when creating the new driver. /// </param> /// <returns>A new driver to the database instance specified by the <paramref name="uri"/>.</returns> public static IDriver Driver(Uri uri, IAuthToken authToken, Action <ConfigBuilder> action) { Throw.ArgumentNullException.IfNull(uri, nameof(uri)); Throw.ArgumentNullException.IfNull(authToken, nameof(authToken)); var config = ConfigBuilders.BuildConfig(action); var connectionSettings = new ConnectionSettings(uri, authToken, config); var bufferSettings = new BufferSettings(config); var connectionFactory = new PooledConnectionFactory(connectionSettings, bufferSettings, config.Logger); return(CreateDriver(uri, config, connectionFactory)); }
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); } }
public void TestMinimalPoolSizeIsEnsuredAtRuntime() { var builder = new MongoConnectionStringBuilder { MinimumPoolSize = 3, ConnectionLifetime = TimeSpan.FromMilliseconds(200) }; using (var pool = new PooledConnectionFactory(builder.ToString())) { Assert.AreEqual(3, pool.PoolSize); Thread.Sleep(500); // ensure connection lifetime reached pool.Cleanup(); Assert.AreEqual(3, 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 TestDefaultPoolSizeIsEmpty() { using (var pool = new PooledConnectionFactory(string.Empty)) Assert.AreEqual(0, pool.PoolSize); }