public void ParseTags_ReturnsExpected() { var opts = new MetricsOptions(); var stats = new OpenCensusStats(); var ep = new MetricsEndpoint(opts, stats); var middle = new MetricsEndpointOwinMiddleware(null, ep); var context1 = CreateRequest("GET", "/metrics/Foo.Bar.Class", "foo=key:value"); var result = middle.ParseTags(context1.Request.Query); Assert.NotNull(result); Assert.Empty(result); var context2 = CreateRequest("GET", "/metrics/Foo.Bar.Class", "tag=key:value"); result = middle.ParseTags(context2.Request.Query); Assert.NotNull(result); Assert.Contains(new KeyValuePair <string, string>("key", "value"), result); var context3 = CreateRequest("GET", "/metrics/Foo.Bar.Class", "tag=key:value&foo=key:value&tag=key1:value1"); result = middle.ParseTags(context3.Request.Query); Assert.NotNull(result); Assert.Contains(new KeyValuePair <string, string>("key", "value"), result); Assert.Contains(new KeyValuePair <string, string>("key1", "value1"), result); Assert.Equal(2, result.Count); var context4 = CreateRequest("GET", "/metrics/Foo.Bar.Class", "tag=key:value&foo=key:value&tag=key:value"); result = middle.ParseTags(context4.Request.Query); Assert.NotNull(result); Assert.Contains(new KeyValuePair <string, string>("key", "value"), result); Assert.Single(result); }
public void HandleExceptionEvent_RecordsStats() { var options = new MetricsOptions(); var stats = new OpenCensusStats(); var tags = new OpenCensusTags(); var observer = new HttpClientCoreObserver(options, stats, tags, null); var req = GetHttpRequestMessage(); var resp = GetHttpResponseMessage(HttpStatusCode.InternalServerError); Activity act = new Activity("Test"); act.Start(); Thread.Sleep(1000); act.SetEndTime(DateTime.UtcNow); observer.HandleExceptionEvent(act, req); observer.HandleExceptionEvent(act, req); var reqData = stats.ViewManager.GetView(ViewName.Create("http.client.requests")); var aggData1 = reqData.SumWithTags() as IDistributionData; Assert.InRange(aggData1.Mean, 995.0, 1005.0); Assert.InRange(aggData1.Max, 995.0, 1005.0); reqData = stats.ViewManager.GetView(ViewName.Create("http.client.requests.count")); var aggData2 = reqData.SumWithTags() as ISumDataLong; Assert.Equal(2, aggData2.Sum); act.Stop(); }
public void Poll_GeneratesExpectedEvents() { var source = new CLRRuntimeSource(); var listener = source.Source as DiagnosticListener; var options = new MetricsEndpointOptions(); var stats = new OpenCensusStats(); var tags = new OpenCensusTags(); var observer = new TestObserver(options, stats, tags, null); listener.Subscribe(observer); source.Poll(); Assert.Equal(2, observer.Events.Count); Assert.Equal(2, observer.Args.Count); Assert.Equal(CLRRuntimeSource.HEAP_EVENT, observer.Events[0]); Assert.Equal(CLRRuntimeSource.THREADS_EVENT, observer.Events[1]); var heapMetrics = (CLRRuntimeSource.HeapMetrics)observer.Args[0]; Assert.NotEqual(0, heapMetrics.TotalMemory); Assert.NotNull(heapMetrics.CollectionCounts); Assert.NotEqual(0, heapMetrics.CollectionCounts.Count); var threadMetrics = (CLRRuntimeSource.ThreadMetrics)observer.Args[1]; Assert.NotEqual(0, threadMetrics.AvailableThreadCompletionPort); Assert.NotEqual(0, threadMetrics.AvailableThreadPoolWorkers); Assert.NotEqual(0, threadMetrics.MaxThreadCompletionPort); Assert.NotEqual(0, threadMetrics.MaxThreadPoolWorkers); }
public void Invoke_WithNullMetricsRequest_ReturnsExpected() { var opts = new MetricsEndpointOptions(); var stats = new OpenCensusStats(); SetupStats(stats); var ep = new MetricsEndpoint(opts, stats); var result = ep.Invoke(null); Assert.NotNull(result); Assert.IsType <MetricsListNamesResponse>(result); var resp = result as MetricsListNamesResponse; Assert.NotEmpty(resp.Names); Assert.Contains("http.server.requests", resp.Names); Assert.Contains("jvm.memory.used", resp.Names); Assert.Equal(2, resp.Names.Count); opts = new MetricsEndpointOptions(); stats = new OpenCensusStats(); ep = new MetricsEndpoint(opts, stats); result = ep.Invoke(null); Assert.NotNull(result); Assert.IsType <MetricsListNamesResponse>(result); resp = result as MetricsListNamesResponse; Assert.Empty(resp.Names); }
public async void HandleMetricsRequestAsync_GetSpecificExistingMetric_ReturnsExpected() { var opts = new MetricsEndpointOptions(); var mopts = TestHelpers.GetManagementOptions(opts); var stats = new OpenCensusStats(); var tagsComponent = new TagsComponent(); var tagger = tagsComponent.Tagger; var ep = new MetricsEndpoint(opts, stats); SetupTestView(stats); var middle = new MetricsEndpointMiddleware(null, ep, mopts); var context = CreateRequest("GET", "/cloudfoundryapplication/metrics/test.test", "?tag=a:v1"); await middle.HandleMetricsRequestAsync(context); Assert.Equal(200, context.Response.StatusCode); context.Response.Body.Seek(0, SeekOrigin.Begin); StreamReader rdr = new StreamReader(context.Response.Body); string json = await rdr.ReadToEndAsync(); Assert.Equal("{\"name\":\"test.test\",\"measurements\":[{\"statistic\":\"TOTAL\",\"value\":45.0}],\"availableTags\":[{\"tag\":\"a\",\"values\":[\"v1\"]},{\"tag\":\"b\",\"values\":[\"v1\"]},{\"tag\":\"c\",\"values\":[\"v1\"]}]}", json); }
public void HandleStopEvent_RecordsStats() { var options = new MetricsEndpointOptions(); var stats = new OpenCensusStats(); var tags = new OpenCensusTags(); var observer = new HttpClientDesktopObserver(options, stats, tags, null); var req = GetHttpRequestMessage(); Activity act = new Activity("Test"); act.Start(); Thread.Sleep(1000); act.SetEndTime(DateTime.UtcNow); observer.HandleStopEvent(act, req, HttpStatusCode.InternalServerError); observer.HandleStopEvent(act, req, HttpStatusCode.OK); var reqData = stats.ViewManager.GetView(ViewName.Create("http.desktop.client.request.time")); var aggData1 = MetricsHelpers.SumWithTags(reqData) as IDistributionData; Assert.InRange(aggData1.Mean, 990.0, 1025.0); Assert.InRange(aggData1.Max, 990.0, 1025.0); reqData = stats.ViewManager.GetView(ViewName.Create("http.desktop.client.request.count")); var aggData2 = MetricsHelpers.SumWithTags(reqData) as ISumDataLong; Assert.Equal(2, aggData2.Sum); act.Stop(); }
public void HandleStopEvent_RecordsStats() { var options = new MetricsEndpointOptions(); var stats = new OpenCensusStats(); var tags = new OpenCensusTags(); var observer = new AspNetCoreHostingObserver(options, stats, tags, null); var context = GetHttpRequestMessage(); var exceptionHandlerFeature = new ExceptionHandlerFeature() { Error = new ArgumentNullException() }; context.Features.Set <IExceptionHandlerFeature>(exceptionHandlerFeature); context.Response.StatusCode = 500; Activity act = new Activity("Test"); act.Start(); Thread.Sleep(1000); act.SetEndTime(DateTime.UtcNow); observer.HandleStopEvent(act, context); observer.HandleStopEvent(act, context); var reqData = stats.ViewManager.GetView(ViewName.Create("http.server.request.time")); var aggData1 = reqData.SumWithTags() as IDistributionData; Assert.Equal(2, aggData1.Count); Assert.True(aggData1.Mean > 1000.00); Assert.True(aggData1.Max > 1000.00); act.Stop(); }
public void Constructor_RegistersExpectedViews() { var options = new MetricsOptions(); var stats = new OpenCensusStats(); var tags = new OpenCensusTags(); var observer = new AspNetCoreHostingObserver(options, stats, tags, null); Assert.NotNull(stats.ViewManager.GetView(ViewName.Create("http.server.requests"))); }
public void HandleThreadsEvent_RecordsValues() { var options = new MetricsEndpointOptions(); var stats = new OpenCensusStats(); var tags = new OpenCensusTags(); var observer = new CLRRuntimeObserver(options, stats, tags, null); CLRRuntimeSource.ThreadMetrics metrics = new CLRRuntimeSource.ThreadMetrics(100, 100, 200, 200); observer.HandleThreadsEvent(metrics); var live = stats.ViewManager.GetView(ViewName.Create("clr.threadpool.active")); var aggData = MetricsHelpers.SumWithTags(live) as IMeanData; Assert.Equal(100, aggData.Mean); Assert.Equal(100, aggData.Min); Assert.Equal(100, aggData.Max); aggData = MetricsHelpers.SumWithTags(live, new List <ITagValue>() { TagValue.Create("worker") }) as IMeanData; Assert.Equal(100, aggData.Mean); Assert.Equal(100, aggData.Min); Assert.Equal(100, aggData.Max); aggData = MetricsHelpers.SumWithTags(live, new List <ITagValue>() { TagValue.Create("completionPort") }) as IMeanData; Assert.Equal(100, aggData.Mean); Assert.Equal(100, aggData.Min); Assert.Equal(100, aggData.Max); var avail = stats.ViewManager.GetView(ViewName.Create("clr.threadpool.avail")); aggData = MetricsHelpers.SumWithTags(avail) as IMeanData; Assert.Equal(100, aggData.Mean); Assert.Equal(100, aggData.Min); Assert.Equal(100, aggData.Max); aggData = MetricsHelpers.SumWithTags(avail, new List <ITagValue>() { TagValue.Create("worker") }) as IMeanData; Assert.Equal(100, aggData.Mean); Assert.Equal(100, aggData.Min); Assert.Equal(100, aggData.Max); aggData = MetricsHelpers.SumWithTags(avail, new List <ITagValue>() { TagValue.Create("completionPort") }) as IMeanData; Assert.Equal(100, aggData.Mean); Assert.Equal(100, aggData.Min); Assert.Equal(100, aggData.Max); }
public void Constructor_RegistersExpectedViews() { var options = new MetricsEndpointOptions(); var stats = new OpenCensusStats(); var tags = new OpenCensusTags(); var observer = new HttpClientDesktopObserver(options, stats, tags, null); Assert.NotNull(stats.ViewManager.GetView(ViewName.Create("http.desktop.client.request.time"))); Assert.NotNull(stats.ViewManager.GetView(ViewName.Create("http.desktop.client.request.count"))); }
public void Invoke_WithMetricsRequest_ReturnsExpected() { var opts = new MetricsEndpointOptions(); var stats = new OpenCensusStats(); var tagsComponent = new TagsComponent(); var tagger = tagsComponent.Tagger; var ep = new MetricsEndpoint(opts, stats); var testMeasure = MeasureDouble.Create("test.total", "test", MeasureUnit.Bytes); SetupTestView(stats, Sum.Create(), testMeasure, "test.test1"); var context1 = tagger .EmptyBuilder .Put(TagKey.Create("a"), TagValue.Create("v1")) .Put(TagKey.Create("b"), TagValue.Create("v1")) .Put(TagKey.Create("c"), TagValue.Create("v1")) .Build(); long allKeyssum = 0; for (var i = 0; i < 10; i++) { allKeyssum += i; stats.StatsRecorder.NewMeasureMap().Put(testMeasure, i).Record(context1); } var alltags = new List <KeyValuePair <string, string> >() { new KeyValuePair <string, string>("a", "v1"), new KeyValuePair <string, string>("b", "v1"), new KeyValuePair <string, string>("c", "v1") }; var req = new MetricsRequest("test.test1", alltags); var resp = ep.Invoke(req) as MetricsResponse; Assert.NotNull(resp); Assert.Equal("test.test1", resp.Name); Assert.NotNull(resp.Measurements); Assert.Single(resp.Measurements); var sample = resp.Measurements[0]; Assert.Equal(MetricStatistic.TOTAL, sample.Statistic); Assert.Equal(allKeyssum, sample.Value); Assert.NotNull(resp.AvailableTags); Assert.Equal(3, resp.AvailableTags.Count); req = new MetricsRequest("foo.bar", alltags); resp = ep.Invoke(req) as MetricsResponse; Assert.Null(resp); }
public void ProcessEvent_IgnoresNulls() { var options = new MetricsEndpointOptions(); var stats = new OpenCensusStats(); var tags = new OpenCensusTags(); var observer = new CLRRuntimeObserver(options, stats, tags, null); observer.ProcessEvent("foobar", null); observer.ProcessEvent(CLRRuntimeObserver.HEAP_EVENT, null); observer.ProcessEvent(CLRRuntimeObserver.THREADS_EVENT, null); }
public void Constructor_RegistersExpectedViews() { var options = new MetricsEndpointOptions(); var stats = new OpenCensusStats(); var tags = new OpenCensusTags(); var observer = new CLRRuntimeObserver(options, stats, tags, null); Assert.NotNull(stats.ViewManager.GetView(ViewName.Create("clr.memory.used"))); Assert.NotNull(stats.ViewManager.GetView(ViewName.Create("clr.gc.collections"))); Assert.NotNull(stats.ViewManager.GetView(ViewName.Create("clr.threadpool.active"))); Assert.NotNull(stats.ViewManager.GetView(ViewName.Create("clr.threadpool.avail"))); }
public void GetTagValuesInColumnOrder_ReturnsExpected() { var tags = new List <KeyValuePair <string, string> >() { new KeyValuePair <string, string>("foo", "bar"), new KeyValuePair <string, string>("aaa", "bbb") }; var columns = new List <ITagKey>() { TagKey.Create("foo"), TagKey.Create("aaa") }; var opts = new MetricsEndpointOptions(); var stats = new OpenCensusStats(); var ep = new MetricsEndpoint(opts, stats); var result = ep.GetTagValuesInColumnOrder(columns, tags); Assert.NotNull(result); Assert.Equal(2, result.Count); Assert.Equal(TagValue.Create("bar"), result[0]); Assert.Equal(TagValue.Create("bbb"), result[1]); // Invalid tagkey provided columns = new List <ITagKey>() { TagKey.Create("bar"), TagKey.Create("aaa") }; result = ep.GetTagValuesInColumnOrder(columns, tags); Assert.Null(result); // aaa column not provided columns = new List <ITagKey>() { TagKey.Create("foo"), TagKey.Create("aaa"), TagKey.Create("bbb"), }; tags = new List <KeyValuePair <string, string> >() { new KeyValuePair <string, string>("foo", "bar"), new KeyValuePair <string, string>("bbb", "bbb") }; result = ep.GetTagValuesInColumnOrder(columns, tags); Assert.Equal(3, result.Count); Assert.Equal(TagValue.Create("bar"), result[0]); Assert.Null(result[1]); Assert.Equal(TagValue.Create("bbb"), result[2]); }
public void ShouldIgnore_ReturnsExpected() { var options = new MetricsOptions(); var stats = new OpenCensusStats(); var tags = new OpenCensusTags(); var obs = new HttpClientCoreObserver(options, stats, tags, null); Assert.True(obs.ShouldIgnoreRequest("/api/v2/spans")); Assert.True(obs.ShouldIgnoreRequest("/v2/apps/foobar/permissions")); Assert.True(obs.ShouldIgnoreRequest("/v2/apps/barfoo/permissions")); Assert.False(obs.ShouldIgnoreRequest("/api/test")); Assert.False(obs.ShouldIgnoreRequest("/v2/apps")); }
public void ParseTag_ReturnsExpected() { var opts = new MetricsOptions(); var stats = new OpenCensusStats(); var ep = new MetricsEndpoint(opts, stats); var middle = new MetricsEndpointOwinMiddleware(null, ep); Assert.Null(middle.ParseTag("foobar")); Assert.Equal(new KeyValuePair <string, string>("foo", "bar"), middle.ParseTag("foo:bar")); Assert.Equal(new KeyValuePair <string, string>("foo", "bar:bar"), middle.ParseTag("foo:bar:bar")); Assert.Null(middle.ParseTag("foo,bar")); }
public async void HandleMetricsRequestAsync_GetSpecificNonExistingMetric_ReturnsExpected() { var opts = new MetricsOptions(); var stats = new OpenCensusStats(); var ep = new MetricsEndpoint(opts, stats); var middle = new MetricsEndpointOwinMiddleware(null, ep); var context = CreateRequest("GET", "/metrics/foo.bar"); await middle.HandleMetricsRequestAsync(context); Assert.Equal(404, context.Response.StatusCode); }
public void MetricsEndpointMiddleware_PathAndVerbMatching_ReturnsExpected() { var opts = new MetricsOptions(); var stats = new OpenCensusStats(); var ep = new MetricsEndpoint(opts, stats); var middle = new MetricsEndpointOwinMiddleware(null, ep); Assert.True(middle.RequestVerbAndPathMatch("GET", "/metrics")); Assert.False(middle.RequestVerbAndPathMatch("PUT", "/metrics")); Assert.False(middle.RequestVerbAndPathMatch("GET", "/badpath")); Assert.False(middle.RequestVerbAndPathMatch("POST", "/metrics")); Assert.False(middle.RequestVerbAndPathMatch("DELETE", "/metrics")); Assert.True(middle.RequestVerbAndPathMatch("GET", "/metrics/Foo.Bar.Class")); Assert.True(middle.RequestVerbAndPathMatch("GET", "/metrics/Foo.Bar.Class?tag=key:value&tag=key1:value1")); Assert.True(middle.RequestVerbAndPathMatch("GET", "/metrics?tag=key:value&tag=key1:value1")); }
public void GetTagContext_ReturnsExpected() { var options = new MetricsEndpointOptions(); var stats = new OpenCensusStats(); var tags = new OpenCensusTags(); var observer = new HttpClientDesktopObserver(options, stats, tags, null); var req = GetHttpRequestMessage(); var tagContext = observer.GetTagContext(req, HttpStatusCode.InternalServerError); var tagValues = tagContext.ToList(); tagValues.Contains(Tag.Create(TagKey.Create("clientName"), TagValue.Create("localhost:5555"))); tagValues.Contains(Tag.Create(TagKey.Create("uri"), TagValue.Create("/foo/bar"))); tagValues.Contains(Tag.Create(TagKey.Create("status"), TagValue.Create("500"))); tagValues.Contains(Tag.Create(TagKey.Create("method"), TagValue.Create("GET"))); }
public void ProcessEvent_IgnoresNulls() { var options = new MetricsEndpointOptions(); var stats = new OpenCensusStats(); var tags = new OpenCensusTags(); var observer = new AspNetCoreHostingObserver(options, stats, tags, null); observer.ProcessEvent("foobar", null); observer.ProcessEvent(AspNetCoreHostingObserver.STOP_EVENT, null); Activity act = new Activity("Test"); act.Start(); observer.ProcessEvent(AspNetCoreHostingObserver.STOP_EVENT, null); act.Stop(); }
private void SetupStats(OpenCensusStats stats) { var exceptionKey = TagKey.Create("exception"); var methodKey = TagKey.Create("method"); var uriKey = TagKey.Create("uri"); var statusKey = TagKey.Create("status"); var httpServerRquestMeasure = MeasureDouble.Create("server.totalTime", "server request times", MeasureUnit.MilliSeconds); var httpServerRequestsViewName = ViewName.Create("http.server.requests"); var httpServerRequestsView = View.Create( httpServerRequestsViewName, "server request times", httpServerRquestMeasure, Distribution.Create(BucketBoundaries.Create(new List <double>() { 0.0, 1.0, 2.0 })), new List <ITagKey>() { exceptionKey, methodKey, uriKey, statusKey }); stats.ViewManager.RegisterView(httpServerRequestsView); var area = TagKey.Create("area"); var id = TagKey.Create("id"); var memoryUsageMeasure = MeasureDouble.Create("memory.value", "memory usage", MeasureUnit.Bytes); var memoryUsageName = ViewName.Create("jvm.memory.used"); var memoryUsageView = View.Create( memoryUsageName, "memory usage", memoryUsageMeasure, Distribution.Create(BucketBoundaries.Create(new List <double>() { 0.0, 1000.0, 10000.0, 100000.0, 1000000.0, 10000000.0, 100000000.0 })), new List <ITagKey>() { area, id }); stats.ViewManager.RegisterView(memoryUsageView); }
public void ProcessEvent_IgnoresNulls() { var options = new MetricsOptions(); var stats = new OpenCensusStats(); var tags = new OpenCensusTags(); var observer = new HttpClientCoreObserver(options, stats, tags, null); observer.ProcessEvent("foobar", null); observer.ProcessEvent(HttpClientCoreObserver.STOP_EVENT, null); Activity act = new Activity("Test"); act.Start(); observer.ProcessEvent(HttpClientCoreObserver.STOP_EVENT, null); observer.ProcessEvent(HttpClientCoreObserver.EXCEPTION_EVENT, null); act.Stop(); }
public void MetricsEndpointMiddleware_PathAndVerbMatching_ReturnsExpected() { var opts = new MetricsEndpointOptions(); var mopts = TestHelpers.GetManagementOptions(opts); var stats = new OpenCensusStats(); var ep = new MetricsEndpoint(opts, stats); var middle = new MetricsEndpointMiddleware(null, ep, mopts); Assert.True(middle.RequestVerbAndPathMatch("GET", "/cloudfoundryapplication/metrics")); Assert.False(middle.RequestVerbAndPathMatch("PUT", "/cloudfoundryapplication/metrics")); Assert.False(middle.RequestVerbAndPathMatch("GET", "/cloudfoundryapplication/badpath")); Assert.False(middle.RequestVerbAndPathMatch("POST", "/cloudfoundryapplication/metrics")); Assert.False(middle.RequestVerbAndPathMatch("DELETE", "/cloudfoundryapplication/metrics")); Assert.True(middle.RequestVerbAndPathMatch("GET", "/cloudfoundryapplication/metrics/Foo.Bar.Class")); Assert.True(middle.RequestVerbAndPathMatch("GET", "/cloudfoundryapplication/metrics/Foo.Bar.Class?tag=key:value&tag=key1:value1")); Assert.True(middle.RequestVerbAndPathMatch("GET", "/cloudfoundryapplication/metrics?tag=key:value&tag=key1:value1")); }
public async void HandleMetricsRequestAsync_GetMetricsNames_ReturnsExpected() { var opts = new MetricsOptions(); var stats = new OpenCensusStats(); var ep = new MetricsEndpoint(opts, stats); var middle = new MetricsEndpointOwinMiddleware(null, ep); var context = CreateRequest("GET", "/metrics"); await middle.HandleMetricsRequestAsync(context); context.Response.Body.Seek(0, SeekOrigin.Begin); StreamReader rdr = new StreamReader(context.Response.Body); string json = await rdr.ReadToEndAsync(); Assert.Equal("{\"names\":[]}", json); }
public void GetStatistic_ReturnsExpected() { var opts = new MetricsEndpointOptions(); var stats = new OpenCensusStats(); var ep = new MetricsEndpoint(opts, stats); var m1 = MeasureDouble.Create("test.totalTime", "test", MeasureUnit.Seconds); var result = ep.GetStatistic(Sum.Create(), m1); Assert.Equal(MetricStatistic.TOTALTIME, result); var m2 = MeasureDouble.Create("test.value", "test", MeasureUnit.Seconds); result = ep.GetStatistic(LastValue.Create(), m2); Assert.Equal(MetricStatistic.VALUE, result); var m3 = MeasureDouble.Create("test.count", "test", MeasureUnit.Seconds); result = ep.GetStatistic(Count.Create(), m3); Assert.Equal(MetricStatistic.COUNT, result); var m4 = MeasureDouble.Create("test.sum", "test", MeasureUnit.Bytes); result = ep.GetStatistic(Sum.Create(), m4); Assert.Equal(MetricStatistic.TOTAL, result); var m5 = MeasureDouble.Create("foobar", "test", MeasureUnit.Seconds); result = ep.GetStatistic(Distribution.Create(BucketBoundaries.Create(new List <double>() { 0.0, 1.0, 5.0, 10.0, 100.0 })), m5); Assert.Equal(MetricStatistic.TOTALTIME, result); var m6 = MeasureDouble.Create("foobar", "test", MeasureUnit.Bytes); result = ep.GetStatistic(Distribution.Create(BucketBoundaries.Create(new List <double>() { 0.0, 1.0, 5.0, 10.0, 100.0 })), m6); Assert.Equal(MetricStatistic.TOTAL, result); }
public void GetMetricName_ReturnsExpected() { var opts = new MetricsOptions(); var stats = new OpenCensusStats(); var ep = new MetricsEndpoint(opts, stats); var middle = new MetricsEndpointOwinMiddleware(null, ep); var context1 = CreateRequest("GET", "/metrics"); Assert.Null(middle.GetMetricName(context1.Request)); var context2 = CreateRequest("GET", "/metrics/Foo.Bar.Class"); Assert.Equal("Foo.Bar.Class", middle.GetMetricName(context2.Request)); var context3 = CreateRequest("GET", "/metrics", "tag=key:value&tag=key1:value1"); Assert.Null(middle.GetMetricName(context3.Request)); }
public void GetStatusCode_ReturnsExpected() { var options = new MetricsOptions(); var stats = new OpenCensusStats(); var tags = new OpenCensusTags(); var observer = new HttpClientCoreObserver(options, stats, tags, null); var message = GetHttpResponseMessage(HttpStatusCode.OK); string status = observer.GetStatusCode(message, default(TaskStatus)); Assert.Equal("200", status); status = observer.GetStatusCode(null, TaskStatus.Canceled); Assert.Equal("CLIENT_CANCELED", status); status = observer.GetStatusCode(null, TaskStatus.Faulted); Assert.Equal("CLIENT_FAULT", status); status = observer.GetStatusCode(null, TaskStatus.RanToCompletion); Assert.Equal("CLIENT_ERROR", status); }
public void ShouldIgnore_ReturnsExpected() { var options = new MetricsEndpointOptions(); var stats = new OpenCensusStats(); var tags = new OpenCensusTags(); var obs = new AspNetCoreHostingObserver(options, stats, tags, null); Assert.True(obs.ShouldIgnoreRequest("/cloudfoundryapplication/info")); Assert.True(obs.ShouldIgnoreRequest("/cloudfoundryapplication/health")); Assert.True(obs.ShouldIgnoreRequest("/foo/bar/image.png")); Assert.True(obs.ShouldIgnoreRequest("/foo/bar/image.gif")); Assert.True(obs.ShouldIgnoreRequest("/favicon.ico")); Assert.True(obs.ShouldIgnoreRequest("/foo.js")); Assert.True(obs.ShouldIgnoreRequest("/foo.css")); Assert.True(obs.ShouldIgnoreRequest("/javascript/foo.js")); Assert.True(obs.ShouldIgnoreRequest("/css/foo.css")); Assert.True(obs.ShouldIgnoreRequest("/foo.html")); Assert.True(obs.ShouldIgnoreRequest("/html/foo.html")); Assert.False(obs.ShouldIgnoreRequest("/api/test")); Assert.False(obs.ShouldIgnoreRequest("/v2/apps")); }
public void GetMetricName_ReturnsExpected() { var opts = new MetricsEndpointOptions(); var mopts = TestHelpers.GetManagementOptions(opts); var stats = new OpenCensusStats(); var ep = new MetricsEndpoint(opts, stats); var middle = new MetricsEndpointMiddleware(null, ep, mopts); var context1 = CreateRequest("GET", "/cloudfoundryapplication/metrics"); Assert.Null(middle.GetMetricName(context1.Request)); var context2 = CreateRequest("GET", "/cloudfoundryapplication/metrics/Foo.Bar.Class"); Assert.Equal("Foo.Bar.Class", middle.GetMetricName(context2.Request)); var context3 = CreateRequest("GET", "/cloudfoundryapplication/metrics", "?tag=key:value&tag=key1:value1"); Assert.Null(middle.GetMetricName(context3.Request)); }
public void GetException_ReturnsExpected() { var options = new MetricsEndpointOptions(); var stats = new OpenCensusStats(); var tags = new OpenCensusTags(); var observer = new AspNetCoreHostingObserver(options, stats, tags, null); var context = GetHttpRequestMessage(); string exception = observer.GetException(context); Assert.Equal("None", exception); context = GetHttpRequestMessage(); var exceptionHandlerFeature = new ExceptionHandlerFeature() { Error = new ArgumentNullException() }; context.Features.Set <IExceptionHandlerFeature>(exceptionHandlerFeature); exception = observer.GetException(context); Assert.Equal("ArgumentNullException", exception); }