コード例 #1
0
        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);
        }
コード例 #2
0
        public void HandleThreadsEvent_RecordsValues()
        {
            var options   = new MetricsObserverOptions();
            var stats     = new TestOpenTelemetryMetrics();
            var factory   = stats.Factory;
            var processor = stats.Processor;
            var observer  = new CLRRuntimeObserver(options, stats, null);

            var metrics = new CLRRuntimeSource.ThreadMetrics(100, 100, 200, 200);

            observer.HandleThreadsEvent(metrics);

            factory.CollectAllMetrics();

            var metricName = "clr.threadpool.active";
            var summary    = processor.GetMetricByName <long>(metricName);

            Assert.NotNull(summary);
            var mean = summary.Sum / summary.Count;

            Assert.Equal(100, mean);
            Assert.Equal(100, summary.Min);
            Assert.Equal(100, summary.Max);

            var workerLabel = new Dictionary <string, string>()
            {
                { "kind", "worker" }
            }.ToList();

            summary = processor.GetMetricByName <long>(metricName, workerLabel);
            Assert.NotNull(summary);
            mean = summary.Sum / summary.Count;
            Assert.Equal(100, mean);
            Assert.Equal(100, summary.Min);
            Assert.Equal(100, summary.Max);

            var comportLabel = new Dictionary <string, string>()
            {
                { "kind", "completionPort" }
            }.ToList();

            summary = processor.GetMetricByName <long>(metricName, comportLabel);
            Assert.NotNull(summary);
            mean = summary.Sum / summary.Count;
            Assert.Equal(100, mean);
            Assert.Equal(100, summary.Min);
            Assert.Equal(100, summary.Max);

            metricName = "clr.threadpool.avail";
            summary    = processor.GetMetricByName <long>(metricName);
            Assert.NotNull(summary);
            mean = summary.Sum / summary.Count;
            Assert.Equal(100, mean);
            Assert.Equal(100, summary.Min);
            Assert.Equal(100, summary.Max);

            summary = processor.GetMetricByName <long>(metricName, workerLabel);
            Assert.NotNull(summary);
            mean = summary.Sum / summary.Count;
            Assert.Equal(100, mean);
            Assert.Equal(100, summary.Min);
            Assert.Equal(100, summary.Max);

            summary = processor.GetMetricByName <long>(metricName, comportLabel);
            Assert.NotNull(summary);
            mean = summary.Sum / summary.Count;
            Assert.Equal(100, mean);
            Assert.Equal(100, summary.Min);
            Assert.Equal(100, summary.Max);
        }