public void ExtremeObservations()
        {
            var hist = new Histogram(0.01, 60e9);
            hist.AddObservation(-0.5);  // should be in the first bucket
            hist.AddObservation(1e12);  // should be in the last bucket 

            var data = hist.GetSnapshot();
            Assert.AreEqual(1, data.Bucket[0]);
            Assert.AreEqual(1, data.Bucket[data.Bucket.Count - 1]);
        }
        public void Reset()
        {
            var hist = new Histogram(0.01, 60e9);
            hist.AddObservation(10000);
            hist.AddObservation(11000);

            var data = hist.GetSnapshot(true);  // snapshot contains data before reset
            Assert.AreEqual(2, data.Count);
            Assert.AreEqual(10000, data.MinSeen);
            Assert.AreEqual(11000, data.MaxSeen);

            data = hist.GetSnapshot();  // snapshot contains state after reset
            Assert.AreEqual(0, data.Count);
            Assert.AreEqual(double.PositiveInfinity, data.MinSeen);
            Assert.AreEqual(double.NegativeInfinity, data.MaxSeen);
            Assert.AreEqual(0, data.Sum);
            Assert.AreEqual(0, data.SumOfSquares);
            CollectionAssert.AreEqual(new uint[data.Bucket.Count], data.Bucket); 
        }
        public void Simple()
        {
            var hist = new Histogram(0.01, 60e9);
            hist.AddObservation(10000);
            hist.AddObservation(10000);
            hist.AddObservation(11000);
            hist.AddObservation(11000);

            var data = hist.GetSnapshot();

            Assert.AreEqual(4, data.Count);
            Assert.AreEqual(42000.0, data.Sum, 1e-6);
            Assert.AreEqual(10000, data.MinSeen);
            Assert.AreEqual(11000, data.MaxSeen);
            Assert.AreEqual(2.0*10000*10000 + 2.0*11000*11000, data.SumOfSquares, 1e-6);

            // 1.01^925 < 10000 < 1.01^926
            Assert.AreEqual(2, data.Bucket[925]);
            Assert.AreEqual(2, data.Bucket[935]);
        }
Пример #4
0
        public SyncUnaryClientRunner(Channel channel, int payloadSize, HistogramParams histogramParams)
        {
            this.channel = GrpcPreconditions.CheckNotNull(channel);
            this.payloadSize = payloadSize;
            this.histogram = new Histogram(histogramParams.Resolution, histogramParams.MaxPossible);

            this.stoppedCts = new CancellationTokenSource();
            this.client = BenchmarkService.NewClient(channel);
            this.runnerTask = Task.Factory.StartNew(Run, TaskCreationOptions.LongRunning);
        }
        public ClientRunnerImpl(List<Channel> channels, ClientType clientType, RpcType rpcType, int outstandingRpcsPerChannel, LoadParams loadParams, PayloadConfig payloadConfig, HistogramParams histogramParams, Func<BasicProfiler> profilerFactory)
        {
            GrpcPreconditions.CheckArgument(outstandingRpcsPerChannel > 0, "outstandingRpcsPerChannel");
            GrpcPreconditions.CheckNotNull(histogramParams, "histogramParams");
            this.channels = new List<Channel>(channels);
            this.clientType = clientType;
            this.rpcType = rpcType;
            this.payloadConfig = payloadConfig;
            this.histogram = new Histogram(histogramParams.Resolution, histogramParams.MaxPossible);

            this.runnerTasks = new List<Task>();
            foreach (var channel in this.channels)
            {
                for (int i = 0; i < outstandingRpcsPerChannel; i++)
                {
                    var timer = CreateTimer(loadParams, 1.0 / this.channels.Count / outstandingRpcsPerChannel);
                    var optionalProfiler = profilerFactory();
                    this.runnerTasks.Add(RunClientAsync(channel, timer, optionalProfiler));
                }
            }
        }
Пример #6
0
 public MetricsServiceImpl(Histogram histogram)
 {
     this.histogram = histogram;
 }
Пример #7
0
        public ClientRunnerImpl(List<Channel> channels, ClientType clientType, RpcType rpcType, int outstandingRpcsPerChannel, LoadParams loadParams, PayloadConfig payloadConfig, HistogramParams histogramParams)
        {
            GrpcPreconditions.CheckArgument(outstandingRpcsPerChannel > 0, "outstandingRpcsPerChannel");
            this.channels = new List<Channel>(channels);
            this.clientType = clientType;
            this.rpcType = rpcType;
            this.payloadConfig = payloadConfig;
            this.histogram = new Histogram(histogramParams.Resolution, histogramParams.MaxPossible);

            this.runnerTasks = new List<Task>();
            foreach (var channel in this.channels)
            {
                for (int i = 0; i < outstandingRpcsPerChannel; i++)
                {
                    var timer = CreateTimer(loadParams, 1.0 / this.channels.Count / outstandingRpcsPerChannel);
                    var threadBody = GetThreadBody(channel, timer);
                    this.runnerTasks.Add(Task.Factory.StartNew(threadBody, TaskCreationOptions.LongRunning));
                }
            }
        }
Пример #8
0
 public MetricsServiceImpl(Histogram histogram)
 {
     this.histogram = histogram;
 }