示例#1
0
        public void OnNext_RequestObserverd_OutgoingHttpRequestStopEventReceived()
        {
            // Arrange
            var counterMock = new Mock <Collector <Counter.Child> >(MockBehavior.Loose,
                                                                    "the_counter", "counter_help", new string[] { "host", "method", "endpoint", "status" }, true);
            var summaryMock = Metrics.CreateSummary(TestContext.TestName + "summary", "test_summary_help",
                                                    new SummaryConfiguration
            {
                LabelNames           = new string[] { "host", "method", "endpoint", "status" },
                SuppressInitialValue = true
            });

            var observer = new HttpHandlerDiagnosticListenerObserver(
                new HttpHandlerObserverConfig(),
                counterMock.Object, summaryMock);

            var listener = new DiagnosticListener("TestListener");

            listener.Subscribe(observer);

            var request = new HttpRequestMessage
            {
                Method     = new HttpMethod("GET"),
                RequestUri = new Uri("http://test/api/elements")
            };

            var response = new HttpResponseMessage(HttpStatusCode.OK)
            {
                RequestMessage = request
            };


            // Act
            var activity = new Activity("System.Net.Http.HttpRequestOut");

            listener.StartActivity(activity, new
            {
                Request = request
            });
            listener.StopActivity(activity, new
            {
                Request  = request,
                Response = response
            });

            // Assert
            var counterMetrics = counterMock.Object.Collect();
            var summaryMetrics = summaryMock.Collect();

            Assert.AreEqual(1, counterMetrics.First().metric.Count);
            Assert.AreEqual(1, counterMetrics.First().metric[0].counter.value);
            Assert.AreEqual(1, summaryMetrics.First().metric.Count);
            Assert.IsNotNull(summaryMetrics.First().metric[0].summary);
        }
示例#2
0
        public void OnNext_LongestPathMatched_TwoFilters()
        {
            // Arrange
            var config = new HttpHandlerObserverConfig();

            config.AddPathFilter("/a/b");
            config.AddPathFilter("/a/b/@/c");


            var counterMock = new Mock <Collector <Counter.Child> >(MockBehavior.Loose,
                                                                    "the_counter", "counter_help", new string[] { "host", "method", "endpoint", "status" }, true);
            var summaryMock = Metrics.CreateSummary(TestContext.TestName + "summary", "test_summary_help",
                                                    new SummaryConfiguration
            {
                LabelNames           = new string[] { "host", "method", "endpoint", "status" },
                SuppressInitialValue = true
            });

            var observer = new HttpHandlerDiagnosticListenerObserver(
                config,
                counterMock.Object, summaryMock);

            var listener = new DiagnosticListener("TestListener");

            listener.Subscribe(observer);

            var request = new HttpRequestMessage
            {
                Method     = new HttpMethod("GET"),
                RequestUri = new Uri("http://test.com/a/b/param1/c")
            };

            // Act
            var activity = new Activity("System.Net.Http.HttpRequestOut");

            listener.StartActivity(activity, new { Request = request });
            listener.StopActivity(activity, new { Request = request });

            // Assert
            var counterMetrics = counterMock.Object.Collect();

            Assert.AreEqual("/a/b/@/c", counterMetrics.First().metric.First().label[2].value);
            Assert.IsTrue(counterMetrics.First().metric.Any());
        }