Esempio n. 1
0
        public void HandleExceptionEvent_RecordsStats()
        {
            var options  = new MetricsOptions();
            var stats    = new OpenCensusStats();
            var tags     = new OpenCensusTags();
            var observer = new HttpClientCoreObserver(options, stats, tags, null);

            var req  = GetHttpRequestMessage();
            var resp = GetHttpResponseMessage(HttpStatusCode.InternalServerError);

            Activity act = new Activity("Test");

            act.Start();
            Thread.Sleep(1000);
            act.SetEndTime(DateTime.UtcNow);

            observer.HandleExceptionEvent(act, req);
            observer.HandleExceptionEvent(act, req);

            var reqData  = stats.ViewManager.GetView(ViewName.Create("http.client.requests"));
            var aggData1 = reqData.SumWithTags() as IDistributionData;

            Assert.InRange(aggData1.Mean, 995.0, 1005.0);
            Assert.InRange(aggData1.Max, 995.0, 1005.0);

            reqData = stats.ViewManager.GetView(ViewName.Create("http.client.requests.count"));
            var aggData2 = reqData.SumWithTags() as ISumDataLong;

            Assert.Equal(2, aggData2.Sum);

            act.Stop();
        }
        public void HandleExceptionEvent_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.HandleExceptionEvent(act, req);
            observer.HandleExceptionEvent(act, req);

            factory.CollectAllMetrics();

            var timeSummary = processor.GetMetricByName <double>("http.client.request.time");

            Assert.NotNull(timeSummary);
            var average = timeSummary.Sum / timeSummary.Count;

            Assert.InRange(average, 990.0, 1200.0);
            Assert.InRange(timeSummary.Max, 990.0, 1200.0);

            var countSummary = processor.GetMetricByName <long>("http.client.request.count");

            Assert.Equal(2, countSummary.Count);

            act.Stop();
        }