in e2etest/GuestProxyAgentTest/TestScenarios/TestScenarioBase.cs [205:257]
private async Task ScenarioTestAsync(VirtualMachineResource vmr, TestScenarioStatusDetails testScenarioStatusDetails, CancellationToken cancellationToken)
{
testScenarioStatusDetails.Result = ScenarioTestResult.Succeed;
// always running all the cases inside scenario
foreach (var testCase in _testCases)
{
cancellationToken.ThrowIfCancellationRequested();
if (cancellationToken.IsCancellationRequested)
{
ConsoleLog($"Test case {testCase.TestCaseName} is cancelled.");
break;
}
TestCaseExecutionContext context = new TestCaseExecutionContext(vmr, _testScenarioSetting, cancellationToken);
Stopwatch sw = Stopwatch.StartNew();
try
{
testCase.Result = TestCaseResult.Running;
await testCase.StartAsync(context);
sw.Stop();
context.TestResultDetails
.DownloadContentIfFromBlob()
.WriteJUnitTestResult(_junitTestResultBuilder, _testScenarioSetting.testScenarioName, testCase.TestCaseName, sw.ElapsedMilliseconds);
if (!context.TestResultDetails.Succeed)
{
testScenarioStatusDetails.FailedCases.Add(testCase.TestCaseName);
testScenarioStatusDetails.Result = ScenarioTestResult.Failed;
}
}
catch (Exception ex)
{
var errorMessage = $"test case: {testCase.TestCaseName} failed with exception: message: {ex.Message}, stack trace: {ex.StackTrace}";
testScenarioStatusDetails.FailedCases.Add(testCase.TestCaseName);
testScenarioStatusDetails.Result = ScenarioTestResult.Failed;
context.TestResultDetails.Succeed = false;
context.TestResultDetails.StdErr = errorMessage;
context.TestResultDetails.FromBlob = false;
sw.Stop();
ConsoleLog($"Scenario case {testCase.TestCaseName} exception: {ex.Message}, stack trace: {ex.StackTrace}");
_junitTestResultBuilder.AddFailureTestResult(_testScenarioSetting.testScenarioName, testCase.TestCaseName, "", errorMessage, "", sw.ElapsedMilliseconds);
}
finally
{
testCase.Result = context.TestResultDetails.Succeed ? TestCaseResult.Succeed : TestCaseResult.Failed;
ConsoleLog($"Scenario case {testCase.TestCaseName} finished with result: {(context.TestResultDetails.Succeed ? "Succeed" : "Failed")} and duration: " + sw.ElapsedMilliseconds + "ms");
SaveResultFile(context.TestResultDetails.CustomOut, $"TestCases/{testCase.TestCaseName}", "customOut.txt", context.TestResultDetails.FromBlob);
SaveResultFile(context.TestResultDetails.StdErr, $"TestCases/{testCase.TestCaseName}", "stdErr.txt", context.TestResultDetails.FromBlob);
SaveResultFile(context.TestResultDetails.StdOut, $"TestCases/{testCase.TestCaseName}", "stdOut.txt", context.TestResultDetails.FromBlob);
}
}
}