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 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); }