Exemplo n.º 1
0
        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);
        }
Exemplo n.º 3
0
        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"));
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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")
            });
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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));
        }