public void TransformSample_ThreadpoolUsageStats_CreatesCorrectMetricValues() { const int countWorkerThreadsRemaining = 83; const int countWorkerThreadsInUse = 17; const int countCompletionThreadsRemaining = 180; const int countCompletionThreadsInUse = 20; var generatedMetrics = new Dictionary <string, MetricDataWireModel>(); Mock.Arrange(() => _metricAggregator .Collect(Arg.IsAny <MetricWireModel>())) .DoInstead <MetricWireModel>(m => generatedMetrics.Add(m.MetricName.Name, m.Data)); var sample = new ThreadpoolUsageStatsSample(countWorkerThreadsRemaining + countWorkerThreadsInUse, countWorkerThreadsRemaining, countCompletionThreadsRemaining + countCompletionThreadsInUse, countCompletionThreadsRemaining); _threadStatsTransformer.Transform(sample); NrAssert.Multiple( () => Assert.AreEqual(4, generatedMetrics.Count), () => MetricTestHelpers.CompareMetric(generatedMetrics, MetricNames.GetThreadpoolUsageStatsName(ThreadType.Worker, ThreadStatus.InUse), countWorkerThreadsInUse), () => MetricTestHelpers.CompareMetric(generatedMetrics, MetricNames.GetThreadpoolUsageStatsName(ThreadType.Worker, ThreadStatus.Available), countWorkerThreadsRemaining), () => MetricTestHelpers.CompareMetric(generatedMetrics, MetricNames.GetThreadpoolUsageStatsName(ThreadType.Completion, ThreadStatus.InUse), countCompletionThreadsInUse), () => MetricTestHelpers.CompareMetric(generatedMetrics, MetricNames.GetThreadpoolUsageStatsName(ThreadType.Completion, ThreadStatus.Available), countCompletionThreadsRemaining) ); }
public void Transform(ThreadpoolUsageStatsSample threadpoolStats) { var workerThreadsAvail = _metricBuilder.TryBuildThreadpoolUsageStatsMetric(ThreadType.Worker, ThreadStatus.Available, threadpoolStats.WorkerCountThreadsAvail); var workerThreadsUsed = _metricBuilder.TryBuildThreadpoolUsageStatsMetric(ThreadType.Worker, ThreadStatus.InUse, threadpoolStats.WorkerCountThreadsUsed); var completionThreadsAvail = _metricBuilder.TryBuildThreadpoolUsageStatsMetric(ThreadType.Completion, ThreadStatus.Available, threadpoolStats.CompletionCountThreadsAvail); var completionThreadsUsed = _metricBuilder.TryBuildThreadpoolUsageStatsMetric(ThreadType.Completion, ThreadStatus.InUse, threadpoolStats.CompletionCountThreadsUsed); RecordMetrics(workerThreadsAvail, workerThreadsUsed, completionThreadsAvail, completionThreadsUsed); }