public void ExecutionEngineTest_SQLCmds() { string[] sqlStatements = { "select $(INVALIDVAR) from sysobjects", ":help", "exit", "quit", "!! dir", "ed", "reset", ":list", ":listvar", ":serverlist", ":on error ignore", ":connect hypothermia -t 300 -U foo -P bar", ":out $(SystemDrive)\\test.txt", ":r $(SystemDrive)\\test.txt", ":error STDOUT", ":perftrace STDOUT", "exit (Select count(*) from sysobjects)" }; ExecutionEngineConditions conditions = new ExecutionEngineConditions(); foreach (string stmt in sqlStatements) { TestExecutor executor = new TestExecutor(stmt, connection, conditions); executor.Run(); //Assert.AreEqual(ScriptExecutionResult.Failure, executor.ExecutionResult); //Assert.IsTrue(executor.ResultCountQueue.Count == 0); } }
/// <summary> /// Test with execution timeout value /// </summary> //TEST_DOESNOTWORK[TestMethod()] public void ExecutionEngineTest_TimeOut() { string sqlStatement = "select * from sysobjects\n go 10\n"; ExecutionEngineConditions conditions = new ExecutionEngineConditions(); conditions.IsTransactionWrapped = true; conditions.IsParseOnly = false; conditions.IsHaltOnError = false; TestExecutor executor = new TestExecutor(sqlStatement, connection, conditions, -1); executor.Run(); Assert.Equal(executor.ExecutionResult, ScriptExecutionResult.Success); }
public void ExecutionEngineTest_ParseOnly_ValidScriptWithoutTransaction() { string sqlStatement = "select * from sysobjects"; ExecutionEngineConditions conditions = new ExecutionEngineConditions(); conditions.IsTransactionWrapped = false; conditions.IsParseOnly = true; conditions.IsHaltOnError = false; TestExecutor executor = new TestExecutor(sqlStatement, connection, conditions); executor.Run(); Assert.Equal(ScriptExecutionResult.Success, executor.ExecutionResult); Assert.True(executor.ResultCountQueue.Count == 0); Assert.Equal(0, executor.BatchFinshedEventCounter); }
public void ExecutionEngineTest_InvalidConnection() { string sqlStatement = "select * from sysobjects\n go 100\n"; ExecutionEngineConditions conditions = new ExecutionEngineConditions(); conditions.IsTransactionWrapped = true; conditions.IsParseOnly = false; conditions.IsHaltOnError = false; connection.Close(); TestExecutor executor = new TestExecutor(sqlStatement, connection, conditions); executor.Run(); // Note: this used to also return Halted at some point in the distant past. // However since that gets mapped to Failure anyhow, consider "Failure" as acceptable here Assert.True(executor.ExecutionResult.HasFlag(ScriptExecutionResult.Failure), "Expected failure when invalid connection is present"); }
public void ExecutionEngineTest_DefaultCondition_ValidScript() { string sqlStatement = "select * from sysobjects\nGo\n"; //Use default execution condition ExecutionEngineConditions conditions = new ExecutionEngineConditions(); TestExecutor executor = new TestExecutor(sqlStatement, connection, conditions, false); executor.Run(); //Get the expected values List <string> batchScripts = executor.BatchScripts; ExecuteSqlBatch(batchScripts, connection); Assert.Equal(ScriptExecutionResult.Success, executor.ExecutionResult); Assert.True(CompareTwoIntLists(executor.ResultCountQueue, expResultCounts)); }
public void ExecutionEngineTest_SyncCancel() { string sqlStatement = "waitfor delay '0:0:10'"; ExecutionEngineConditions conditions = new ExecutionEngineConditions(); conditions.IsTransactionWrapped = true; conditions.IsParseOnly = false; conditions.IsHaltOnError = false; TestExecutor executor = new TestExecutor(sqlStatement, connection, conditions, true); executor.CancelTimeOut = 3000; executor.Run(); Assert.NotNull(executor.ScriptExecuteThread); Assert.Equal(ScriptExecutionResult.Cancel, executor.ExecutionResult); Assert.True(executor.CancelEventFired); }
public void ExecutionEngineTest_DefaultCondition_InvalidScript() { string sqlStatement = "select ** from sysobjects"; //Use default execution condition ExecutionEngineConditions conditions = new ExecutionEngineConditions(); TestExecutor executor = new TestExecutor(sqlStatement, connection, conditions, false); executor.Run(); //Get the expected values List <string> batchScripts = executor.BatchScripts; ExecuteSqlBatch(batchScripts, connection); Assert.Equal(ScriptExecutionResult.Success | ScriptExecutionResult.Failure, executor.ExecutionResult); Assert.True(!executor.ParserExecutionError); Assert.True(CompareTwoStringLists(executor.ErrorMessageQueue, expErrorMessage)); Assert.True(CompareTwoIntLists(executor.ResultCountQueue, expResultCounts)); Assert.Equal(0, executor.BatchFinshedEventCounter); }
public void TestExecutionEngineConditions() { string sqlStatement = "select * from sys.databases\ngo\nselect name from sys.databases\ngo\nprint 'test'\ngo"; ExecutionEngineConditions conditions = new ExecutionEngineConditions(); conditions.IsNoExec = true; conditions.IsStatisticsIO = true; conditions.IsStatisticsTime = true; conditions.IsEstimatedShowPlan = true; TestExecutor executor = new TestExecutor(sqlStatement, connection, conditions, false); executor.Run(); //Get the expected values List <string> batchScripts = executor.BatchScripts; ExecuteSqlBatch(batchScripts, connection); Assert.Equal(ScriptExecutionResult.Success, executor.ExecutionResult); Assert.True(CompareTwoIntLists(executor.ResultCountQueue, expResultCounts)); }
/// <summary> /// Test sync cancel when the execution is done /// </summary> /// /// Disabled test, has race condition where Sql statement will finish /// before harness has an opportunity to cancel. //TEST_DOESNOTWORK[TestMethod()] public void ExecutionEngineTest_SyncCancelAfterExecutionDone() { string sqlStatement = "select 1"; ExecutionEngineConditions conditions = new ExecutionEngineConditions(); conditions.IsTransactionWrapped = true; conditions.IsParseOnly = false; conditions.IsHaltOnError = false; TestExecutor executor = new TestExecutor(sqlStatement, connection, conditions, true); executor.Run(); Assert.True(!executor.CancelEventFired); Assert.NotNull(executor.ScriptExecuteThread); if (executor.ScriptExecuteThread != null) { Assert.True(!executor.ScriptExecuteThread.IsAlive); } Assert.Equal(ScriptExecutionResult.Success | ScriptExecutionResult.Cancel, executor.ExecutionResult); }
public void ExecutionEngineTest_TestComment() { string sqlStatement = "/*test comments*/"; ExecutionEngineConditions conditions = new ExecutionEngineConditions(); conditions.IsTransactionWrapped = true; conditions.IsParseOnly = false; conditions.IsHaltOnError = false; TestExecutor executor = new TestExecutor(sqlStatement, connection, conditions); executor.Run(); //Get the expected values List <string> batchScripts = executor.BatchScripts; ExecuteSqlBatch(batchScripts, connection); Assert.Equal(ScriptExecutionResult.Success, executor.ExecutionResult); Assert.True(CompareTwoIntLists(executor.ResultCountQueue, expResultCounts)); }
public void ExecutionEngineTest_MultiValidScripts() { string sqlStatement = "select * from sys.databases\ngo\nselect name from sys.databases\ngo\nprint 'test'\ngo"; ExecutionEngineConditions conditions = new ExecutionEngineConditions(); conditions.IsTransactionWrapped = true; conditions.IsParseOnly = false; conditions.IsHaltOnError = false; TestExecutor executor = new TestExecutor(sqlStatement, connection, conditions, false); executor.Run(); //Get the expected values List <string> batchScripts = executor.BatchScripts; ExecuteSqlBatch(batchScripts, connection); Assert.Equal(ScriptExecutionResult.Success, executor.ExecutionResult); Assert.True(CompareTwoIntLists(executor.ResultCountQueue, expResultCounts)); }
public void ExecutionEngineTest_ParseOnly_InvalidScript() { string sqlStatement = "select ** from authors"; ExecutionEngineConditions conditions = new ExecutionEngineConditions(); conditions.IsTransactionWrapped = true; conditions.IsParseOnly = true; conditions.IsHaltOnError = false; TestExecutor executor = new TestExecutor(sqlStatement, connection, conditions); executor.Run(); //Get the expected values List <string> batchScripts = executor.BatchScripts; ExecuteSqlBatch(batchScripts, connection); Assert.Equal(ScriptExecutionResult.Success | ScriptExecutionResult.Failure, executor.ExecutionResult); Assert.True(!executor.ParserExecutionError); Assert.True(executor.ResultCountQueue.Count == 0); Assert.True(CompareTwoStringLists(executor.ErrorMessageQueue, expErrorMessage)); }
public void ExecutionEngineTest_ASyncCancel() { //string sqlStatement = "--This is a test\nSELECT * FROM sysobjects as t\nGO 50\n use pubsplus \n select * from titles\n go" ; string sqlStatement = "waitfor delay '0:0:10'"; ExecutionEngineConditions conditions = new ExecutionEngineConditions(); conditions.IsTransactionWrapped = true; conditions.IsParseOnly = false; conditions.IsHaltOnError = false; TestExecutor executor = new TestExecutor(sqlStatement, connection, conditions, true); executor.SyncCancel = false; executor.Run(); Assert.True(executor.CancelEventFired); Assert.NotNull(executor.ScriptExecuteThread); if (executor.ScriptExecuteThread != null) { Assert.True(!executor.ScriptExecuteThread.IsAlive); } Assert.Equal(ScriptExecutionResult.Cancel, executor.ExecutionResult); }
public void ExecutionEngineTest_HaltOnError_OneBatch() { string sqlStatement = "select * from authors\n go 30\n"; ExecutionEngineConditions conditions = new ExecutionEngineConditions(); conditions.IsTransactionWrapped = true; conditions.IsParseOnly = false; conditions.IsHaltOnError = true; TestExecutor executor = new TestExecutor(sqlStatement, connection, conditions); executor.Run(); //Get the expected values List <string> batchScripts = executor.BatchScripts; ExecuteSqlBatch(batchScripts, connection); Assert.Equal(ScriptExecutionResult.Halted | ScriptExecutionResult.Failure, executor.ExecutionResult); Assert.True(CompareTwoStringLists(executor.ErrorMessageQueue, expErrorMessage)); Assert.True(CompareTwoIntLists(executor.ResultCountQueue, expResultCounts)); Assert.True(executor.ResultCountQueue.Count == 0); Assert.Equal(0, executor.BatchFinshedEventCounter); }
public void ExecutionEngineTest_MixedValidandInvalidScript() { string sqlStatement = "SELECT * FROM Authors \n Go\n select * from sysobjects \n go\nif exists (select * from sysobjects where id = object_id('MyTab')) DROP TABLE MyTab2"; ExecutionEngineConditions conditions = new ExecutionEngineConditions(); conditions.IsTransactionWrapped = true; conditions.IsParseOnly = false; conditions.IsHaltOnError = false; TestExecutor executor = new TestExecutor(sqlStatement, connection, conditions); executor.Run(); //Get the expected values List <string> batchScripts = executor.BatchScripts; ExecuteSqlBatch(batchScripts, connection); Assert.Equal(executor.ExecutionResult, ScriptExecutionResult.Success | ScriptExecutionResult.Failure); Assert.True(!executor.ParserExecutionError); Assert.True(CompareTwoStringLists(executor.ErrorMessageQueue, expErrorMessage)); Assert.True(CompareTwoIntLists(executor.ResultCountQueue, expResultCounts)); }
public void ExecutionEngineTest_MultipleInvalidScript_SingleBatch() { string sqlStatement = "select ** from products \n insert into products values (1,'abc')\n go \n"; ExecutionEngineConditions conditions = new ExecutionEngineConditions(); conditions.IsTransactionWrapped = true; conditions.IsParseOnly = false; conditions.IsHaltOnError = false; TestExecutor executor = new TestExecutor(sqlStatement, connection, conditions); executor.Run(); //Get the expected values List <string> batchScripts = executor.BatchScripts; ExecuteSqlBatch(batchScripts, connection); Assert.Equal(ScriptExecutionResult.Success | ScriptExecutionResult.Failure, executor.ExecutionResult); Assert.True(!executor.ParserExecutionError); Assert.True(CompareTwoStringLists(executor.ErrorMessageQueue, expErrorMessage)); Assert.True(CompareTwoIntLists(executor.ResultCountQueue, expResultCounts)); }