public void ExceptionAtNonQueryTest() { using (IDatabaseClient client = CreateDatabaseClient()) { client.ExecuteNonQuery("exception"); } }
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); } } }
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)); } }
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); } }
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); } }
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); } } }
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); }
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); } }
private static void InsertRow(IDatabaseClient client) { client.ExecuteNonQuery("`trade insert(`AIG;10.75;200)"); }
private static void CreateTrade(IDatabaseClient client) { client.ExecuteNonQuery("trade:([]sym:();price:();size:())"); }