public void ValidateBasicRequest(InProcessServer server, string requestPath, RequestTelemetry expected) { lock (noParallelism) { // Subtract 50 milliseconds to hack around strange behavior on build server where the RequestTelemetry.Timestamp is somehow sometimes earlier than now by a few milliseconds. expected.Timestamp = DateTimeOffset.Now.Subtract(TimeSpan.FromMilliseconds(50)); server.BackChannel.Buffer.Clear(); Stopwatch timer = Stopwatch.StartNew(); var httpClientHandler = new HttpClientHandler(); httpClientHandler.UseDefaultCredentials = true; Task <HttpResponseMessage> task; using (HttpClient httpClient = new HttpClient(httpClientHandler, true)) { task = httpClient.GetAsync(server.BaseHost + requestPath); task.Wait(TestTimeoutMs); } timer.Stop(); server.Dispose(); RequestTelemetry actual = server.BackChannel.Buffer.OfType <RequestTelemetry>().Where(t => t.Name == expected.Name).Single(); server.BackChannel.Buffer.Clear(); Assert.Equal(expected.ResponseCode, actual.ResponseCode); Assert.Equal(expected.Name, actual.Name); Assert.Equal(expected.Success, actual.Success); Assert.Equal(expected.Url, actual.Url); InRange(actual.Timestamp, expected.Timestamp, DateTimeOffset.Now); Assert.True(actual.Duration < timer.Elapsed, "duration"); } }
public void ValidateBasicException(InProcessServer server, string requestPath, ExceptionTelemetry expected) { var httpClientHandler = new HttpClientHandler(); httpClientHandler.UseDefaultCredentials = true; Task <HttpResponseMessage> task; using (var httpClient = new HttpClient(httpClientHandler, true)) { task = httpClient.GetAsync(server.BaseHost + requestPath); task.Wait(TestTimeoutMs); } var result = task.Result; server.Dispose(); var actual = server.BackChannel.Buffer.OfType <ExceptionTelemetry>().Single(); Assert.Equal(expected.Exception.GetType(), actual.Exception.GetType()); Assert.NotEmpty(actual.Exception.StackTrace); Assert.NotEmpty(actual.Context.Operation.Name); Assert.NotEmpty(actual.Context.Operation.Id); }