public NancyAdapterGlobalMetrics()
        {
            this.clock     = new TestClock();
            this.scheduler = new TestScheduler(clock);

            this.timer   = new TimerMetric(SamplingType.SlidingWindow, new MeterMetric(clock, scheduler), clock);
            this.meter   = new MeterMetric(clock, scheduler);
            this.counter = new CounterMetric();
            this.size    = new HistogramMetric();

            this.browser = new Browser(with =>
            {
                with.ApplicationStartup((c, p) =>
                {
                    Metric.Config.WithNancy(new TestRegistry
                    {
                        TimerInstance     = timer,
                        MeterInstance     = meter,
                        CounterInstance   = counter,
                        HistogramInstance = size
                    }, nancy => nancy.WithGlobalMetrics(config => config.RegisterAllMetrics(p)));
                });
                with.Module(new TestModule(this.clock));
                with.Module(new ActiveRequestsModule(this.requestTrigger.Task, result1, result2));
            });
        }
Пример #2
0
        public void HistogramMetric_should_flatten_and_return_itself()
        {
            Distribution distribution =
                new Distribution(
                    new Dictionary <string, DistributionValue>
            {
                { "a", new DistributionValue(6, .6) }, { "b", new DistributionValue(4, .4) }
            }, 2);

            HistogramMetric metric = new HistogramMetric("instance-name", Try <Distribution> .From(() => distribution));

            List <DoubleMetric> expected = new List <DoubleMetric>
            {
                new DoubleMetric(MetricEntity.Column, "Histogram.bins", "instance-name", Try <double> .From(() => 2)),
                new DoubleMetric(MetricEntity.Column, "Histogram.abs.a", "instance-name", Try <double> .From(() => 6)),
                new DoubleMetric(MetricEntity.Column, "Histogram.abs.b", "instance-name", Try <double> .From(() => 4)),
                new DoubleMetric(MetricEntity.Column, "Histogram.ratio.a", "instance-name", Try <double> .From(() => .6)),
                new DoubleMetric(MetricEntity.Column, "Histogram.ratio.b", "instance-name", Try <double> .From(() => .4))
            };

            metric.Flatten().Any(flattenMetric => flattenMetric.Name == "Histogram.bins").ShouldBeTrue();
            metric.Flatten().Any(flattenMetric => flattenMetric.Name == "Histogram.abs.a").ShouldBeTrue();
            metric.Flatten().Any(flattenMetric => flattenMetric.Name == "Histogram.abs.b").ShouldBeTrue();
            metric.Flatten().Any(flattenMetric => flattenMetric.Name == "Histogram.ratio.a").ShouldBeTrue();
            metric.Flatten().Any(flattenMetric => flattenMetric.Name == "Histogram.ratio.b").ShouldBeTrue();
        }
        public NancyAdapterGlobalMetrics()
        {
            this.clock = new TestClock();
            this.scheduler = new TestScheduler(clock);

            this.timer = new TimerMetric(SamplingType.SlidingWindow, new MeterMetric(clock, scheduler), clock);
            this.meter = new MeterMetric(clock, scheduler);
            this.counter = new CounterMetric();
            this.size = new HistogramMetric();

            this.browser = new Browser(with =>
            {
                with.ApplicationStartup((c, p) =>
                {
                    Metric.Config.WithNancy(new TestRegistry
                    {
                        TimerInstance = timer,
                        MeterInstance = meter,
                        CounterInstance = counter,
                        HistogramInstance = size
                    }, nancy => nancy.WithGlobalMetrics(config => config.RegisterAllMetrics(p)));
                });
                with.Module(new TestModule(this.clock));
                with.Module(new ActiveRequestsModule(this.requestTrigger.Task, result1, result2));
            });
        }
Пример #4
0
        public void can_add_histgoram_values()
        {
            var histogramMetric = new HistogramMetric(SamplingType.ExponentiallyDecaying, 1028, 0.015);

            histogramMetric.Update(10000, "value");
            var values = new Dictionary <string, object>();

            histogramMetric.Value.AddHistogramValues(values);

            values.Keys.Should().Contain("samples");
            values.Keys.Should().Contain("last");
            values.Keys.Should().Contain("count.hist");
            values.Keys.Should().Contain("min");
            values.Keys.Should().Contain("max");
            values.Keys.Should().Contain("mean");
            values.Keys.Should().Contain("median");
            values.Keys.Should().Contain("stddev");
            values.Keys.Should().Contain("p999");
            values.Keys.Should().Contain("p99");
            values.Keys.Should().Contain("p98");
            values.Keys.Should().Contain("p95");
            values.Keys.Should().Contain("p75");
            values.Keys.Should().Contain("user.last");
            values.Keys.Should().Contain("user.min");
            values.Keys.Should().Contain("user.max");
        }
Пример #5
0
 public void HistogramCanCount()
 {
     var histogram = new HistogramMetric(new UniformReservoir());
     histogram.Update(1L);
     histogram.Value.Count.Should().Be(1);
     histogram.Update(1L);
     histogram.Value.Count.Should().Be(2);
 }
Пример #6
0
        public void SampleMin_WhenPassed8And9_Returns8()
        {
            var underTest = new HistogramMetric(HistogramMetric.SampleType.Uniform);

            underTest.Update(9);
            underTest.Update(8);
            Assert.AreEqual(8, underTest.SampleMin);
        }
Пример #7
0
        public void Count_WhenPassedTwoValues_Returns2()
        {
            var underTest = new HistogramMetric(HistogramMetric.SampleType.Uniform);

            underTest.Update(9);
            underTest.Update(8);
            Assert.AreEqual(2, underTest.Count);
        }
Пример #8
0
        public void Max_WhenPassed8And9_Returns9()
        {
            var underTest = new HistogramMetric(HistogramMetric.SampleType.Uniform);

            underTest.Update(9);
            underTest.Update(8);
            Assert.AreEqual(9, underTest.Max);
        }
Пример #9
0
        public void Mean_WhenPassed8And9_Returns8Point5()
        {
            var underTest = new HistogramMetric(HistogramMetric.SampleType.Uniform);

            underTest.Update(9);
            underTest.Update(8);
            Assert.AreEqual(8.5, underTest.Mean);
        }
Пример #10
0
        public void SampleMin_UsesSample()
        {
            var underTest = new HistogramMetric(new RejectEverythingAboveTenSample());

            underTest.Update(11);
            underTest.Update(12);
            Assert.AreEqual(0, underTest.SampleMin);
        }
 public DiskPerformanceStorage()
 {
     WriteLatencyHistogram = new HistogramMetric(HistogramMetric.SampleType.Uniform);
     ReadLatencyHistogram  = new HistogramMetric(HistogramMetric.SampleType.Uniform);
     ReadPerSecondHistory  = new List <long>();
     WritePerSecondHistory = new List <long>();
     AverageReadLatencyPerSecondHistory  = new List <double>();
     AverageWriteLatencyPerSecondHistory = new List <double>();
 }
Пример #12
0
        public void HistogramCanCount()
        {
            var histogram = new HistogramMetric(new UniformReservoir());

            histogram.Update(1L);
            histogram.Value.Count.Should().Be(1);
            histogram.Update(1L);
            histogram.Value.Count.Should().Be(2);
        }
Пример #13
0
        public void BiasedHistogram_UsesSample()
        {
            var underTest  = new HistogramMetric(HistogramMetric.SampleType.Biased);
            var sampleSize = 1028;
            var sample     = Enumerable.Range(1, sampleSize).ToList();

            foreach (var s in sample)
            {
                underTest.Update(s);
            }

            Assert.AreEqual(sampleSize, underTest.SampleCount);
            CollectionAssert.AreEquivalent(sample, underTest.Values);
        }
        public NancyAdapterModuleMetricsTests()
        {
            this.clock = new TestClock();
            TestScheduler scheduler = new TestScheduler(clock);

            this.timer = new TimerMetric(SamplingType.SlidingWindow, new MeterMetric(clock, scheduler), clock);
            this.sizeHistogram = new HistogramMetric();
            Metric.Config.WithNancy(new TestRegistry { TimerInstance = timer, HistogramInstance = sizeHistogram }, c => { });
            
            this.browser = new Browser(with =>
            {
                with.Module(new TestModule(this.clock));
            });
        }
Пример #15
0
        public void can_report_histograms()
        {
            var expected = StringReporterSamples.Histograms.ExtractStringReporterSampleFromResourceFile();
            var sr       = new StringReporter();
            var metric   = new HistogramMetric(SamplingType.ExponentiallyDecaying, Constants.ReservoirSampling.DefaultSampleSize,
                                               Constants.ReservoirSampling.DefaultExponentialDecayFactor);

            metric.Update(1000, "value1");
            metric.Update(2000, "value2");

            sr.ReportMetric("test", new HistogramValueSource("histogram_name", metric, Unit.None, MetricTags.None));

            AssertReportResult(sr.Result, expected);
        }
Пример #16
0
        private static void WriteHistogram(StringBuilder sb, HistogramMetric histogram)
        {
            var percentiles = histogram.Percentiles(0.5, 0.75, 0.95, 0.98, 0.99, 0.999);

            sb.AppendFormat("               min = {0:F2}\n", histogram.Min);
            sb.AppendFormat("               max = {0:F2}\n", histogram.Max);
            sb.AppendFormat("              mean = {0:F2}\n", histogram.Mean);
            sb.AppendFormat("            stddev = {0:F2}\n", histogram.StdDev);
            sb.AppendFormat("            median = {0:F2}\n", percentiles[0]);
            sb.AppendFormat("              75%% <= {0:F2}\n", percentiles[1]);
            sb.AppendFormat("              95%% <= {0:F2}\n", percentiles[2]);
            sb.AppendFormat("              98%% <= {0:F2}\n", percentiles[3]);
            sb.AppendFormat("              99%% <= {0:F2}\n", percentiles[4]);
            sb.AppendFormat("            99.9%% <= {0:F2}\n", percentiles[5]);
        }
Пример #17
0
        private static void WriteHistogram(TextWriter writer, HistogramMetric histogram)
        {
            var percentiles = histogram.Percentiles(0.5, 0.75, 0.95, 0.98, 0.99, 0.999);

            writer.Write("               min = %{0:2}\n", histogram.Min);
            writer.Write("               max = %{0:2}\n", histogram.Max);
            writer.Write("              mean = %{0:2}\n", histogram.Mean);
            writer.Write("            stddev = %{0:2}\n", histogram.StdDev);
            writer.Write("            median = %{0:2}\n", percentiles[0]);
            writer.Write("              75%% <= %{0:2}\n", percentiles[1]);
            writer.Write("              95%% <= %{0:2}\n", percentiles[2]);
            writer.Write("              98%% <= %{0:2}\n", percentiles[3]);
            writer.Write("              99%% <= %{0:2}\n", percentiles[4]);
            writer.Write("            99.9%% <= %{0:2}\n", percentiles[5]);
        }
Пример #18
0
        static void Main(string[] args)
        {
            try
            {
                var metrics = new Metrics();
                //DataDogReporterConfigModel dataDogReporterConfigModel = new DataDogReporterConfigModel("appdev", 8125, "ApplicationName", "DomainName", "Development");

                ITransport transport = new UdpTransport.Builder().WithPort(8125)
                                       .WithStatsdHost("appdev")
                                       .Build();

                string   host        = "hostName";
                string   environment = "testEnv";
                string[] path        = { "ApplicationName", "DomainName" };

                //IMetricNameFormatter formatter = new AppendMetricNameToPathFormatter();
                IMetricNameFormatter formatter = new AppendMetricNameToPathFormatter();

                var reporter = new DataDogReporter(metrics, transport, formatter, environment, host, path);
                reporter.Start(5, TimeUnit.Seconds);

                CounterMetric   counter         = metrics.Counter("test", "CounterMetric");
                HistogramMetric histogramMetric = metrics.Histogram("test", "HistogramMetric");
                GaugeMetric     gaugeMetric     = metrics.Gauge("test", "GaugeMetric", GetNumberOfUsersLoggedIn);
                var             rand            = new Random();

                int runs = 0;
                while (runs < 1000)
                {
                    System.Console.WriteLine("Loop " + (runs++) + " of 1000");
                    counter.Increment();
                    counter.Increment();
                    counter.Increment();

                    histogramMetric.Update(rand.Next(100));
                    histogramMetric.Update(rand.Next(100));
                    histogramMetric.Update(rand.Next(100));
                    histogramMetric.Update(rand.Next(100));
                    histogramMetric.Update(rand.Next(100));

                    Thread.Sleep(5000);
                }
            }
            catch (Exception e)
            {
                throw;
            }
        }
        public NancyAdapterModuleMetricsTests()
        {
            this.clock = new TestClock();
            TestScheduler scheduler = new TestScheduler(clock);

            this.timer         = new TimerMetric(SamplingType.SlidingWindow, new MeterMetric(clock, scheduler), clock);
            this.sizeHistogram = new HistogramMetric();
            Metric.Config.WithNancy(new TestRegistry {
                TimerInstance = timer, HistogramInstance = sizeHistogram
            }, c => { });

            this.browser = new Browser(with =>
            {
                with.Module(new TestModule(this.clock));
            });
        }
Пример #20
0
        public void MetricConverterTest()
        {
            var             metrics         = new Metrics();
            CounterMetric   counter         = metrics.Counter("test", "CounterMetric");
            HistogramMetric histogramMetric = metrics.Histogram("test", "HistogramMetric");
            GaugeMetric     gaugeMetric     = metrics.Gauge("test", "GaugeMetric", GetNumberOfUsersLoggedIn);

            DataDogReporter reporter = CreateDefaultReporter(metrics);

            TestRequest request = new TestRequest();

            reporter.TransformMetrics(request, metrics, 0);

            IDictionary <string, DatadogSeries> convertedMetrics = request.Metrics;

            Assert.AreEqual(12, convertedMetrics.Count);
        }
Пример #21
0
        public void can_report_timers()
        {
            var expected  = StringReporterSamples.Timers.ExtractStringReporterSampleFromResourceFile();
            var sr        = new StringReporter();
            var clock     = new TestClock();
            var histogram = new HistogramMetric(SamplingType.ExponentiallyDecaying, Constants.ReservoirSampling.DefaultSampleSize,
                                                Constants.ReservoirSampling.DefaultExponentialDecayFactor);
            var metric = new TimerMetric(histogram, clock);

            metric.Record(1000, TimeUnit.Milliseconds, "value1");
            metric.Record(2000, TimeUnit.Milliseconds, "value2");

            sr.ReportMetric("test", new TimerValueSource("timer_name", metric, Unit.None, TimeUnit.Milliseconds,
                                                         TimeUnit.Milliseconds, MetricTags.None));

            AssertReportResult(sr.Result, expected);
        }
        private void LogHistogram(IRequest request, MetricName metricName, HistogramMetric metric, long timestamp)
        {
            LogGauge(request, metricName.Name + "." + HistogramMetrics.Max.GetDatadogName(), metric.SampleMax, timestamp);
            LogGauge(request, metricName.Name + "." + HistogramMetrics.Min.GetDatadogName(), metric.SampleMin, timestamp);
            LogGauge(request, metricName.Name + "." + HistogramMetrics.Mean.GetDatadogName(), metric.SampleMean, timestamp);
            LogGauge(request, metricName.Name + "." + HistogramMetrics.StdDev.GetDatadogName(), metric.StdDev, timestamp);
            LogGauge(request, metricName.Name + "." + HistogramMetrics.Count.GetDatadogName(), metric.SampleCount, timestamp);

            double[] percentResults = metric.Percentiles(_histogramPercentages);
            LogGauge(request, metricName.Name + "." + HistogramMetrics.At75thPercentile.GetDatadogName(), percentResults[0], timestamp);
            LogGauge(request, metricName.Name + "." + HistogramMetrics.At95thPercentile.GetDatadogName(), percentResults[1], timestamp);
            LogGauge(request, metricName.Name + "." + HistogramMetrics.At98thPercentile.GetDatadogName(), percentResults[2], timestamp);
            LogGauge(request, metricName.Name + "." + HistogramMetrics.At99thPercentile.GetDatadogName(), percentResults[3], timestamp);
            LogGauge(request, metricName.Name + "." + HistogramMetrics.At999thPercentile.GetDatadogName(), percentResults[4], timestamp);

            metric.Clear();
        }
Пример #23
0
        public void can_report_histograms()
        {
            var metricsMock = new Mock <IMetrics>();
            var histogram   = new HistogramMetric(SamplingType.ExponentiallyDecaying, 1028, 0.015);

            histogram.Update(1000, "client1");
            var histogramValueSource = new HistogramValueSource("test histogram",
                                                                ConstantValue.Provider(histogram.Value), Unit.None, MetricTags.None);
            var payloadBuilder = new LineProtocolPayloadBuilder();
            var reporter       = CreateReporter(payloadBuilder);

            reporter.StartReportRun(metricsMock.Object);
            reporter.ReportMetric("test", histogramValueSource);

            payloadBuilder.PayloadFormatted()
            .Should()
            .Be(
                "test__test_histogram samples=1i,last=1000,count.hist=1i,min=1000,max=1000,mean=1000,median=1000,stddev=0,p999=1000,p99=1000,p98=1000,p95=1000,p75=1000,user.last=\"client1\",user.min=\"client1\",user.max=\"client1\"\n");
        }
        public void HistogramPercentages()
        {
            Metrics         metrics         = new Metrics();
            HistogramMetric histogramMetric = metrics.Histogram("test", "HealthMetrics.Test.HistogramMetrics");

            for (int x = 1; x <= 100; x++)
            {
                histogramMetric.Update(x);
            }

            double[] percentials = { 0.75, 0.99, 0.999 };

            double[] results = histogramMetric.Percentiles(percentials);

            Assert.IsNotNull(results);
            Assert.AreEqual(3, results.Length);

            Assert.AreEqual(75, results[0], 1);
            Assert.AreEqual(99, results[1], 1);
            Assert.AreEqual(99, results[2], 1);
        }
Пример #25
0
        public static HistogramData GetHistogramData(this HistogramMetric histogram, double[] percentiles)
        {
            var percentileValues = histogram.Percentiles(percentiles);

            return(new HistogramData
            {
                Counter = histogram.Count,
                Max = histogram.Max,
                Mean = histogram.Mean,
                Min = histogram.Min,
                Stdev = histogram.StdDev,
                Percentiles = new Dictionary <string, double>
                {
                    { string.Format("{0}%", percentiles[0]), percentileValues[0] },
                    { string.Format("{0}%", percentiles[1]), percentileValues[1] },
                    { string.Format("{0}%", percentiles[2]), percentileValues[2] },
                    { string.Format("{0}%", percentiles[3]), percentileValues[3] },
                    { string.Format("{0}%", percentiles[4]), percentileValues[4] },
                    { string.Format("{0}%", percentiles[5]), percentileValues[5] },
                }
            });
        }
Пример #26
0
        private static HistogramData CreateHistogramData(HistogramMetric histogram)
        {
            double[] percentiles = histogram.Percentiles(0.5, 0.75, 0.95, 0.99, 0.999, 0.9999);

            return(new HistogramData
            {
                Counter = histogram.Count,
                Max = histogram.Max,
                Mean = histogram.Mean,
                Min = histogram.Min,
                Stdev = histogram.StdDev,
                Percentiles = new Dictionary <string, double>
                {
                    { "50%", percentiles[0] },
                    { "75%", percentiles[1] },
                    { "95%", percentiles[2] },
                    { "99%", percentiles[3] },
                    { "99.9%", percentiles[4] },
                    { "99.99%", percentiles[5] },
                }
            });
        }
Пример #27
0
        public void SingleHistogramTest()
        {
            var             metrics         = new Metrics();
            string          metricName      = "HistogramrMetric";
            HistogramMetric histogramMetric = metrics.Histogram("test", metricName);

            DataDogReporter reporter = CreateDefaultReporter(metrics);

            TestRequest request = new TestRequest();

            reporter.TransformMetrics(request, metrics, 0);

            IDictionary <string, DatadogSeries> convertedMetrics = request.Metrics;

            Assert.AreEqual(10, convertedMetrics.Count);
            foreach (HistogramMetrics histoName in HistogramMetrics.AllMetrics)
            {
                DatadogSeries metric = convertedMetrics[APP + "." + DOMAIN + "." + metricName + "." + histoName.GetDatadogName()];
                Assert.NotNull(metric);
                Assert.IsTrue(metric is DatadogGauge);
                ValidateDefaultTags(metric.Tags);
            }
        }
Пример #28
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        private void SendData(object pState)
        {
            foreach (string path in vTimerPaths)
            {
                ManualTimerMetric mtm = Metrics.ManualTimer(GetType(), path,
                                                            TimeUnit.Milliseconds, TimeUnit.Milliseconds);
                double[] perc = mtm.Percentiles(0.95, 0.99);

                vGraphite.Send(path + ".timer.mean", mtm.Mean);
                vGraphite.Send(path + ".timer.p95", perc[0]);
                vGraphite.Send(path + ".timer.p99", perc[1]);
                mtm.Clear();
            }

            foreach (string path in vMeanPaths)
            {
                HistogramMetric hm = Metrics.Histogram(GetType(), path);
                vGraphite.Send(path + ".mean", hm.Mean);
                hm.Clear();
            }

            foreach (string path in vCounterPaths)
            {
                CounterMetric cm = Metrics.Counter(GetType(), path);
                vGraphite.Send(path + ".counter", cm.Count);
                cm.Clear();
            }

            foreach (string path in vGaugePaths)
            {
                GaugeMetric <long> gm = Metrics.Gauge <long>(GetType(), path, null);
                vGraphite.Send(path + ".gauge", gm.Value);
            }

            ResetPaths();
        }
 private static IReservoir GetReservoir(HistogramMetric histogram)
 {
     return(ReservoirField.GetValue(histogram) as IReservoir);
 }
Пример #30
0
        public OwinMetricsTestData()
        {
            const int timePerRequest = 100;
            const string json = "{ 'id': '1'} ";

            Clock = new TestClock();
            var scheduler = new TestScheduler(Clock);
            TimerMetric = new TimerMetric(SamplingType.SlidingWindow, new MeterMetric(Clock, scheduler), Clock);
            CounterMetric = new TestCounter();
            HistogramMetric = new HistogramMetric();
            MeterMetric = new MeterMetric(Clock, scheduler);

            var server = TestServer.Create(app =>
            {
                var registery = new TestRegistry
                {
                    TimerInstance = TimerMetric,
                    CounterInstance = CounterMetric,
                    HistogramInstance = HistogramMetric,
                    MeterInstance = MeterMetric
                };

                OwinMetricsConfig owin = new OwinMetricsConfig(middleware => app.Use(middleware), registery, Metric.Config.HealthStatus);
                owin.WithRequestMetricsConfig(c => c.RegisterAllMetrics());

                app.Run(context =>
                {
                    Clock.Advance(TimeUnit.Milliseconds, timePerRequest);
                    if (context.Request.Path.ToString() == "/test/action")
                    {
                        return context.Response.WriteAsync("response");
                    }

                    if (context.Request.Path.ToString() == "/test/error")
                    {
                        context.Response.StatusCode = 500;
                        return context.Response.WriteAsync("response");
                    }

                    if (context.Request.Path.ToString() == "/test/size")
                    {
                        return context.Response.WriteAsync("response");
                    }

                    if (context.Request.Path.ToString() == "/test/post")
                    {
                        return context.Response.WriteAsync("response");
                    }

                    context.Response.StatusCode = 404;
                    return context.Response.WriteAsync("not found");
                });

            });

            ExpectedResults = new OwinExpectedMetrics(timePerRequest, 6, 1);

            server.HttpClient.GetAsync("http://local.test/test/error").Result.StatusCode.Should().Be(HttpStatusCode.InternalServerError);
            server.HttpClient.GetAsync("http://local.test/test/action").Result.StatusCode.Should().Be(HttpStatusCode.OK);
            server.HttpClient.GetAsync("http://local.test/test/action").Result.StatusCode.Should().Be(HttpStatusCode.OK);
            server.HttpClient.GetAsync("http://local.test/test/action").Result.StatusCode.Should().Be(HttpStatusCode.OK);
            server.HttpClient.GetAsync("http://local.test/test/action").Result.StatusCode.Should().Be(HttpStatusCode.OK);
            var postContent = new StringContent(json);
            postContent.Headers.Add("Content-Length", json.Length.ToString());
            server.HttpClient.PostAsync("http://local.test/test/post", postContent);
        }
Пример #31
0
 private static void AppendHistogram(StringBuilder sb, HistogramMetric histogram)
 {
     sb.Append("{");
     AppendDistribution(sb, histogram);
     sb.Append("}");
 }
Пример #32
0
        public void SampleMin_WhenThereAReNoValues_Returns0()
        {
            var underTest = new HistogramMetric(HistogramMetric.SampleType.Uniform);

            Assert.AreEqual(0, underTest.SampleMin);
        }
Пример #33
0
 public CollectionDetails()
 {
     _stats   = new HistogramMetric(HistogramMetric.SampleType.Uniform);
     _topDocs = new SortedList <int, string>(new IntDescComparer());
 }
Пример #34
0
        static void Main(string[] args)
        {
            var options = new Options();

            if (!Parser.Default.ParseArguments(args, options, (t, o) => { target = t; targetOptions = o as CommonOptions; }))
            {
                Console.WriteLine(new CommonOptions().GetUsage());
                Environment.Exit(CommandLine.Parser.DefaultExitCodeFail);
            }

            BenchmarkRunner.DefaultTotalSeconds = targetOptions.Seconds;
            BenchmarkRunner.DefaultMaxThreads   = targetOptions.MaxThreads;

            //Metric.Config.WithHttpEndpoint("http://localhost:1234/");

            switch (target)
            {
            case "noop":
                BenchmarkRunner.Run("Noop", () => { });
                break;

            case "counter":
                var counter = new CounterMetric();
                BenchmarkRunner.Run("Counter", () => counter.Increment());
                break;

            case "meter":
                var meter = new MeterMetric();
                BenchmarkRunner.Run("Meter", () => meter.Mark());
                break;

            case "histogram":
                var histogram = new HistogramMetric();
                BenchmarkRunner.Run("Histogram", () => histogram.Update(137));
                break;

            case "timer":
                var timer = new TimerMetric();
                BenchmarkRunner.Run("Timer", () => timer.Record(1, TimeUnit.Milliseconds));
                break;

            case "hdrtimer":
                var hdrTimer = new TimerMetric(new HdrHistogramReservoir());
                BenchmarkRunner.Run("HDR Timer", () => hdrTimer.Record(1, TimeUnit.Milliseconds));
                break;

            case "ewma":
                var ewma = EWMA.OneMinuteEWMA();
                BenchmarkRunner.Run("EWMA", () => ewma.Update(1));
                break;

            case "edr":
                var edr = new ExponentiallyDecayingReservoir();
                BenchmarkRunner.Run("EDR", () => edr.Update(1));
                break;

            case "hdr":
                var hdrReservoir = new HdrHistogramReservoir();
                BenchmarkRunner.Run("HDR Recorder", () => hdrReservoir.Update(1));
                break;

            case "uniform":
                var uniform = new UniformReservoir();
                BenchmarkRunner.Run("Uniform", () => uniform.Update(1));
                break;

            case "sliding":
                var sliding = new SlidingWindowReservoir();
                BenchmarkRunner.Run("Sliding", () => sliding.Update(1));
                break;

            case "timerimpact":
                var load = new WorkLoad();
                BenchmarkRunner.Run("WorkWithoutTimer", () => load.DoSomeWork(), iterationsChunk: 10);
                BenchmarkRunner.Run("WorkWithTimer", () => load.DoSomeWorkWithATimer(), iterationsChunk: 10);
                break;
            }
        }