public void SimplePoolingTest() { PooledKdbPlusDatabaseClient client = (PooledKdbPlusDatabaseClient)CreateDatabaseClient(); Assert.IsNotNull(client.Pool); client.Dispose(); }
public void LoadBalanceTimeoutTest() { KdbPlusConnectionStringBuilder builder1 = new KdbPlusConnectionStringBuilder { Server = Constants.Host, Port = Constants.Port, LoadBalanceTimeout = 3 }; KdbPlusDatabaseClient innerClient1; using (PooledKdbPlusDatabaseClient client1 = (PooledKdbPlusDatabaseClient)CreateDatabaseClientFromConString(builder1.ConnectionString) ) { client1.ExecuteNonQuery("0"); innerClient1 = client1.InnerClient; Thread.Sleep(5000); } // with delay there should be new connection KdbPlusDatabaseClient innerClient2; using (PooledKdbPlusDatabaseClient client2 = (PooledKdbPlusDatabaseClient)CreateDatabaseClientFromConString(builder1.ConnectionString) ) { innerClient2 = client2.InnerClient; Assert.AreNotSame(innerClient1, innerClient2); } using (PooledKdbPlusDatabaseClient client3 = (PooledKdbPlusDatabaseClient)CreateDatabaseClientFromConString(builder1.ConnectionString) ) { // without delay connection should be the same Assert.AreSame(innerClient2, client3.InnerClient); } }
public void MultiThreadedSinglePoolTest() { const int threadCount = 5; Thread[] threads = new Thread[threadCount]; for (int i = 0; i < threadCount; i++) { threads[i] = new Thread( delegate() { for (int j = 0; j < threadCount; j++) { using (IDatabaseClient client = CreateDatabaseClient()) { client.ExecuteNonQuery("0"); Thread.Sleep(100); } } } ); } for (int i = 0; i < threadCount; i++) { threads[i].Start(); } for (int i = 0; i < threadCount; i++) { threads[i].Join(); } PooledKdbPlusDatabaseClient testClient = (PooledKdbPlusDatabaseClient)CreateDatabaseClient(); Assert.IsNotNull(testClient.Pool); Assert.AreEqual(threadCount, testClient.Pool.ConnectionsCount); }