public void Should_Read_All_Rows() { var expectedRows = 80; using (var server = new TestNpServer()) { server .Setup .ForQuery() .WithColumn(NqpTypes.Char, "name", 10) .WithColumn(NqpTypes.Int, "age") .Yields(expectedRows) .Completed() .Ready(); using (var connection = new NpSqlConnection(server.ConnectionString)) { connection.Open(); using (var command = new NpSqlCommand(connection)) { command.CommandText = "select * from test_table_name where name = 'heather'"; var reader = command.ExecuteReader(); reader.FastForwardAndAssert(expectedRows); } } } }
public void Read_Should_Return_False_When_No_Rows_Returned() { using (var server = new TestNpServer()) { server .Setup .ForQuery() .WithColumn(NqpTypes.Char, "name", 10) .WithColumn(NqpTypes.Int, "age") .Yields(0) .Completed() .Ready(); using (var connection = new NpSqlConnection(server.ConnectionString)) { connection.Open(); using (var command = new NpSqlCommand(connection)) { command.CommandText = "select * from test_table_name where name = 'heather'"; var reader = command.ExecuteReader(); var rows = reader.Read(); Assert.False(rows); } } } }
private static void IssueQuery(string sql, NpSqlConnection conn) { try { using (var command = new NpSqlCommand(conn)) { command.CommandText = sql; Stopwatch sw = new Stopwatch(); sw.Start(); using (var reader = (NpSqlDataReader)command.ExecuteReader()) { int rowLength = WriteColumnHeader(reader); rowLength = WriteVerticalSeperator(reader, rowLength); while (reader.Read()) { WriteRow(reader); } sw.Stop(); rowLength = WriteVerticalSeperator(reader, rowLength); Console.WriteLine($"Query ran in ({sw.Elapsed})"); } } } catch (NpSqlException e) { Console.WriteLine($"Error: {e.Message}"); } }
public void Attempt_Happy_Path() { using (var connection = new NpSqlConnection("Host=localhost;Port=15151")) { connection.Open(); } }
public void Should_Set_Field_Count() { using (var server = new TestNpServer()) { server .Setup .ForQuery() .WithColumn(NqpTypes.Char, "name", 10) .WithColumn(NqpTypes.Int, "age") .Yields(0) .Completed() .Ready(); using (var connection = new NpSqlConnection(server.ConnectionString)) { connection.Open(); using (var command = new NpSqlCommand(connection)) { command.CommandText = "select * from test_table_name where name = 'heather'"; var reader = command.ExecuteReader(); Assert.Equal(reader.FieldCount, server.Setup.QueryResults.First().FieldCount); } } } }
public void Reader_Happy_Path() { using (var connection = new NpSqlConnection("Host=localhost;Port=15151")) { connection.Open(); using (var command = new NpSqlCommand(connection)) { var recordNumber = 0; try { command.CommandText = "select * from test_table_name where name = 'heather'"; var reader = command.ExecuteReader(); while (reader.Read()) { var name = reader.GetString(0).Trim(); var age = reader.GetInt32(1); Assert.Equal("joseph", name); Assert.Equal(32, age); recordNumber++; } Assert.Equal(105, recordNumber); Console.WriteLine($"Got all {recordNumber}"); } catch (NpSqlException ex) { } } } }
public void Should_Connect_To_Server_On_Open() { using (var server = new TestNpServer()) { using (var connection = new NpSqlConnection(server.ConnectionString)) { connection.Open(); } } }
public void If_Connection_Refused_Throw_Exception() { using (var server = new TestNpServer()) { server.Setup.SetSaySorry(); using (var connection = new NpSqlConnection(server.ConnectionString)) { Assert.Throws <NpSqlException>(() => connection.Open()); } } }
public void Should_Close_Connection_On_Dispose() { using (var server = new TestNpServer()) { using (var connection = new NpSqlConnection(server.ConnectionString)) { connection.Open(); } Assert.False(server.ClientConnected); } }
public void Should_Set_Connection_Opened_On_Success() { using (var server = new TestNpServer()) { using (var connection = new NpSqlConnection(server.ConnectionString)) { connection.Open(); Assert.Equal(ConnectionState.Open, connection.State); } } }
public void Should_Set_MaxMessageSize_When_Opened() { using (var server = new TestNpServer()) { server.Setup.SetMaxMessageSize(512); using (var connection = new NpSqlConnection(server.ConnectionString)) { connection.Open(); Assert.Equal(server.Setup.MaxMessageSize, connection.Client.MaxMessageSize); } } }
public void Should_Return_Expected_Int_Value_From_Row() { var firstSet = 10; var secondSet = 5; var expectedInt = 33; using (var server = new TestNpServer()) { server .Setup .ForQuery() .WithColumn(NqpTypes.Char, "name", 10) .WithColumn(NqpTypes.Int, "age") .Yields(firstSet) .Yields("Heather", expectedInt) .Yields(secondSet) .Completed() .Ready(); using (var connection = new NpSqlConnection(server.ConnectionString)) { connection.Open(); using (var command = new NpSqlCommand(connection)) { command.CommandText = "select * from test_table_name where name = 'heather'"; var reader = command.ExecuteReader(); for (var i = 0; i < firstSet; i++) { reader.Read(); } reader.Read(); Assert.Equal(expectedInt, reader.GetInt32(1)); for (var i = 0; i < secondSet; i++) { reader.Read(); } } } } }
public void Should_Return_Reader_When_ExecuteReader() { using (var server = new TestNpServer()) { using (var connection = new NpSqlConnection(server.ConnectionString)) { connection.Open(); using (var command = new NpSqlCommand(connection)) { command.CommandText = "select * from test_table_name where name = 'heather'"; var reader = command.ExecuteReader(); Assert.NotNull(reader); } } } }
public void Should_Send_Query_To_Server_When_ExecuteReader() { using (var server = new TestNpServer()) { using (var connection = new NpSqlConnection(server.ConnectionString)) { connection.Open(); using (var command = new NpSqlCommand(connection)) { command.CommandText = "select * from test_table_name where name = 'heather'"; var reader = command.ExecuteReader(); Assert.Equal(command.CommandText, server.GetLastQuery(connection.ConnectionId)); } } } }
public void Should_Not_Require_Reading_To_End_Of_Result_For_NextResult() { var expectedSecondSetCount = 12; using (var server = new TestNpServer()) { server .Setup .ForQuery() .WithColumn(NqpTypes.Char, "name", 10) .WithColumn(NqpTypes.Int, "age") .Yields(10) .Completed() .ForQuery() .WithColumn(NqpTypes.Int, "int1") .WithColumn(NqpTypes.Int, "int2") .WithColumn(NqpTypes.Int, "int3") .Yields(expectedSecondSetCount) .Yields(123, 456, 789) .Completed() .Ready(); using (var connection = new NpSqlConnection(server.ConnectionString)) { connection.Open(); using (var command = new NpSqlCommand(connection)) { command.CommandText = "select * from test_table_one; select * from test_table_two"; var reader = command.ExecuteReader(); reader.NextResult(); reader.FastForwardAndAssert(expectedSecondSetCount); Assert.Equal(456, reader.GetInt32(1)); } } } }
public void Should_Return_Expected_String_Value_From_Row() { var firstSet = 10; var secondSet = 5; var expectedString = "Heather"; using (var server = new TestNpServer()) { server .Setup .ForQuery() .WithColumn(NqpTypes.Char, "name", 10) .WithColumn(NqpTypes.Int, "age") .Yields(firstSet) .Yields(expectedString, 33) .Yields(secondSet) .Completed() .Ready(); using (var connection = new NpSqlConnection(server.ConnectionString)) { connection.Open(); using (var command = new NpSqlCommand(connection)) { command.CommandText = "select * from test_table_name where name = 'heather'"; var reader = command.ExecuteReader(); reader.FastForward(firstSet); reader.Read(); Assert.Equal(expectedString, reader.GetString(0)); reader.FastForward(secondSet); } } } }
public void Should_Continue_To_Next_Query_Result_On_NextResult() { var expectedFirstSetCount = 10; var expectedSecondSetCount = 12; using (var server = new TestNpServer()) { server .Setup .ForQuery() .WithColumn(NqpTypes.Char, "name", 10) .WithColumn(NqpTypes.Int, "age") .Yields(expectedFirstSetCount) .Completed() .ForQuery() .WithColumn(NqpTypes.Int, "int1") .WithColumn(NqpTypes.Int, "int2") .WithColumn(NqpTypes.Int, "int3") .Yields(expectedSecondSetCount) .Completed() .Ready(); using (var connection = new NpSqlConnection(server.ConnectionString)) { connection.Open(); using (var command = new NpSqlCommand(connection)) { command.CommandText = "select * from test_table_one; select * from test_table_two"; var reader = command.ExecuteReader(); reader.FastForwardAndAssert(expectedFirstSetCount); reader.NextResult(); reader.FastForwardAndAssert(expectedSecondSetCount); } } } }
public void Attempt_To_Connect_Past_Session_Limit() { for (int loop = 0; loop < 1000; loop++) { var connection1 = new NpSqlConnection("Host=localhost;Port=15151"); connection1.Open(); connection1.Dispose(); var connections = new ConcurrentStack <NpSqlConnection>(); var failures = 0; for (int i = 0; i < 1; i++) { Task.Run(() => { try { var connection = new NpSqlConnection("Host=localhost;Port=15151"); connection.Open(); connections.Push(connection); } catch { failures++; } }); } for (int i = 0; i < 3; i++) { NpSqlConnection connection; if (connections.TryPop(out connection)) { connection.Dispose(); } } failures = 0; for (int i = 0; i < 2; i++) { try { var connection = new NpSqlConnection("Host=localhost;Port=15151"); connection.Open(); connections.Push(connection); } catch { failures++; } } foreach (var connection in connections) { connection.Dispose(); } } }
static void Main(string[] args) { //Host=localhost;Port=15151 var commandSplitChar = new char [] { ' ' }; var exit = false; var hasConnection = false; var connectionString = string.Empty; var defaultPort = 15151; NpSqlConnection connection = null; var prompt = "npsql > "; var qprompt = " > "; while (!exit) { Console.Write(prompt); var sql = Console.ReadLine(); var commandParts = sql.Split(commandSplitChar); switch (commandParts[0].ToLower()) { case "quit": exit = true; break; case "connect": if (commandParts.Length == 3) { connectionString = $"Host={commandParts[1]};Port={commandParts[2]}"; } else if (commandParts.Length == 2) { connectionString = $"Host={commandParts[1]};Port={defaultPort}"; } else { Console.WriteLine("Wasn't expecting that."); } connection = new NpSqlConnection(connectionString); try { connection.Open(); hasConnection = true; } catch (NpSqlException e) { Console.WriteLine(e.Message); } break; case "disconnect": if (connection != null) { connection.Dispose(); connection = null; } break; case "query": if (!hasConnection) { Console.WriteLine("You need to connect first"); } else { StringBuilder sb = new StringBuilder(); Console.Write(qprompt); var entry = Console.ReadLine(); while (entry != "!s") { sb.Append(entry); Console.Write(qprompt); entry = Console.ReadLine(); } IssueQuery(sb.ToString(), connection); } break; default: if (!hasConnection) { Console.WriteLine("You need to connect first"); } else { IssueQuery(sql, connection); } // Assume its sql and see what a happens break; } } if (connection != null) { connection.Dispose(); connection = null; } }