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; } }