public async Task Given_request_populates_labels_supplied_out_of_order_correctly() { var histogram = _factory.CreateHistogram("all_labels_histogram", "", new HistogramConfiguration { Buckets = new[] { 1d, 2d, 3d }, LabelNames = HttpRequestLabelNames.All.Reverse().ToArray() }); var expectedStatusCode = 400; var expectedMethod = "METHOD"; var expectedAction = "ACTION"; var expectedController = "CONTROLLER"; SetupHttpContext(_httpContext, expectedStatusCode, expectedMethod, expectedAction, expectedController); _sut = new HttpRequestDurationMiddleware(_requestDelegate, histogram); await _sut.Invoke(_httpContext); var labels = histogram.GetAllLabels().Single(); Assert.AreEqual(expectedStatusCode.ToString(), GetLabelValueOrDefault(labels, HttpRequestLabelNames.Code)); Assert.AreEqual(expectedMethod, GetLabelValueOrDefault(labels, HttpRequestLabelNames.Method)); Assert.AreEqual(expectedAction, GetLabelValueOrDefault(labels, HttpRequestLabelNames.Action)); Assert.AreEqual(expectedController, GetLabelValueOrDefault(labels, HttpRequestLabelNames.Controller)); }
private Task SetRequestDurationAndInvoke(Histogram histogram, TimeSpan duration) { _requestDelegate = context => { Thread.Sleep(duration); return(Task.CompletedTask); }; _sut = new HttpRequestDurationMiddleware(_requestDelegate, histogram); return(_sut.Invoke(_httpContext)); }
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 Init() { _registry = Metrics.NewCustomRegistry(); _factory = Metrics.WithCustomRegistry(_registry); _histogram = _factory.CreateHistogram("default_histogram", "", new HistogramConfiguration { Buckets = new[] { 0.1d, 1d, 10d } }); _requestDelegate = context => Task.CompletedTask; _httpContext = new DefaultHttpContext(); _sut = new HttpRequestDurationMiddleware(_requestDelegate, _histogram); }
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 async Task Given_multiple_requests_populates_action_label_correctly() { var histogram = _factory.CreateHistogram("histogram", "", new HistogramConfiguration { Buckets = new[] { 0.1d, 1d, 10d }, LabelNames = new[] { HttpRequestLabelNames.Action } }); _sut = new HttpRequestDurationMiddleware(_requestDelegate, histogram); var expectedAction1 = await SetActionAndInvoke("Action1"); var expectedAction2 = await SetActionAndInvoke("Action2"); var labels = histogram.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 histogram = _factory.CreateHistogram("histogram", "", new HistogramConfiguration { Buckets = new[] { 0.1d, 1d, 10d }, LabelNames = new[] { HttpRequestLabelNames.Controller } }); _sut = new HttpRequestDurationMiddleware(_requestDelegate, histogram); var expectedController1 = await SetControllerAndInvoke("ValuesController"); var expectedController2 = await SetControllerAndInvoke("AuthController"); var labels = histogram.GetAllLabels(); var controllers = GetLabelValues(labels, HttpRequestLabelNames.Controller); Assert.AreEqual(2, controllers.Length); CollectionAssert.AreEquivalent(new[] { expectedController1, expectedController2 }, controllers); }
public async Task Given_multiple_requests_populates_method_label_correctly() { var histogram = _factory.CreateHistogram("histogram", "", new HistogramConfiguration { Buckets = new[] { 0.1d, 1d, 10d }, LabelNames = new[] { HttpRequestLabelNames.Method } }); _sut = new HttpRequestDurationMiddleware(_requestDelegate, histogram); var expectedMethod1 = await SetMethodAndInvoke("POST"); var expectedMethod2 = await SetMethodAndInvoke("GET"); var labels = histogram.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 histogram = _factory.CreateHistogram("histogram", "", new HistogramConfiguration { Buckets = new[] { 0.1d, 1d, 10d }, LabelNames = new[] { HttpRequestLabelNames.Code } }); _sut = new HttpRequestDurationMiddleware(_requestDelegate, histogram); var expectedStatusCode1 = await SetStatusCodeAndInvoke(400); var expectedStatusCode2 = await SetStatusCodeAndInvoke(401); var labels = histogram.GetAllLabels(); var codes = GetLabelValues(labels, HttpRequestLabelNames.Code); Assert.AreEqual(2, codes.Length); CollectionAssert.AreEquivalent(new[] { expectedStatusCode1.ToString(), expectedStatusCode2.ToString() }, codes); }
public async Task Given_request_populates_subset_of_labels_correctly() { var histogram = _factory.CreateHistogram("all_labels_histogram", "", new HistogramConfiguration { Buckets = new[] { 1d, 2d, 3d }, LabelNames = new[] { HttpRequestLabelNames.Action, HttpRequestLabelNames.Controller } }); var expectedAction = "ACTION"; var expectedController = "CONTROLLER"; SetupHttpContext(_httpContext, 200, "method", expectedAction, expectedController); _sut = new HttpRequestDurationMiddleware(_requestDelegate, histogram); await _sut.Invoke(_httpContext); var labels = histogram.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)); }