コード例 #1
0
 public void First_call_to_meter_returns_zero()
 {
     using (var meter = new ProcessCpuUsageMeter())
     {
         var usage = meter.GetCpuUsage();
         usage.Should().Be(0);
     }
 }
コード例 #2
0
        public void Value_is_cached_for_next_250_milliseconds()
        {
            var cachePeriod = 250.Milliseconds();

            using (var meter = new ProcessCpuUsageMeter())
            {
                // warmup meter
                TestHelpers.GetMeterValues(() => meter.GetCpuUsage(), cachePeriod, 2);
                var results = TestHelpers.GetMeterValues(
                    () => meter.GetCpuUsage(),
                    ((cachePeriod - 20.Milliseconds()).Ticks / 5).Ticks(),
                    5);
                results.Should().AllBeEquivalentTo(results[0]);
            }
        }
コード例 #3
0
        public void Measures_CPU_usage_for_process()  //TODO (epeshk): should we set limits or use processor affinity to make this test more stable?
        {
            using (var testProcess = new TestProcessHandle())
                using (var meter = new ProcessCpuUsageMeter(testProcess.Process.Id))
                {
                    var observationsCount = 20;
                    var lowValues         = TestHelpers.GetMeterValues(() => meter.GetCpuUsage(), TimeSpan.FromMilliseconds(100), observationsCount);
                    testProcess.EatCpu(1);
                    var highValues = TestHelpers.GetMeterValues(() => meter.GetCpuUsage(), TimeSpan.FromMilliseconds(100), observationsCount);

                    Console.WriteLine($"Low values: {string.Join(", ", lowValues)}");
                    Console.WriteLine($"High values: {string.Join(", ", highValues)}");

                    highValues
                    .Count(h => lowValues.All(l => l < h))
                    .Should()
                    .BeGreaterOrEqualTo((int)(highValues.Length * 0.75));
                }
        }