Ejemplo n.º 1
0
        protected override async Task ExecuteAsync()
        {
            if (Finished)
            {
                return;
            }

            await VerifyRunAsync();

            if (Finished)
            {
                return;
            }

            if (!await BuildAsync())
            {
                return;
            }

            if (BuildOnly)
            {
                ExecutionResult = TestExecutingResult.BuildSucceeded;
                return;
            }

            ExecutionResult = TestExecutingResult.Running;
            duration.Restart();              // don't count the build time.
            await RunTestAsync();
        }
Ejemplo n.º 2
0
 public void ResultHasFlag(TestExecutingResult result, TestExecutingResult[] flags)
 {
     foreach (var flag in flags)
     {
         Assert.True(result.HasFlag(flag), $"{result} should have {flag}");
     }
 }
Ejemplo n.º 3
0
 public virtual void Reset()
 {
     test_log        = null;
     failure_message = null;
     logs            = null;
     duration.Reset();
     execution_result = TestExecutingResult.NotStarted;
     execute_task     = null;
 }
Ejemplo n.º 4
0
        public void FlaggedIsPresentWhereItShouldBe(TestExecutingResult[] withFlag, TestExecutingResult flag)
        {
            var withoutFlag = Enum.GetValues(typeof(TestExecutingResult))
                              .Cast <TestExecutingResult>()
                              .Except(withFlag);

            foreach (var result in withoutFlag)
            {
                Assert.False(result.HasFlag(flag), $"{result} should not have {flag}");
            }

            foreach (var result in withFlag)
            {
                Assert.True(result.HasFlag(flag), $"{result} should have {flag}");
            }
        }
Ejemplo n.º 5
0
        protected async Task ExecuteProcessAsync(ILog log, string filename, List <string> arguments)
        {
            if (log == null)
            {
                log = Logs.Create($"execute-{Timestamp}.txt", LogType.ExecutionLog.ToString());
            }

            using var proc           = new Process();
            proc.StartInfo.FileName  = filename;
            proc.StartInfo.Arguments = StringUtils.FormatArguments(arguments);
            if (!string.IsNullOrEmpty(WorkingDirectory))
            {
                proc.StartInfo.WorkingDirectory = WorkingDirectory;
            }
            SetEnvironmentVariables(proc);
            foreach (DictionaryEntry de in proc.StartInfo.EnvironmentVariables)
            {
                log.WriteLine($"export {de.Key}={de.Value}");
            }
            Jenkins.MainLog.WriteLine("Executing {0} ({1})", TestName, Mode);
            if (!Harness.DryRun)
            {
                ExecutionResult = TestExecutingResult.Running;
                var result = await ProcessManager.RunAsync(proc, log, Timeout);

                if (result.TimedOut)
                {
                    FailureMessage = $"Execution timed out after {Timeout.TotalMinutes} minutes.";
                    log.WriteLine(FailureMessage);
                    ExecutionResult = TestExecutingResult.TimedOut;
                }
                else if (result.Succeeded)
                {
                    ExecutionResult = TestExecutingResult.Succeeded;
                }
                else
                {
                    ExecutionResult = TestExecutingResult.Failed;
                    FailureMessage  = $"Execution failed with exit code {result.ExitCode}";
                }
            }
            Jenkins.MainLog.WriteLine("Executed {0} ({1})", TestName, Mode);
        }
Ejemplo n.º 6
0
        public async Task <bool> BuildAsync()
        {
            if (Finished)
            {
                return(true);
            }

            await VerifyBuildAsync();

            if (Finished)
            {
                return(BuildTask.Succeeded);
            }

            ExecutionResult = TestExecutingResult.Building;
            await BuildTask.RunAsync();

            if (!BuildTask.Succeeded)
            {
                if (BuildTask.TimedOut)
                {
                    ExecutionResult = TestExecutingResult.TimedOut;
                }
                else
                {
                    ExecutionResult = TestExecutingResult.BuildFailure;
                }
                FailureMessage = BuildTask.FailureMessage;
                if (!string.IsNullOrEmpty(BuildTask.KnownFailure))
                {
                    KnownFailure = BuildTask.KnownFailure;
                }
                if (Harness.InCI && BuildTask is MSBuildTask projectTask)
                {
                    ResultParser.GenerateFailure(Logs, "build", projectTask.TestName, projectTask.Variation, $"App Build {projectTask.TestName} {projectTask.Variation}", $"App could not be built {FailureMessage}.", projectTask.BuildLog.FullPath, Harness.XmlJargon);
                }
            }
            else
            {
                ExecutionResult = TestExecutingResult.Built;
            }
            return(BuildTask.Succeeded);
        }