public void Min_WhenPassed8And9_Returns9()
        {
            var underTest = new HistogramMetric(HistogramMetric.SampleType.Uniform);

            underTest.Update(9);
            underTest.Update(8);
            Assert.AreEqual(8, underTest.Min);
        }
Example #2
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);
 }
        public void SampleMean_UsesSample()
        {
            var underTest = new HistogramMetric(new RejectEverythingAboveTenSample());

            underTest.Update(5);
            underTest.Update(12);
            Assert.AreEqual(5, underTest.SampleMin);
        }
        public void SampleMean_WhenPassed8And9_Returns8Point5()
        {
            var underTest = new HistogramMetric(HistogramMetric.SampleType.Uniform);

            underTest.Update(9);
            underTest.Update(8);
            Assert.AreEqual(8.5, underTest.SampleMean);
        }
        public void SampleCount_WhenPassed8And9_Returns2()
        {
            var underTest = new HistogramMetric(HistogramMetric.SampleType.Uniform);

            underTest.Update(9);
            underTest.Update(8);
            Assert.AreEqual(2, underTest.SampleCount);
        }
Example #6
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);
        }
Example #7
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);
        }
Example #8
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;
            }
        }
Example #9
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");
        }
Example #10
0
 public void can_count()
 {
     _histogram.Update(1L);
     _histogram.Value.Count.Should().Be(1);
     _histogram.Update(1L);
     _histogram.Value.Count.Should().Be(2);
 }
 public void HistogramMetric_CanCount()
 {
     histogram.Update(1L);
     histogram.Value.Count.Should().Be(1);
     histogram.Update(1L);
     histogram.Value.Count.Should().Be(2);
 }
Example #12
0
 public void Update(int documentSize, string docId)
 {
     TotalSize += documentSize;
     _stats.Update(documentSize);
     _topDocs[documentSize] = docId;
     if (_topDocs.Count > TopDocsLimit)
     {
         _topDocs.RemoveAt(TopDocsLimit);
     }
 }
Example #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 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);
        }
Example #16
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;
            }
        }