public void Execute(string resultsFilePath) { InitializeTestScenarios(); InitializeTestScenarioMixtureDeterminers(); var loadTestExecutionWatch = Stopwatch.StartNew(); var loadTestRunResults = new LoadTestRunResults(); var loadTestService = new LoadTestService(); var testScenarioMixtureDeterminer = _testScenarioMixtureDeterminer.GetTestScenarioMixtureDeterminer(); if (Settings.LoadTestType == LoadTestType.ExecuteForTime) { loadTestService.ExecuteForTime(Settings.NumberOfProcesses, Settings.PauseBetweenStartSeconds, Settings.SecondsToBeExecuted, ExecuteTestScenario); } else if (Settings.LoadTestType == LoadTestType.ExecuteNumberOfTimes) { loadTestService.ExecuteNumberOfTimes(Settings.NumberOfProcesses, Settings.PauseBetweenStartSeconds, Settings.TimesToBeExecuted, ExecuteTestScenario); } void ExecuteTestScenario() { var testScenarioResults = new TestScenarioResults(); var testScenario = testScenarioMixtureDeterminer.GetTestScenario(); if (loadTestRunResults.TestScenarioResults.ContainsKey(testScenario.TestName)) { testScenarioResults = loadTestRunResults.TestScenarioResults[testScenario.TestName]; } else { testScenarioResults.TestName = testScenario.TestName; loadTestRunResults.TestScenarioResults.GetOrAdd(testScenario.TestName, testScenarioResults); } _testScenarioExecutor.Execute(testScenario, testScenarioResults, Settings.ShouldExecuteRecordedRequestPauses, Settings.IgnoreUrlRequestsPatterns); } loadTestExecutionWatch.Stop(); loadTestRunResults.TotalExecutionTime = loadTestExecutionWatch.Elapsed; var loadTestReportGenerator = new LoadTestReportGenerator(); loadTestReportGenerator.GenerateReport(loadTestRunResults, resultsFilePath); }
public void Execute(TestScenario testScenario, TestScenarioResults testScenarioResults, bool shouldExecuteRecordedRequestPauses, List <string> ignoreUrlRequestsPatterns) { var testScenarioRunResult = new TestScenarioRunResult(); var watch = Stopwatch.StartNew(); foreach (var httpRequestDto in testScenario.Requests) { if (ShouldFilterRequest(httpRequestDto.Url, ignoreUrlRequestsPatterns)) { continue; } var requestResults = new RequestResults(); try { if (shouldExecuteRecordedRequestPauses) { Thread.Sleep(httpRequestDto.MillisecondsPauseAfterPreviousRequest); } var request = CreateRestRequest(httpRequestDto); var response = ExecuteMeasuredRequest(request); UpdateCookiesCollection(response); requestResults.ExecutionTime = response.ExecutionTime; requestResults.StatusCode = response.StatusCode; requestResults.RequestUrl = response.ResponseUri.ToString(); requestResults.IsSuccessful = response.IsSuccessful; if (!response.IsSuccessful) { requestResults.ResponseContent = response.ResponseUri.ToString(); } foreach (var loadTestAssertionHandler in _loadTestAssertionHandlers) { var responseAssertionResults = loadTestAssertionHandler.Execute(httpRequestDto, response); requestResults.ResponseAssertionResults.AddRange(responseAssertionResults); } } catch (Exception ex) { requestResults.RequestUrl = httpRequestDto.Url; requestResults.IsSuccessful = false; requestResults.ResponseContent = $"{httpRequestDto.Url} {ex.Message}"; Console.WriteLine($"FAILED- {httpRequestDto.Url}"); } testScenarioRunResult.RequestResults.Add(requestResults); } watch.Stop(); testScenarioRunResult.ExecutionTime = watch.Elapsed; testScenarioResults.TimesExecuted++; testScenarioResults.Weight = testScenario.Weight; if (testScenarioRunResult.Passed) { testScenarioResults.TimesPassed++; } else { testScenarioResults.TimesFailed++; } testScenarioResults.TestScenarioRunResults.GetOrAdd(testScenarioRunResult.RunId, testScenarioRunResult); }
public void EndScenarioReporting(TestScenarioResults scenarioResults) { throw new NotImplementedException(); }