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);
        }
Esempio n. 3
0
 public void EndScenarioReporting(TestScenarioResults scenarioResults)
 {
     throw new NotImplementedException();
 }