public void HandleStopEvent_RecordsStats() { var options = new MetricsObserverOptions(); var stats = new TestOpenTelemetryMetrics(); var observer = new HttpClientCoreObserver(options, stats, null); var factory = stats.Factory; var processor = stats.Processor; var req = GetHttpRequestMessage(); var resp = GetHttpResponseMessage(HttpStatusCode.InternalServerError); var act = new Activity("Test"); act.Start(); Task.Delay(1000).Wait(); act.SetEndTime(DateTime.UtcNow); observer.HandleStopEvent(act, req, resp, TaskStatus.RanToCompletion); observer.HandleStopEvent(act, req, resp, TaskStatus.RanToCompletion); factory.CollectAllMetrics(); var timeSummary = processor.GetMetricByName <double>("http.client.request.time"); Assert.NotNull(timeSummary); var average = timeSummary.Sum / timeSummary.Count; Assert.InRange(average, 975.0, 1200.0); Assert.InRange(timeSummary.Max, 975.0, 1200.0); var countSummary = processor.GetMetricByName <long>("http.client.request.count"); Assert.Equal(2, countSummary.Count); act.Stop(); }