public void AdditionalLabels_AppliesUserAgent() { HttpExporterTestDataProvider.SetupHttpContext(_context, TestStatusCode, TestMethod, TestAction, TestController, TestUserAgent); var middleware = new HttpRequestCountMiddleware(_next, new HttpRequestCountOptions { Registry = _registry, AdditionalLabels = new Dictionary <string, Func <HttpContext, string> > { { UserAgentLabel, HttpExporterTestDataProvider.GetUserAgent } } }); var child = (ChildBase)middleware.CreateChild(_context); var expectedLabels = HttpRequestLabelNames.All.Concat(new[] { UserAgentLabel }).ToArray(); CollectionAssert.AreEquivalent(expectedLabels, child.Labels.Names); CollectionAssert.AreEquivalent(new[] { TestStatusCode.ToString(), TestMethod, TestAction, TestController, TestUserAgent }, child.Labels.Values); }
public void CustomMetric_WithAllBuiltinLabels_AppliesLabels() { // Note that we do not configure Razor Pages, so there is no automatic "page" label. // However, we still expect it to be fine for custom metrics to include any builtin label at any time. SetupHttpContext(_context, TestStatusCode, TestMethod, TestAction, TestController); var middleware = new HttpRequestCountMiddleware(_next, new HttpRequestCountOptions { Counter = _metrics.CreateCounter("xxx", "", new CounterConfiguration { LabelNames = HttpRequestLabelNames.All }) }); var child = (ChildBase)middleware.CreateChild(_context); CollectionAssert.AreEquivalent(HttpRequestLabelNames.All, child.Labels.Names); CollectionAssert.AreEquivalent(new[] { TestStatusCode.ToString(), TestMethod, TestAction, TestController, TestEndpoint, "" // page }, child.Labels.Values); }
public void Init() { _registry = Metrics.NewCustomRegistry(); _factory = Metrics.WithCustomRegistry(_registry); _counter = _factory.CreateCounter("default_counter", ""); _requestDelegate = context => Task.CompletedTask; _httpContext = new DefaultHttpContext(); _sut = new HttpRequestCountMiddleware(_requestDelegate, _counter); }
public void Setup() { _registry = Metrics.NewCustomRegistry(); _factory = Metrics.WithCustomRegistry(_registry); _inFlightMiddleware = new HttpInFlightMiddleware(next => Task.CompletedTask, _factory.CreateGauge("in_flight", "help")); _countMiddleware = new HttpRequestCountMiddleware(next => Task.CompletedTask, _factory.CreateCounter("count", "help")); _durationMiddleware = new HttpRequestDurationMiddleware(next => Task.CompletedTask, _factory.CreateHistogram("duration", "help")); }
public void CustomMetric_WithNoLabels_AppliesNoLabels() { SetupHttpContext(_context, TestStatusCode, TestMethod, TestAction, TestController); var middleware = new HttpRequestCountMiddleware(_next, new HttpRequestCountOptions { Counter = _metrics.CreateCounter("xxx", "") }); var child = (ChildBase)middleware.CreateChild(_context); Assert.AreEqual(0, child.Labels.Count); }
public async Task Given_multiple_requests_populates_method_label_correctly() { var counter = _factory.CreateCounter("counter", "", HttpRequestLabelNames.Method); _sut = new HttpRequestCountMiddleware(_requestDelegate, counter); var expectedMethod1 = await SetMethodAndInvoke("POST"); var expectedMethod2 = await SetMethodAndInvoke("GET"); var labels = counter.GetAllLabels(); var methods = GetLabelValues(labels, HttpRequestLabelNames.Method); Assert.AreEqual(2, methods.Length); CollectionAssert.AreEquivalent(new[] { expectedMethod1, expectedMethod2 }, methods); }
public async Task Given_multiple_requests_populates_code_label_correctly() { var counter = _factory.CreateCounter("counter", "", HttpRequestLabelNames.Code); _sut = new HttpRequestCountMiddleware(_requestDelegate, counter); var expectedStatusCode1 = await SetStatusCodeAndInvoke(400); var expectedStatusCode2 = await SetStatusCodeAndInvoke(401); var labels = counter.GetAllLabels(); var codes = GetLabelValues(labels, HttpRequestLabelNames.Code); Assert.AreEqual(2, codes.Length); CollectionAssert.AreEquivalent(new[] { expectedStatusCode1.ToString(), expectedStatusCode2.ToString() }, codes); }
public async Task Given_multiple_requests_populates_action_label_correctly() { var counter = _factory.CreateCounter("counter", "", HttpRequestLabelNames.Action); _sut = new HttpRequestCountMiddleware(_requestDelegate, counter); var expectedAction1 = await SetActionAndInvoke("Action1"); var expectedAction2 = await SetActionAndInvoke("Action2"); var labels = counter.GetAllLabels(); var actions = GetLabelValues(labels, HttpRequestLabelNames.Action); Assert.AreEqual(2, actions.Length); CollectionAssert.AreEquivalent(new[] { expectedAction1, expectedAction2 }, actions); }
public async Task Given_multiple_requests_populates_controller_label_correctly() { var counter = _factory.CreateCounter("counter", "", HttpRequestLabelNames.Controller); _sut = new HttpRequestCountMiddleware(_requestDelegate, counter); var expectedController1 = await SetControllerAndInvoke("ValuesController"); var expectedController2 = await SetControllerAndInvoke("AuthController"); var labels = counter.GetAllLabels(); var controllers = GetLabelValues(labels, HttpRequestLabelNames.Controller); Assert.AreEqual(2, controllers.Length); CollectionAssert.AreEquivalent(new[] { expectedController1, expectedController2 }, controllers); }
public void Setup() { _registry = Metrics.NewCustomRegistry(); _factory = Metrics.WithCustomRegistry(_registry); _inProgressMiddleware = new HttpInProgressMiddleware(next => Task.CompletedTask, new HttpInProgressOptions { Gauge = _factory.CreateGauge("in_progress", "help") }); _countMiddleware = new HttpRequestCountMiddleware(next => Task.CompletedTask, new HttpRequestCountOptions { Counter = _factory.CreateCounter("count", "help") }); _durationMiddleware = new HttpRequestDurationMiddleware(next => Task.CompletedTask, new HttpRequestDurationOptions { Histogram = _factory.CreateHistogram("duration", "help") }); }
public void CustomMetric_WithStandardLabels_AppliesStandardLabels() { SetupHttpContext(_context, TestStatusCode, TestMethod, TestAction, TestController); var middleware = new HttpRequestCountMiddleware(_next, new HttpRequestCountOptions { Counter = _metrics.CreateCounter("xxx", "", HttpRequestLabelNames.All) }); var child = (ChildBase)middleware.CreateChild(_context); CollectionAssert.AreEquivalent(HttpRequestLabelNames.All, child.Labels.Names); CollectionAssert.AreEquivalent(new[] { TestStatusCode.ToString(), TestMethod, TestAction, TestController }, child.Labels.Values); }
public void DefaultMetric_AppliesStandardLabels() { SetupHttpContext(_context, TestStatusCode, TestMethod, TestAction, TestController); var middleware = new HttpRequestCountMiddleware(_next, new HttpRequestCountOptions { Registry = _registry }); var child = (ChildBase)middleware.CreateChild(_context); CollectionAssert.AreEquivalent(HttpRequestLabelNames.All, child.Labels.Names); CollectionAssert.AreEquivalent(new[] { TestStatusCode.ToString(), TestMethod, TestAction, TestController }, child.Labels.Values); }
public async Task Given_request_populates_subset_of_labels_correctly() { var counter = _factory.CreateCounter("all_labels_counter", "", HttpRequestLabelNames.Action, HttpRequestLabelNames.Controller); var expectedAction = "ACTION"; var expectedController = "CONTROLLER"; SetupHttpContext(_httpContext, 200, "method", expectedAction, expectedController); _sut = new HttpRequestCountMiddleware(_requestDelegate, counter); await _sut.Invoke(_httpContext); var labels = counter.GetAllLabels().Single(); Assert.IsNull(GetLabelValueOrDefault(labels, HttpRequestLabelNames.Code)); Assert.IsNull(GetLabelValueOrDefault(labels, HttpRequestLabelNames.Method)); Assert.AreEqual(expectedAction, GetLabelValueOrDefault(labels, HttpRequestLabelNames.Action)); Assert.AreEqual(expectedController, GetLabelValueOrDefault(labels, HttpRequestLabelNames.Controller)); }