Exemple #1
0
        public void CreateResultSet(string queriesDirectory)
        {
            var queryFiles = System.IO.Directory.EnumerateFiles(queriesDirectory);

            if (!Directory.Exists(_resultSetWriter.PersistencePath))
            {
                Directory.CreateDirectory(_resultSetWriter.PersistencePath);
            }

            foreach (var queryFile in queryFiles)
            {
                string query;
                using (StreamReader infile = new StreamReader(Path.Combine(queriesDirectory, queryFile)))
                {
                    query = infile.ReadToEnd();
                }

                var qe = new QueryEngineFactory().GetExecutor(query, ConnectionString);

                var ds = qe.Execute();

                var resultFile = Path.GetFileName(Path.ChangeExtension(queryFile, "csv"));
                _resultSetWriter.Write(resultFile, ds);
            }
        }
Exemple #2
0
        public void Parse_DontExecuteEffectivelyQuery(EngineType engineType)
        {
            var sqlCount = @"SELECT COUNT(*) from [HumanResources].[Department]";
            var sql      = @"DELETE from [HumanResources].[Department]";

            var countBefore = ExecuteCount(sqlCount);

            if (countBefore == 0) //If nothing was present we cannot assert
            {
                Assert.Inconclusive();
            }

            var cmd = BuildCommand(sql, engineType);
            var qp  = new QueryEngineFactory().GetParser(cmd);

            var res = qp.Parse();

            if (!res.IsSuccesful)//If syntax is incorrect we cannot assert
            {
                Assert.Inconclusive();
            }

            var countAfter = ExecuteCount(sqlCount);

            Assert.That(countAfter, Is.EqualTo(countBefore));
        }
Exemple #3
0
        public void GetExecutor_OdbcConnectionString_OdbcEngine()
        {
            var factory  = new QueryEngineFactory();
            var cmd      = new OdbcCommand("select @@version;", new OdbcConnection(ConnectionStringReader.GetOdbcSql()));
            var executor = factory.GetExecutor(cmd);

            Assert.IsInstanceOf <QueryOdbcEngine>(executor);
        }
Exemple #4
0
        public void GetExecutor_SqlNativeConnectionString_SqlNativeEngine()
        {
            var factory  = new QueryEngineFactory();
            var cmd      = new SqlCommand("select @@version;", new SqlConnection(ConnectionStringReader.GetSqlClient()));
            var executor = factory.GetExecutor(cmd);

            Assert.IsInstanceOf <QuerySqlEngine>(executor);
        }
Exemple #5
0
        protected virtual object ExecuteQuery(IDbCommand command)
        {
            var factory     = new QueryEngineFactory();
            var queryEngine = factory.GetExecutor(command);
            var value       = queryEngine.ExecuteScalar();

            return(value);
        }
        protected virtual ResultSet Load(IDbCommand command)
        {
            var qe = new QueryEngineFactory().GetExecutor(command);
            var ds = qe.Execute();
            var rs = new ResultSet();

            rs.Load(ds);
            return(rs);
        }
Exemple #7
0
        public virtual ResultSet Build(IDbCommand cmd)
        {
            var qe = new QueryEngineFactory().GetExecutor(cmd);
            var ds = qe.Execute();
            var rs = new ResultSet();

            rs.Load(ds);
            return(rs);
        }
Exemple #8
0
        public void Parse_CorrectFields_Success(EngineType engineType)
        {
            var sql = "select [DepartmentID], Name from [HumanResources].[Department];";
            var cmd = BuildCommand(sql, engineType);
            var qp  = new QueryEngineFactory().GetParser(cmd);

            var res = qp.Parse();

            Assert.That(res.IsSuccesful, Is.True);
        }
Exemple #9
0
        public void Parse_CorrectFields_Success()
        {
            var sql = "select [DepartmentID], Name from [HumanResources].[Department];";
            var cmd = new SqlCommand(sql, new SqlConnection(ConnectionStringReader.GetSqlClient()));
            var qp  = new QueryEngineFactory().GetParser(cmd);

            var res = qp.Parse();

            Assert.That(res.IsSuccesful, Is.True);
        }
Exemple #10
0
        public void Parse_CorrectTableName_Success(EngineType engineType)
        {
            var sql = "SELECT * FROM [HumanResources].[Department];";
            var cmd = BuildCommand(sql, engineType);
            var qp  = new QueryEngineFactory().GetParser(cmd);

            var res = qp.Parse();

            Assert.That(res.IsSuccesful, Is.True);
        }
        public void CheckPerformance_OneQuery_ReturnElapsedTime(EngineType engineType)
        {
            var sql = "WAITFOR DELAY '00:00:00';";
            var cmd = BuildCommand(sql, engineType);

            var qp  = new QueryEngineFactory().GetPerformance(cmd);
            var res = qp.CheckPerformance();

            Assert.That(res.TimeElapsed.TotalMilliseconds, Is.GreaterThanOrEqualTo(0).And.LessThan(5000));
            Assert.That(res.IsTimeOut, Is.False);
        }
Exemple #12
0
        public void CheckPerformance_OneQueryHavingTimeout_ReturnTimeoutInfo()
        {
            var sql = "WAITFOR DELAY '00:00:03';";
            var cmd = new SqlCommand(sql, new SqlConnection(ConnectionStringReader.GetSqlClient()));

            var qp  = new QueryEngineFactory().GetPerformance(cmd);
            var res = qp.CheckPerformance(1000);

            Assert.That(res.TimeOut.TotalMilliseconds, Is.EqualTo(1000));
            Assert.That(res.IsTimeOut, Is.True);
        }
Exemple #13
0
        public void Parse_WrongTableName_Failed()
        {
            var sql = "SELECT * FROM WrongTableName;";
            var cmd = new SqlCommand(sql, new SqlConnection(ConnectionStringReader.GetSqlClient()));
            var qp  = new QueryEngineFactory().GetParser(cmd);

            var res = qp.Parse();

            Assert.That(res.IsSuccesful, Is.False);
            Assert.That(res.Errors[0], Is.EqualTo("Invalid object name 'WrongTableName'."));
        }
Exemple #14
0
        public void Parse_WrongSyntax_Failed()
        {
            var sql = "SELECTION [DepartmentID], Name, WrongField1, WrongField2 from [HumanResources].[Department];";
            var cmd = new SqlCommand(sql, new SqlConnection(ConnectionStringReader.GetSqlClient()));
            var qp  = new QueryEngineFactory().GetParser(cmd);

            var res = qp.Parse();

            Assert.That(res.IsSuccesful, Is.False);
            Assert.That(res.Errors[0], Is.EqualTo("Incorrect syntax near 'SELECTION'."));
        }
        public void CheckPerformance_OneQueryHavingTimeout_ReturnTimeoutInfo(EngineType engineType)
        {
            var sql = "WAITFOR DELAY '00:00:03';";
            var cmd = BuildCommand(sql, engineType);

            var qp  = new QueryEngineFactory().GetPerformance(cmd);
            var res = qp.CheckPerformance(1000);

            Assert.That(res.TimeOut.TotalMilliseconds, Is.EqualTo(1000));
            Assert.That(res.IsTimeOut, Is.True);
        }
Exemple #16
0
        public void Parse_WrongField_Failed()
        {
            var sql = "select [DepartmentID], Name, WrongField from [HumanResources].[Department];";
            var cmd = new SqlCommand(sql, new SqlConnection(ConnectionStringReader.GetSqlClient()));
            var qp  = new QueryEngineFactory().GetParser(cmd);

            var res = qp.Parse();

            Assert.That(res.IsSuccesful, Is.False);
            Assert.That(res.Errors[0], Is.EqualTo("Invalid column name 'WrongField'."));
        }
Exemple #17
0
        public void CheckPerformance_OneQuery_ReturnElapsedTime()
        {
            var sql = "WAITFOR DELAY '00:00:00';";
            var cmd = new SqlCommand(sql, new SqlConnection(ConnectionStringReader.GetSqlClient()));

            var qp  = new QueryEngineFactory().GetPerformance(cmd);
            var res = qp.CheckPerformance();

            Assert.That(res.TimeElapsed.TotalMilliseconds, Is.GreaterThanOrEqualTo(0).And.LessThan(5000));
            Assert.That(res.IsTimeOut, Is.False);
        }
Exemple #18
0
        public void Parse_WrongTableName_Failed(EngineType engineType)
        {
            var sql = "SELECT * FROM WrongTableName;";
            var cmd = BuildCommand(sql, engineType);
            var qp  = new QueryEngineFactory().GetParser(cmd);

            var res = qp.Parse();

            Assert.That(res.IsSuccesful, Is.False);
            Assert.That(res.Errors[0], Is.EqualTo("Invalid object name 'WrongTableName'."));
        }
Exemple #19
0
        public void Parse_WrongSyntax_Failed(EngineType engineType)
        {
            var sql = "SELECTION [DepartmentID], Name, WrongField1, WrongField2 from [HumanResources].[Department];";
            var cmd = BuildCommand(sql, engineType);
            var qp  = new QueryEngineFactory().GetParser(cmd);

            var res = qp.Parse();

            Assert.That(res.IsSuccesful, Is.False);
            Assert.That(res.Errors[0], Is.EqualTo("Incorrect syntax near 'SELECTION'."));
        }
Exemple #20
0
        public void Parse_WrongField_Failed(EngineType engineType)
        {
            var sql = "select [DepartmentID], Name, WrongField from [HumanResources].[Department];";
            var cmd = BuildCommand(sql, engineType);
            var qp  = new QueryEngineFactory().GetParser(cmd);

            var res = qp.Parse();

            Assert.That(res.IsSuccesful, Is.False);
            Assert.That(res.Errors[0], Is.EqualTo("Invalid column name 'WrongField'."));
        }
Exemple #21
0
        public void ReadFromQuery(string query, string connectionString)
        {
            var queryEngineFactory = new QueryEngineFactory();
            var queryEngine        = queryEngineFactory.GetExecutor(query, connectionString);
            var ds = queryEngine.Execute();

            content = ds.Tables[0];

            variables.Clear();
            foreach (DataColumn col in Content.Columns)
            {
                variables.Add(col.ColumnName);
            }
        }
Exemple #22
0
        protected IList <object> GetMembersFromResultSet(Object obj)
        {
            if (!(obj is IDbCommand))
            {
                throw new ArgumentException();
            }

            var args     = new DbCommandQueryResolverArgs((IDbCommand)obj);
            var factory  = new QueryResolverFactory();
            var resolver = factory.Instantiate(args);
            var command  = resolver.Execute();

            var qe      = new QueryEngineFactory().GetExecutor(command);
            var members = qe.ExecuteList <string>();

            return(members.Cast <object>().ToList());
        }
Exemple #23
0
        public void PersistResultSets()
        {
            if (ProgressStatusChanged != null)
            {
                ProgressStatusChanged(this, new ProgressStatusEventArgs(string.Format("Parsing directory {0}", DirectoryQueries)));
            }

            var files = Directory.GetFiles(DirectoryQueries, Pattern);
            var i     = 1;

            foreach (var file in files)
            {
                i++;

                if (ProgressStatusChanged != null)
                {
                    ProgressStatusChanged(this, new ProgressStatusEventArgs(String.Format("Executing query {0} of {1}", i, files.Length + 1), i, files.Length + 1));
                }

                var query = File.ReadAllText(file);
                var qe    = new QueryEngineFactory().GetExecutor(query, ConnectionString);

                var ds = qe.Execute();

                if (ProgressStatusChanged != null)
                {
                    ProgressStatusChanged(this, new ProgressStatusEventArgs(String.Format("Persisting results set for {0} of {1}", i, files.Length + 1), i, files.Length + 1));
                }
                ResultSetWriter.Write(Path.GetFileNameWithoutExtension(file) + String.Format(".csv"), ds);
            }

            if (ProgressStatusChanged != null)
            {
                ProgressStatusChanged(this, new ProgressStatusEventArgs(string.Format("Directory {0} parsed", DirectoryQueries)));
            }
        }
Exemple #24
0
        public static async Task Main()
        {
            var store = new InMemoryKeyValueStore();

            {
                Console.Write("Create new engine... ");

                var qe = await QueryEngineFactory.CreateNewAsync(store);

                Console.WriteLine("Done.");

                var ctx = qe.Client;

                Console.Write("Create timer subscription... ");

                await ctx.Timer(TimeSpan.FromSeconds(1)).Select(t => t.ToString()).SubscribeAsync(ctx.ConsoleOut, new Uri("reaqtor://shebang/subscriptions/tick"), state: null);

                Console.WriteLine("Done.");

                Console.Write("Checkpoint engine... ");

                await qe.CheckpointAsync();

                Console.WriteLine("Done.");

                await Task.Delay(5000);

                Console.Write("Unload engine... ");

                await qe.UnloadAsync();

                Console.WriteLine("Done.");
            }

            {
                Console.Write("Recover engine... ");

                var qe = await QueryEngineFactory.RecoverAsync(store);

                Console.WriteLine("Done.");

                var ctx = qe.Client;

                await Task.Delay(5000);

                Console.Write("Delete subscription... ");

                await ctx.GetSubscription(new Uri("reaqtor://shebang/subscriptions/tick")).DisposeAsync();

                Console.WriteLine("Done.");

                await Task.Delay(5000);

                Console.Write("Checkpoint engine... ");

                await qe.CheckpointAsync();

                Console.WriteLine("Done.");

                Console.Write("Unload engine... ");

                await qe.UnloadAsync();

                Console.WriteLine("Done.");
            }
        }