コード例 #1
0
 public void GetCounterSamples_ReturnsExpectedSampleCount()
 {
     var reader = new PerfmonCounterReader();
     using (var cancellationTokenSource = new CancellationTokenSource())
     {
         Assert.Single(reader.GetCounterSamples(new[] { @"\processor(_total)\% processor time" }, TimeSpan.FromSeconds(1), 1, cancellationTokenSource.Token)
             .SelectMany(set => set.CounterSamples));
     }
 }
コード例 #2
0
        public void GetCounterSamples_ReturnsExpectedSampleCount()
        {
            var reader = new PerfmonCounterReader();

            using (var cancellationTokenSource = new CancellationTokenSource())
            {
                Assert.Single(reader.GetCounterSamples(new[] { @"\processor(_total)\% processor time" }, TimeSpan.FromSeconds(1), 1, cancellationTokenSource.Token)
                              .SelectMany(set => set.CounterSamples));
            }
        }
コード例 #3
0
 public void GetCounterSamples_IsCancellable()
 {
     var reader = new PerfmonCounterReader();
     using (var cancellationTokenSource = new CancellationTokenSource())
     {
         List<PerformanceCounterSampleSet> sampleSets = new List<PerformanceCounterSampleSet>();
         foreach (var sampleSet in reader.GetCounterSamples(TimeSpan.FromSeconds(5), 20, cancellationTokenSource.Token))
         {
             sampleSets.Add(sampleSet);
             cancellationTokenSource.Cancel();
         }
         Assert.Single(sampleSets);
     }
 }
コード例 #4
0
        public void GetCounterSamples_IsCancellable()
        {
            var reader = new PerfmonCounterReader();

            using (var cancellationTokenSource = new CancellationTokenSource())
            {
                List <PerformanceCounterSampleSet> sampleSets = new List <PerformanceCounterSampleSet>();
                foreach (var sampleSet in reader.GetCounterSamples(TimeSpan.FromSeconds(5), 20, cancellationTokenSource.Token))
                {
                    sampleSets.Add(sampleSet);
                    cancellationTokenSource.Cancel();
                }
                Assert.Single(sampleSets);
            }
        }
コード例 #5
0
 public Task CreateContinuousTask(CancellationToken cancellationToken)
 {
     return(new Task(() =>
     {
         var reader = new PerfmonCounterReader();
         using (var messenger = new UdpMessenger(_metricPublishingConfig.HostName, _metricPublishingConfig.Port))
         {
             foreach (var metricBatch in reader.StreamCounterSamples(_counterPaths, _counterSamplingConfig.SampleInterval, cancellationToken)
                      .SelectMany(set => set.CounterSamples.ToGraphiteString(_metricPublishingConfig.PrefixKey))
                      .Chunk(10))
             {
                 messenger.SendMetrics(metricBatch);
             }
         }
     }, cancellationToken));
 }
コード例 #6
0
 public Task CreateContinuousTask(CancellationToken cancellationToken)
 {
     return(new Task(() =>
     {
         var reader = new PerfmonCounterReader();
         using (var messenger = new MetricClient(_metricPublishingConfig))
         {
             foreach (var metricBatch in reader.StreamCounterSamples(_counterPaths, _counterSamplingConfig.SampleInterval, cancellationToken)
                      .SelectMany(set => set.CounterSamples.ToMetrics(_counterSamplingConfig.AddInstanceNameToMetrics))
                      .Chunk(10))
             {
                 messenger.Send(metricBatch);
             }
         }
     }, cancellationToken));
 }
コード例 #7
0
        public void GetCounterSamples_ProcessorTime_HasReasonableValues(string counter, PerformanceCounterType counterType, double minValue, double maxValue, string instanceName, ulong timeBase)
        {
            var reader = new PerfmonCounterReader();
            using (var cancellationTokenSource = new CancellationTokenSource())
            {
                var sample = reader.GetCounterSamples(new[] { counter }, TimeSpan.FromSeconds(1), 1, cancellationTokenSource.Token)
                    .SelectMany(set => set.CounterSamples)
                    .First();

                //TODO: this is bad form - replace with an object comparer
                Assert.Equal(counterType, sample.CounterType);
                Assert.InRange(sample.CookedValue, minValue, maxValue);
                Assert.Equal(instanceName, sample.InstanceName);
                Assert.Equal(timeBase, sample.TimeBase);
                Assert.True(sample.Path.ToLower().EndsWith(counter.ToLower()));
            }
        }
コード例 #8
0
        public void GetCounterSamples_ProcessorTime_HasReasonableValues(string counter, PerformanceCounterType counterType, double minValue, double maxValue, string instanceName, ulong timeBase)
        {
            var reader = new PerfmonCounterReader();

            using (var cancellationTokenSource = new CancellationTokenSource())
            {
                var sample = reader.GetCounterSamples(new[] { counter }, TimeSpan.FromSeconds(1), 1, cancellationTokenSource.Token)
                             .SelectMany(set => set.CounterSamples)
                             .First();

                //TODO: this is bad form - replace with an object comparer
                Assert.Equal(counterType, sample.CounterType);
                Assert.InRange(sample.CookedValue, minValue, maxValue);
                Assert.Equal(instanceName, sample.InstanceName);
                Assert.Equal(timeBase, sample.TimeBase);
                Assert.True(sample.Path.ToLower().EndsWith(counter.ToLower()));
            }
        }
コード例 #9
0
        public Task CreateContinuousTask(CancellationToken cancellationToken)
        {
            return(new Task(() =>
            {
                var reader = new PerfmonCounterReader();

                using (GraphiteUdpClient client = new GraphiteUdpClient(_counterSamplingConfig.MetricHost, _counterSamplingConfig.MetricHostPort, _counterSamplingConfig.MetricPrefix))
                {
                    foreach (var samples in reader.StreamCounterSamples(_counterPaths, _counterSamplingConfig.SampleInterval, cancellationToken))
                    {
                        foreach (PerformanceCounterSample metric in samples.CounterSamples)
                        {
                            foreach (CounterFilter filter in _counterFilters)
                            {
                                if (!metric.IsFiltered(_counterFilters))
                                {
                                    client.Send(metric.MetricPath, metric.MetricValue, metric.Timestamp);
                                }
                            }
                        }
                    }
                }
            }, cancellationToken));
        }