Beispiel #1
0
        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 = _apiClientService.Execute(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);
        }