Пример #1
0
        public void IsLoadProcessKeySetIfRestarted()
        {
            //Arrange
            ControlFlow.DefaultDbConnection = SqlConnection;
            CreateLoadProcessTableTask.Create("test_lp_restart");
            CreateLogTableTask.Create("test_log_restart");
            ControlFlow.AddLoggingDatabaseToConfig(SqlConnection, NLog.LogLevel.Info, "test_log_restart");

            //Act
            StartLoadProcessTask.Start("Test process 13");
            long?processId1 = ControlFlow.CurrentLoadProcess.Id;

            SqlTask.ExecuteNonQuery("Test Task", "Select 1 as test");
            Assert.Equal(2, new RowCountTask("test_log_restart", $"message='Test Task' AND load_process_id = {processId1}")
            {
                DisableLogging = true
            }.Count().Rows);

            StartLoadProcessTask.Start("Test process 14");
            long?processId2 = ControlFlow.CurrentLoadProcess.Id;

            //Assert
            Assert.NotEqual(processId1, processId2);
            SqlTask.ExecuteNonQuery("Test Task", "Select 1 as test");
            Assert.Equal(2, new RowCountTask("test_log_restart", $"message='Test Task' AND load_process_id = {processId2}")
            {
                DisableLogging = true
            }.Count().Rows);

            //Cleanup
            DropTableTask.Drop(ControlFlow.LogTable);
            DropTableTask.Drop(ControlFlow.LoadProcessTable);
        }
Пример #2
0
        public void EndLoadProcess(IConnectionManager connection)
        {
            //Arrange
            CreateLoadProcessTableTask.Create(connection, "test_lp_end");

            StartLoadProcessTask.Start(connection, "Test process 2");
            Assert.True(ControlFlow.CurrentLoadProcess.IsRunning == true);

            //Act
            EndLoadProcessTask.End(connection, "End process 2");

            //Assert
            Assert.True(ControlFlow.CurrentLoadProcess.IsRunning == false);
            Assert.True(ControlFlow.CurrentLoadProcess.WasSuccessful == true);
            Assert.True(ControlFlow.CurrentLoadProcess.IsFinished == true);
            Assert.True(ControlFlow.CurrentLoadProcess.EndDate >= DateTime.Now.AddSeconds(-1));

            Assert.Equal(1, RowCountTask.Count(connection, "test_lp_end",
                                               "is_running=0 and was_successful=1 and was_aborted=0"));
            Assert.Equal(1, RowCountTask.Count(connection, "test_lp_end",
                                               "start_message IS NULL AND end_message = 'End process 2' AND abort_message IS NULL"));

            //Cleanup
            DropTableTask.Drop(connection, "test_lp_end");
        }
Пример #3
0
        public void IsLoadProcessKeySetForLogTask()
        {
            //Arrange
            ControlFlow.DefaultDbConnection = SqlConnection;
            CreateLoadProcessTableTask.Create("test_lp_logtask");
            CreateLogTableTask.Create("test_log_logtask");
            ControlFlow.AddLoggingDatabaseToConfig(SqlConnection, NLog.LogLevel.Info, "test_log_logtask");

            //Act
            StartLoadProcessTask.Start("Test process 15");
            long?processId1 = ControlFlow.CurrentLoadProcess.Id;

            LogTask.Error("Test1");
            LogTask.Warn("Test2");
            LogTask.Info("Test3");
            //Assert
            Assert.Equal(3, new RowCountTask("test_log_logtask",
                                             $"message like 'Test%' AND load_process_id = {processId1}")
            {
                DisableLogging = true
            }.Count().Rows);

            //Cleanup
            DropTableTask.Drop(ControlFlow.LogTable);
            DropTableTask.Drop(ControlFlow.LoadProcessTable);
        }
Пример #4
0
        public void ReadLastAbortedProcess()
        {
            //Arrange
            ControlFlow.DefaultDbConnection = SqlConnection;
            CreateLoadProcessTableTask.Create("test_lpkey_lastabort");
            StartLoadProcessTask.Start("Test process 10");
            Task.Delay(10).Wait(); //Sql Server datetime is not that exact
            EndLoadProcessTask.End();
            Task.Delay(10).Wait();
            StartLoadProcessTask.Start("Test process 11");
            Task.Delay(10).Wait(); //Sql Server datetime is not that exact
            AbortLoadProcessTask.Abort();
            StartLoadProcessTask.Start("Test process 12");
            Task.Delay(10).Wait(); //Sql Server datetime is not that exact
            EndLoadProcessTask.End();

            //Act
            var lp = ReadLoadProcessTableTask.ReadWithOption(ReadOptions.ReadLastAborted);

            //Assert
            Assert.True(lp.IsFinished);
            Assert.True(lp.WasAborted);
            Assert.False(lp.WasSuccessful);
            Assert.Equal("Test process 11", lp.ProcessName);

            //Cleanup
            DropTableTask.Drop(SqlConnection, "test_lpkey_lastabort");
        }
Пример #5
0
        public void IsLoadProcessKeyInLog(IConnectionManager conn)
        {
            //Arrange
            CreateLoadProcessTableTask.Create(conn, "test_lpkey_inlog");
            CreateLogTableTask.Create(conn, "test_lpkey_log");
            ControlFlow.AddLoggingDatabaseToConfig(conn, NLog.LogLevel.Info, "test_lpkey_log");
            StartLoadProcessTask.Start(conn, "Test process 5");

            //Act
            string fromdual = conn.GetType() == typeof(OracleConnectionManager) ? "FROM DUAL" : "";

            SqlTask.ExecuteNonQuery(conn, "Test Task", $"Select 1 AS test {fromdual}");

            //Assert
            Assert.Equal(2, new RowCountTask("test_lpkey_log",
                                             $"{conn.QB}message{conn.QE}='Test Task' AND {conn.QB}load_process_id{conn.QE} = {ControlFlow.CurrentLoadProcess.Id}")
            {
                DisableLogging    = true,
                ConnectionManager = conn
            }.Count().Rows);;

            //Cleanup
            DropTableTask.Drop(conn, ControlFlow.LogTable);
            DropTableTask.Drop(conn, ControlFlow.LoadProcessTable);
        }
Пример #6
0
 public GetLogAsJsonTests(LoggingDatabaseFixture dbFixture)
 {
     CreateLoadProcessTableTask.Create(SqlConnection);
     CreateLogTableTask.Create(SqlConnection);
     ControlFlow.AddLoggingDatabaseToConfig(SqlConnection);
     ControlFlow.DefaultDbConnection = SqlConnection;
 }
Пример #7
0
        public void StartLoadProcessWithMessage(IConnectionManager connection)
        {
            //Arrange
            CreateLoadProcessTableTask.Create(connection, "test_lp_withmessage");

            //Act
            StartLoadProcessTask.Start(connection, "Test process 1", "Message 1", "SourceA");

            //Assert
            Assert.Equal(1, RowCountTask.Count(connection, "test_lp_withmessage",
                                               "start_message = 'Message 1' AND source='SourceA' AND end_message IS NULL AND abort_message IS NULL"));

            //Cleanup
            DropTableTask.Drop(connection, "test_lp_withmessage");
        }
Пример #8
0
        public void CreateLoadProcessTable(IConnectionManager connection)
        {
            //Arrange
            //Act
            CreateLoadProcessTableTask.Create(connection, "etlbox_testloadprocess");

            //Assert
            IfTableOrViewExistsTask.IsExisting(connection, "etlbox_testloadprocess");
            var td = TableDefinition.GetDefinitionFromTableName("etlbox_testloadprocess", connection);

            Assert.True(td.Columns.Count == 11);

            //Cleanup
            DropTableTask.Drop(connection, "etlbox_testloadprocess");
        }
Пример #9
0
        public void StartLoadProcess(IConnectionManager connection)
        {
            //Arrange
            CreateLoadProcessTableTask.Create(connection, "test_load_process");

            //Act
            StartLoadProcessTask.Start(connection, "Test process 1");

            //Assert
            Assert.True(ControlFlow.CurrentLoadProcess != null);
            Assert.Equal("Test process 1", ControlFlow.CurrentLoadProcess.ProcessName);
            Assert.True(ControlFlow.CurrentLoadProcess.StartDate >= DateTime.Now.AddSeconds(-1));
            Assert.Equal(1, RowCountTask.Count(connection, ControlFlow.LoadProcessTable,
                                               "start_message IS NULL and end_message IS NULL and abort_message IS NULL"));
            Assert.Equal(1, RowCountTask.Count(connection, ControlFlow.LoadProcessTable,
                                               "is_running = 1 AND was_successful=0 AND was_aborted=0"));

            //Cleanup
            DropTableTask.Drop(connection, "test_load_process");
        }
Пример #10
0
        public void AbortLoadProcess()
        {
            //Arrange
            CreateLoadProcessTableTask.Create(SqlConnection, "test_lp_abort");

            StartLoadProcessTask.Start(SqlConnection, "Test process 3");
            Assert.True(ControlFlow.CurrentLoadProcess.IsRunning == true);

            //Act
            AbortLoadProcessTask.Abort(SqlConnection, ControlFlow.CurrentLoadProcess.Id);

            //Assert
            Assert.True(ControlFlow.CurrentLoadProcess.IsRunning == false);
            Assert.True(ControlFlow.CurrentLoadProcess.WasAborted == true);
            Assert.True(ControlFlow.CurrentLoadProcess.AbortMessage == null);
            Assert.Equal(1, RowCountTask.Count(SqlConnection, "test_lp_abort"
                                               , "is_running=0 and was_successful=0 and was_aborted=1"));

            //Cleanup
            DropTableTask.Drop(SqlConnection, "test_lp_abort");
        }
Пример #11
0
        public void IsLoadProcessKeyInLog(IConnectionManager connection)
        {
            //Arrange
            CreateLoadProcessTableTask.Create(connection, "test_lpkey_inlog");
            CreateLogTableTask.Create(connection, "test_lpkey_log");
            ControlFlow.AddLoggingDatabaseToConfig(connection, NLog.LogLevel.Info, "test_lpkey_log");
            StartLoadProcessTask.Start(connection, "Test process 5");

            //Act
            SqlTask.ExecuteNonQuery(connection, "Test Task", "Select 1 as test");

            //Assert
            Assert.Equal(2, new RowCountTask("test_lpkey_log",
                                             $"message='Test Task' and load_process_id = {ControlFlow.CurrentLoadProcess.Id}")
            {
                DisableLogging    = true,
                ConnectionManager = connection
            }.Count().Rows);;

            //Cleanup
            DropTableTask.Drop(connection, ControlFlow.LogTable);
            DropTableTask.Drop(connection, ControlFlow.LoadProcessTable);
        }
 public GetLoadProcessAsJSONTaskTests(LoggingDatabaseFixture dbFixture)
 {
     CreateLogTableTask.Create(SqlConnection);
     CreateLoadProcessTableTask.Create(SqlConnection);
     ControlFlow.AddLoggingDatabaseToConfig(SqlConnection);
 }