public override void RunTestCase(TestCaseExecution execution) { //get the test case source ids to be used by the Minitest string webId = execution.TestCase.SourceId; //update the execution status to be running SaberAgent.Log.logger.Info(string.Format("Set status of execution {0} of job {1} to running", execution.ExecutionId, Job2Run.JobId)); execution.SetStatus(ExecutionStatus.Running); string scriptRootFolderForProject = scriptRootFolder + @"\" + vcsRootPath + @"\RubyMinitest"; string scriptFilePath = GetTestScriptFilesnFolderContainTestCaseWithWebId(scriptRootFolderForProject, webId); if (string.IsNullOrEmpty(scriptFilePath)) { SaberAgent.Log.logger.Info(string.Format("Could not find the test script for the test execution {0} of job {1}", execution.ExecutionId, Job2Run.JobId)); execution.SetStatus(ExecutionStatus.Fail); } else { try { string logfilePath = string.Format(@"{0}\webid_{1}.log", this.RootResultPath, execution.TestCase.SourceId); string testcasePattern = string.Format(@"/_webid_{0}/", webId); string parameters = string.Format(@"{0} ""{1}"" ""{2}"" ""{3}""", testcasePattern, scriptFilePath, scriptRootFolderForProject, logfilePath); string runBATFile = @"C:\SaberAgent\RunRubyMiniTest.bat"; string command = string.Format(@"{0} /C {1}", runBATFile, parameters); SaberAgent.Log.logger.Info(command); string result = CMDScript.RumCmdWithWindowsVisible(runBATFile, parameters); SaberAgent.Log.logger.Info(result); SaberAgent.Log.logger.Info(string.Format("Execution of test case has been finished for job {0}", Job2Run.JobId)); string defaultMiniTestResultFile = string.Format(@"{0}\test\reports\_webid_{1}.xml", scriptRootFolderForProject, webId); //copy related files to Result folder FileHelper.CopyFile(@"C:\SaberAgent\Config\Environment.xml", this.RootResultPath, true); if (FileHelper.IsExistsFile(defaultMiniTestResultFile)) { FileHelper.CopyFile(defaultMiniTestResultFile, this.RootResultPath, true); } else { string message = string.Format("Could not find the result file for case [{0}] at location [{1}]", execution.TestCase.Name, defaultMiniTestResultFile); SaberAgent.Log.logger.Error(message); Job2Run.AddJobProgressInformation(message); execution.SetStatus(ExecutionStatus.Fail); return; } //Parse the test result SaberAgent.Log.logger.Info(string.Format("Start to parse the result for execution {0} of job {1}", execution.ExecutionId, Job2Run.JobId)); resultParser.ParseResult(string.Format(@"{0}\_webid_{1}.xml", this.RootResultPath, webId), Job2Run.JobId); SaberAgent.Log.logger.Info(string.Format("Result parsing has been completed for execution {0} of job {1}", execution.ExecutionId, Job2Run.JobId)); //set execution status to complete SaberAgent.Log.logger.Info(string.Format("Set status of execution {0} of job {1} to Compleate", execution.ExecutionId, Job2Run.JobId)); execution.SetStatus(ExecutionStatus.Complete); } catch (Exception ex) { execution.SetStatus(ExecutionStatus.Fail); string error = string.Format("Failed to run the execution {0}", execution.ExecutionId); SaberAgent.Log.logger.Error(error, ex); } } }
public override void RunTestCase(TestCaseExecution execution) { FileHelper.EmptyFolder(this.RootResultPath); string resultFileFullPath = this.RootResultPath + @"\" + execution.TestCase.SourceId.ToString() + @".xml"; SaberAgent.Log.logger.Info(string.Format("Set status of execution {0} of job {1} to running", execution.ExecutionId, Job2Run.JobId)); execution.SetStatus(ExecutionStatus.Running); //get the test case source ids to used by the NUnit console string testCaseIdList = "WebId=" + execution.TestCase.SourceId; string resultLogFilePath = string.Format(@"{0}\{1}_RunCSharpNUnitTest.bat.log", this.RootResultPath, execution.TestCase.SourceId); string parameters = string.Format(@"""{0}"" {1}.xml ""{2}"" {3}> ""{4}""", testCaseIdList, execution.TestCase.SourceId, this.RootResultPath, this.vcsRootFolder + @"/CSharpNUnit/Saber", resultLogFilePath); string runBATFile = @"C:\SaberAgent\RunCSharpNUnitTest.bat"; string command = string.Format(@"{0} /C {1}", runBATFile, parameters); SaberAgent.Log.logger.Info(command); string result = CMDScript.RumCmd(runBATFile, parameters); SaberAgent.Log.logger.Info(result); SaberAgent.Log.logger.Info(string.Format("Execution of test case [{0}] has been finished for job {1}", execution.TestCase.Name, Job2Run.JobId)); //Parse the test result SaberAgent.Log.logger.Info(string.Format("Start to parse the result for test Case [{0}]", execution.TestCase.Name)); FileHelper.CopyFile(@"C:\SaberAgent\Config\Environment.xml", this.RootResultPath, true); try { resultParser.ParseResult(resultFileFullPath, Job2Run.JobId); SaberAgent.Log.logger.Info(string.Format("Result parsing has been completed for test Case [{0}]", execution.TestCase.Name)); } catch (Exception ex) { execution.SetStatus(ExecutionStatus.Fail); SaberAgent.Log.logger.Error(string.Format("Met error when parse the result of test case [{0}]", execution.TestCase.Name), ex); return; } //set execution status to complete SaberAgent.Log.logger.Info(string.Format("Set status of execution {0} of test case {1} to Complete", execution.TestCase.Name, Job2Run.JobId)); execution.SetStatus(ExecutionStatus.Complete); }
private void RunAutomationCase(TestCaseExecution testCaseExecution, CancellationToken token) { ATFEnvironment.Log.logger.Info("Run automation case #" + testCaseExecution.TestCaseId); testCaseExecution.SetStatus(ExecutionStatus.Running); var result = new TestResult { ExecutionId = testCaseExecution.ExecutionId, Result = (int)ResultType.NotRun, IsTriaged = false, TriagedBy = null, Files = null, }; TestResult.CreateRunResult(result); try { // todo: call agent to run test cases // change test result Thread.Sleep(60 * 1000); testCaseExecution.SetStatus(ExecutionStatus.Complete); result.SetResult(ResultType.Pass); if (token.IsCancellationRequested) { ATFEnvironment.Log.logger.Info("Timeout to run automation case #" + testCaseExecution.TestCaseId); testCaseExecution.SetStatus(ExecutionStatus.Complete); result.SetResult(ResultType.TimeOut); } } catch (EnvironmentException ex) { string errorMsg = string.Format("Failed to run automation case #{0}, error: {1}", testCaseExecution.TestCaseId, ex.Message); ATFEnvironment.Log.logger.Error(errorMsg); testCaseExecution.SetStatus(ExecutionStatus.Fail); result.SetResult(ResultType.Exception); } catch (Exception ex) { string errorMsg = string.Format("Failed to run automation case #{0}, error: {1}", testCaseExecution.TestCaseId, ex.Message); ATFEnvironment.Log.logger.Error(errorMsg); testCaseExecution.SetStatus(ExecutionStatus.Fail); result.SetResult(ResultType.Failed); } }