Beispiel #1
0
 public void ExceptionAtNonQueryTest()
 {
     using (IDatabaseClient client = CreateDatabaseClient())
     {
         client.ExecuteNonQuery("exception");
     }
 }
Beispiel #2
0
        public void ExecuteQueryWithParamMultipleResultRowsTest()
        {
            using (IDatabaseClient client = CreateDatabaseClient())
            {
                CreateTrade(client);
                client.ExecuteNonQuery("f:{[table]select from table}");

                InsertRow(client);
                client.ExecuteNonQuery("`trade insert(`MSFT;11.0;300)");

                using (IDataReader reader = client.ExecuteQuery("f", "trade"))
                {
                    CheckTwoRows(reader);
                }
            }
        }
Beispiel #3
0
        public void ExecuteQueryWithParamMultipleResultsTest()
        {
            using (IDatabaseClient client = CreateDatabaseClient())
            {
                CreateTrade(client);
                client.ExecuteNonQuery("f:{[table]d:`result1`result2!(); d[`result1]:select from table; d[`result2]:select from table; :d}");

                InsertRow(client);
                client.ExecuteNonQuery("`trade insert(`MSFT;11.0;300)");

                IMultipleResult result = client.ExecuteQueryWithMultipleResult("f", "trade");

                Assert.IsTrue(result.Count == 2);
                CheckTwoRows(result.GetResult(0));
                CheckTwoRows(result.GetResult(1));
            }
        }
Beispiel #4
0
        private static void RunSimplifiedAPIExample()
        {
            try
            {
                using (IDatabaseClient client = KdbPlusDatabaseClient.Factory.CreateNonPooledClient("server=localhost;port=1001"))
                {
                    // get current time
                    TimeSpan time = client.ExecuteScalar <TimeSpan>(".z.T");
                    Console.WriteLine("Current time {0}", time);

                    // create trade table
                    client.ExecuteNonQuery("trade:([]sym:();price:();size:())");
                    client.ExecuteNonQuery("`trade insert(`AIG;10.75;200)");
                    client.ExecuteOneWayNonQuery("`trade insert(`AIG1;10.75;200)");

                    // parameters handling example
                    object[] x = { "xx", 93.5, 300 };
                    client.ExecuteNonQuery("insert", "trade", x);

                    // one-way call example
                    object[] y = { "yy", 93.5, 300 };
                    client.ExecuteOneWayNonQuery("insert", "trade", y);

                    // get data from trade
                    IDataReader reader = client.ExecuteQuery("select from trade");
                    Console.WriteLine("Trade:");

                    Console.WriteLine("{0}\t{1}\t{2}", reader.GetName(0), reader.GetName(1), reader.GetName(2));
                    while (reader.Read())
                    {
                        Console.WriteLine("{0}\t{1}\t{2}", reader.GetString(0), reader.GetDouble(1), reader.GetInt32(2));
                    }
                }
            }
            catch (KdbPlusException ex)
            {
                Console.WriteLine(ex);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
Beispiel #5
0
        public void ExecuteNonQueryWithParamTest()
        {
            using (IDatabaseClient client = CreateDatabaseClient())
            {
                CreateTrade(client);

                object[] x = { "AIG", 10.75, 200 };
                client.ExecuteNonQuery("insert", "trade", x);

                Assert.IsTrue(client.ExecuteQuery("select from trade").HasRows);
            }
        }
Beispiel #6
0
        public void ExecuteQueryWithParamTest()
        {
            using (IDatabaseClient client = CreateDatabaseClient())
            {
                CreateTrade(client);
                client.ExecuteNonQuery("f:{[table;symbol]select from table where sym=symbol}");

                InsertRow(client);

                using (IDataReader reader = client.ExecuteQuery("f", "trade", "AIG"))
                {
                    CheckTrade(reader);
                }
            }
        }
Beispiel #7
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);
        }
Beispiel #8
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);
            }
        }
Beispiel #9
0
 private static void InsertRow(IDatabaseClient client)
 {
     client.ExecuteNonQuery("`trade insert(`AIG;10.75;200)");
 }
Beispiel #10
0
 private static void CreateTrade(IDatabaseClient client)
 {
     client.ExecuteNonQuery("trade:([]sym:();price:();size:())");
 }