Пример #1
0
        public void SimplePoolingTest()
        {
            PooledKdbPlusDatabaseClient client = (PooledKdbPlusDatabaseClient)CreateDatabaseClient();

            Assert.IsNotNull(client.Pool);
            client.Dispose();
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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);
        }