Beispiel #1
0
        private static async Task HandleUnSuccessfulResponse(ISimulatedRequest request, HttpRequestMessage message,
                                                             HttpResponseMessage response)
        {
            request.Uri = message.RequestUri;
            var content = await response.Content.ReadAsStringAsync();

            var statusCode = (int)response.StatusCode;
            var exception  = new HttpRequestException($"Status code: {statusCode}. Reason: {response.ReasonPhrase}. Content: {content}");

            SimulationTelemetry.Instance.AddException(request, exception);
        }
Beispiel #2
0
        public async Task Execute(ISimulatedRequest request)
        {
            try
            {
                var message = new HttpRequestMessage(HttpMethod.Get, request.Uri);
                foreach (var interceptor in _interceptors)
                {
                    interceptor.InterceptAsync(message);
                }

                Console.WriteLine($"[RequestExecutor]: Executing: {message.RequestUri}");

                var timer = new Stopwatch();
                timer.Start();

                var response = await _client.SendAsync(message);

                timer.Stop();

                var metric = new RequestRecording
                {
                    Elapsed       = timer.ElapsedMilliseconds,
                    Endpoint      = message.RequestUri.Host,
                    StatusCode    = (int)response.StatusCode,
                    Url           = GetFormattedUrl(message),
                    SimulatedDate = request.Created.Normalize(),
                    BatchId       = BatchId,
                    Timestamp     = DateTime.UtcNow
                };

                if (response.IsSuccessStatusCode == false)
                {
                    await HandleUnSuccessfulResponse(request, message, response);
                }

                SimulationTelemetry.Instance.Add(metric);
            }
            catch (Exception ex)
            {
                SimulationTelemetry.Instance.AddException(request, ex);
            }
        }
 internal void AddException(ISimulatedRequest request, Exception ex)
 {
     Exceptions.Add($"{request.Uri} - {ex.Message}");
 }