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