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); }
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}"); }