Ejemplo n.º 1
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 3
0
        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}");
            }
        }
Ejemplo n.º 4
0
 public void Attempt_Happy_Path()
 {
     using (var connection = new NpSqlConnection("Host=localhost;Port=15151"))
     {
         connection.Open();
     }
 }
Ejemplo n.º 5
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 6
0
        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)
                    {
                    }
                }
            }
        }
Ejemplo n.º 7
0
 public void Should_Connect_To_Server_On_Open()
 {
     using (var server = new TestNpServer())
     {
         using (var connection = new NpSqlConnection(server.ConnectionString))
         {
             connection.Open();
         }
     }
 }
Ejemplo n.º 8
0
        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());
                }
            }
        }
Ejemplo n.º 9
0
        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);
            }
        }
Ejemplo n.º 10
0
        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);
                }
            }
        }
Ejemplo n.º 11
0
        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);
                }
            }
        }
Ejemplo n.º 12
0
        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();
                        }
                    }
                }
            }
        }
Ejemplo n.º 13
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 14
0
        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));
                    }
                }
            }
        }
Ejemplo n.º 15
0
        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));
                    }
                }
            }
        }
Ejemplo n.º 16
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 17
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 18
0
        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();
                }
            }
        }
Ejemplo n.º 19
0
        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;
            }
        }