Example #1
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);
            }
        }
Example #2
0
        protected override IDatabaseClient CreateDatabaseClient(string host, int port)
        {
            KdbPlusConnectionStringBuilder builder = new KdbPlusConnectionStringBuilder {
                Server = host, Port = port
            };

            return(new PooledKdbPlusDatabaseClient(builder.ConnectionString));
        }
        protected override IDatabaseClient CreateDatabaseClient(string host, int port)
        {
            KdbPlusConnectionStringBuilder builder = new KdbPlusConnectionStringBuilder {
                Server = host, Port = port
            };

            return(new BalancingKdbPlusDatabaseClient(new ConnectionDispatcher(new KdbPlusConnectionStringBuilder[] { builder })));
        }
Example #4
0
        public void DisabledPoolingTest()
        {
            KdbPlusConnectionStringBuilder builder = new KdbPlusConnectionStringBuilder {
                Server = Constants.Host, Port = Constants.Port, Pooling = false
            };
            NonPooledKdbPlusDatabaseClient client = (NonPooledKdbPlusDatabaseClient)CreateDatabaseClientFromConString(builder.ConnectionString);

            client.Dispose();
        }
Example #5
0
        public void DifferentCaseStringParseTest()
        {
            KdbPlusConnectionStringBuilder builder = new KdbPlusConnectionStringBuilder("Server=1;Port=2;User ID=3;Password=4;buffersize=16384");

            Assert.AreEqual("1", builder.Server);
            Assert.AreEqual(2, builder.Port);
            Assert.AreEqual("3", builder.UserID);
            Assert.AreEqual("4", builder.Password);
            Assert.AreEqual(16384, builder.BufferSize);
        }
        private static KdbPlusConnectionStringBuilder[] CreateBuilders(int count)
        {
            KdbPlusConnectionStringBuilder[] result = new KdbPlusConnectionStringBuilder[count];

            for (int i = 0; i < count; i++)
            {
                result[i] = new KdbPlusConnectionStringBuilder {
                    Server = Constants.Host, Port = Constants.Port, MinPoolSize = i + 1
                };
            }

            return(result);
        }
Example #7
0
        public void DefaultsTest()
        {
            KdbPlusConnectionStringBuilder builder = new KdbPlusConnectionStringBuilder("Server=1;Port=2");

            Assert.AreEqual("1", builder.Server);
            Assert.AreEqual(2, builder.Port);
            Assert.AreEqual(String.Empty, builder.UserID);
            Assert.AreEqual(String.Empty, builder.Password);
            Assert.AreEqual(KdbPlusConnectionStringBuilder.DefaultBufferSize, builder.BufferSize);
            Assert.AreEqual(KdbPlusConnectionStringBuilder.DefaultPooling, builder.Pooling);
            Assert.AreEqual(KdbPlusConnectionStringBuilder.DefaultMinPoolSize, builder.MinPoolSize);
            Assert.AreEqual(KdbPlusConnectionStringBuilder.DefaultMaxPoolSize, builder.MaxPoolSize);
            Assert.AreEqual(KdbPlusConnectionStringBuilder.DefaultLoadBalanceTimeoutSeconds, builder.LoadBalanceTimeout);
        }
Example #8
0
        /// <summary>
        /// Gets the connection.
        /// </summary>
        /// <returns>Connection.</returns>
        public override IDatabaseClient GetConnection()
        {
            KdbPlusConnectionStringBuilder builder = new KdbPlusConnectionStringBuilder {
                Port = _port, Server = _host
            };

            KdbPlusDatabaseClient client = KdbPlusDatabaseClient.Factory.CreateNonPooledClient(builder);

            client.SendTimeout = TimeSpan.FromMinutes(15);

            client.ReceiveTimeout = TimeSpan.FromMinutes(15);

            return(client);
        }
Example #9
0
        public void CorrectStringParseTest()
        {
            KdbPlusConnectionStringBuilder builder = new KdbPlusConnectionStringBuilder("server=1;port=2;user id=3;password=4;buffer size=16384;pooling=false;min pool size=10;max pool size=11;load balance timeout=10;inactivity timeout=10");

            Assert.AreEqual("1", builder.Server);
            Assert.AreEqual(2, builder.Port);
            Assert.AreEqual("3", builder.UserID);
            Assert.AreEqual("4", builder.Password);
            Assert.AreEqual(16384, builder.BufferSize);
            Assert.AreEqual(false, builder.Pooling);
            Assert.AreEqual(10, builder.MinPoolSize);
            Assert.AreEqual(11, builder.MaxPoolSize);
            Assert.AreEqual(10, builder.LoadBalanceTimeout);
            Assert.AreEqual(10, builder.InactivityTimeout);
        }
Example #10
0
        public void MultiThreadedTwoPoolsTest()
        {
            const int threadCount = 1;

            Thread[] threads = new Thread[threadCount];

            foreach (KeyValuePair <KdbPlusConnectionStringBuilder, KdbPlusDatabaseClientPool> entry in PooledKdbPlusDatabaseClient.Pools)
            {
                entry.Value.Dispose();
            }
            PooledKdbPlusDatabaseClient.Pools.Clear();

            KdbPlusConnectionStringBuilder builder1 = new KdbPlusConnectionStringBuilder {
                Server = Constants.Host, Port = Constants.Port
            };
            KdbPlusConnectionStringBuilder builder2 = new KdbPlusConnectionStringBuilder {
                Server = Constants.Host, Port = Constants.Port, MaxPoolSize = 15
            };

            for (int i = 0; i < threadCount; i++)
            {
                threads[i] = new Thread(
                    delegate()
                {
                    for (int j = 0; j < threadCount; j++)
                    {
                        using (IDatabaseClient client = CreateDatabaseClientFromConString(builder1.ConnectionString)
                               )
                        {
                            client.ExecuteNonQuery("0");
                            Thread.Sleep(100);
                        }

                        using (IDatabaseClient client = CreateDatabaseClientFromConString(builder2.ConnectionString)
                               )
                        {
                            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();
            }

            Assert.AreEqual(2, PooledKdbPlusDatabaseClient.Pools.Keys.Count);

            foreach (KeyValuePair <KdbPlusConnectionStringBuilder, KdbPlusDatabaseClientPool> entry in PooledKdbPlusDatabaseClient.Pools)
            {
                Assert.AreEqual(threadCount, entry.Value.ConnectionsCount);
            }
        }
Example #11
0
 /// <summary>
 /// Creates the connection pool.
 /// </summary>
 /// <param name="builder">The builder.</param>
 /// <returns></returns>
 public abstract KdbPlusDatabaseClientPool CreatePool(KdbPlusConnectionStringBuilder builder);
Example #12
0
 /// <summary>
 /// Creates the non pooled kdb+ client. TCP connection is created and closed for each client.
 /// </summary>
 /// <param name="builder">The builder.</param>
 /// <returns></returns>
 public abstract KdbPlusDatabaseClient CreateNonPooledClient(KdbPlusConnectionStringBuilder builder);