public void can_add_histgoram_values()
        {
            var histogramMetric = new DefaultHistogramMetric(_defaultReservoir);

            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");
        }
예제 #2
0
        public void can_report_histograms()
        {
            var expected = StringReporterSamples.Histograms.ExtractStringReporterSampleFromResourceFile();
            var sr       = new StringReporter();
            var metric   = new DefaultHistogramMetric(_defaultReservoir);

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

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

            AssertReportResult(sr.Result, expected);
        }
        public async Task Can_report_histograms_when_multidimensional()
        {
            // Arrange
            var expected  = "test.test_histogram.histogram.value:1000|h";
            var histogram = new DefaultHistogramMetric(_defaultReservoir);

            histogram.Update(1000, "client1");
            var histogramValueSource = new HistogramValueSource(
                "test histogram" + MultidimensionalMetricNameSuffix,
                ConstantValue.Provider(histogram.Value),
                Unit.None,
                _tags);

            // Act
            var valueSource = CreateValueSource("test", histograms: histogramValueSource);

            // Assert
            await AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), expected);
        }
        public async Task Can_report_histograms_when_multidimensional()
        {
            // Arrange
            var expected =
                "{\"series\":[{\"metric\":\"test.test_histogram.histogram.samples\",\"points\":[[1483232461,1]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"unit:none\"]},{\"metric\":\"test.test_histogram.histogram.last\",\"points\":[[1483232461,1000]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"unit:none\"]},{\"metric\":\"test.test_histogram.histogram.count.hist\",\"points\":[[1483232461,1]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"unit:none\"]},{\"metric\":\"test.test_histogram.histogram.sum\",\"points\":[[1483232461,1000]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"unit:none\"]},{\"metric\":\"test.test_histogram.histogram.min\",\"points\":[[1483232461,1000]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"unit:none\"]},{\"metric\":\"test.test_histogram.histogram.max\",\"points\":[[1483232461,1000]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"unit:none\"]},{\"metric\":\"test.test_histogram.histogram.mean\",\"points\":[[1483232461,1000]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"unit:none\"]},{\"metric\":\"test.test_histogram.histogram.median\",\"points\":[[1483232461,1000]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"unit:none\"]},{\"metric\":\"test.test_histogram.histogram.stddev\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"unit:none\"]},{\"metric\":\"test.test_histogram.histogram.p999\",\"points\":[[1483232461,1000]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"unit:none\"]},{\"metric\":\"test.test_histogram.histogram.p99\",\"points\":[[1483232461,1000]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"unit:none\"]},{\"metric\":\"test.test_histogram.histogram.p98\",\"points\":[[1483232461,1000]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"unit:none\"]},{\"metric\":\"test.test_histogram.histogram.p95\",\"points\":[[1483232461,1000]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"unit:none\"]},{\"metric\":\"test.test_histogram.histogram.p75\",\"points\":[[1483232461,1000]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"unit:none\"]},{\"metric\":\"test.test_histogram.histogram.user.last\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"unit:none\"]},{\"metric\":\"test.test_histogram.histogram.user.min\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"unit:none\"]},{\"metric\":\"test.test_histogram.histogram.user.max\",\"points\":[[1483232461,0]],\"type\":\"gauge\",\"tags\":[\"host:server1\",\"env:staging\",\"unit:none\"]}]}";
            var histogram = new DefaultHistogramMetric(_defaultReservoir);

            histogram.Update(1000, "client1");
            var histogramValueSource = new HistogramValueSource(
                "test histogram" + MultidimensionalMetricNameSuffix,
                ConstantValue.Provider(histogram.Value),
                Unit.None,
                _tags);

            // Act
            var valueSource = CreateValueSource("test", histograms: histogramValueSource);

            // Assert
            await AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), FlushInterval, expected);
        }
        public void Can_report_histograms_when_multidimensional()
        {
            // Arrange
            var expected =
                "env.staging.histogram.test.test_histogram.host.server1.Samples 1 1483232461\nenv.staging.histogram.test.test_histogram.host.server1.Last 1000.00 1483232461\nenv.staging.histogram.test.test_histogram.host.server1.Count 1 1483232461\nenv.staging.histogram.test.test_histogram.host.server1.Sum 1000.00 1483232461\nenv.staging.histogram.test.test_histogram.host.server1.Min 1000.00 1483232461\nenv.staging.histogram.test.test_histogram.host.server1.Max 1000.00 1483232461\nenv.staging.histogram.test.test_histogram.host.server1.Mean 1000.00 1483232461\nenv.staging.histogram.test.test_histogram.host.server1.Median 1000.00 1483232461\nenv.staging.histogram.test.test_histogram.host.server1.StdDev 0.00 1483232461\nenv.staging.histogram.test.test_histogram.host.server1.Percentile-999 1000.00 1483232461\nenv.staging.histogram.test.test_histogram.host.server1.Percentile-99 1000.00 1483232461\nenv.staging.histogram.test.test_histogram.host.server1.Percentile-98 1000.00 1483232461\nenv.staging.histogram.test.test_histogram.host.server1.Percentile-95 1000.00 1483232461\nenv.staging.histogram.test.test_histogram.host.server1.Percentile-75 1000.00 1483232461\nenv.staging.histogram.test.test_histogram.host.server1.User-Last client1 1483232461\nenv.staging.histogram.test.test_histogram.host.server1.User-Min client1 1483232461\nenv.staging.histogram.test.test_histogram.host.server1.User-Max client1 1483232461\n";
            var histogram = new DefaultHistogramMetric(_defaultReservoir);

            histogram.Update(1000, "client1");
            var histogramValueSource = new HistogramValueSource(
                "test histogram" + MultidimensionalMetricNameSuffix,
                ConstantValue.Provider(histogram.Value),
                Unit.None,
                _tags);

            // Act
            var valueSource = CreateValueSource("test", histograms: histogramValueSource);

            // Assert
            AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), expected);
        }
        public void Can_report_histograms()
        {
            // Arrange
            var expected =
                "histogram.test.test_histogram.Samples 1 1483232461\nhistogram.test.test_histogram.Last 1000.00 1483232461\nhistogram.test.test_histogram.Count 1 1483232461\nhistogram.test.test_histogram.Sum 1000.00 1483232461\nhistogram.test.test_histogram.Min 1000.00 1483232461\nhistogram.test.test_histogram.Max 1000.00 1483232461\nhistogram.test.test_histogram.Mean 1000.00 1483232461\nhistogram.test.test_histogram.Median 1000.00 1483232461\nhistogram.test.test_histogram.StdDev 0.00 1483232461\nhistogram.test.test_histogram.Percentile-999 1000.00 1483232461\nhistogram.test.test_histogram.Percentile-99 1000.00 1483232461\nhistogram.test.test_histogram.Percentile-98 1000.00 1483232461\nhistogram.test.test_histogram.Percentile-95 1000.00 1483232461\nhistogram.test.test_histogram.Percentile-75 1000.00 1483232461\nhistogram.test.test_histogram.User-Last client1 1483232461\nhistogram.test.test_histogram.User-Min client1 1483232461\nhistogram.test.test_histogram.User-Max client1 1483232461\n";
            var histogram = new DefaultHistogramMetric(_defaultReservoir);

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

            // Act
            var valueSource = CreateValueSource("test", histograms: histogramValueSource);

            // Assert
            AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), expected);
        }
예제 #7
0
        public async Task Can_report_histograms()
        {
            // Arrange
            var expected =
                "test.test_histogram.histogram.value:1000|h|#unit:none,timestamp:1483232461";
            var histogram = new DefaultHistogramMetric(_defaultReservoir);

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

            // Act
            var valueSource = CreateValueSource("test", histograms: histogramValueSource);

            // Assert
            await AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), expected);
        }
        public void Can_report_histograms_when_multidimensional()
        {
            // Arrange
            var expected =
                "test__test_histogram,host=server1,env=staging,mtype=histogram,unit=none samples=1i,last=1000,count.hist=1i,sum=1000,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\" 1483232461000000000\n";
            var histogram = new DefaultHistogramMetric(_defaultReservoir);

            histogram.Update(1000, "client1");
            var histogramValueSource = new HistogramValueSource(
                "test histogram" + MultidimensionalMetricNameSuffix,
                ConstantValue.Provider(histogram.Value),
                Unit.None,
                _tags);

            // Act
            var valueSource = CreateValueSource("test", histograms: histogramValueSource);

            // Assert
            AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), expected);
        }
예제 #9
0
        public async Task Can_report_histograms()
        {
            // Arrange
            var expected =
                "test__test_histogram,mtype=histogram,unit=none samples=1i,last=1000,count.hist=1i,sum=1000,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\" 1483232461000000000\n";
            var histogram = new DefaultHistogramMetric(_defaultReservoir);

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

            // Act
            var valueSource = CreateValueSource("test", histograms: histogramValueSource);

            // Assert
            await AssertExpectedLineProtocolString(new MetricsDataValueSource(_timestamp, new[] { valueSource }), expected);
        }
예제 #10
0
        public void can_report_histograms_when_multidimensional()
        {
            var metricsMock = new Mock <IMetrics>();
            var histogram   = new DefaultHistogramMetric(_defaultReservoir);

            histogram.Update(1000, "client1");
            var histogramValueSource = new HistogramValueSource(
                "test histogram" + MultidimensionalMetricNameSuffix,
                ConstantValue.Provider(histogram.Value),
                Unit.None,
                _tags);
            var items = CreateReporterAndPayloadBuilder();

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

            items.Item2.PayloadFormatted().
            Should().
            Be(
                "test__test_histogram host=server1 env=staging mtype=histogram unit=none samples=1i last=1000 count.hist=1i sum=1000 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\"" + Environment.NewLine);
        }
예제 #11
0
        public void can_report_histograms()
        {
            var metricsMock = new Mock <IMetrics>();
            var histogram   = new DefaultHistogramMetric(_defaultReservoir);

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

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

            payloadBuilder.PayloadFormatted().
            Should().
            Be(
                "test__test_histogram mtype=histogram samples=1i last=1000 count.hist=1i sum=1000 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\"" + Environment.NewLine);
        }
예제 #12
0
        public void can_report_histograms()
        {
            var metricsMock = new Mock <IMetrics>();
            var histogram   = new DefaultHistogramMetric(_defaultReservoir);

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

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

            payloadBuilder.PayloadFormatted(false).
            Should().
            Be(
                "test__test_histogram,mtype=histogram,unit=none samples=1i,last=1000,count.hist=1i,sum=1000,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 can_report_histograms_when_multidimensional()
        {
            var metricsMock = new Mock <IMetrics>();
            var histogram   = new DefaultHistogramMetric(_defaultReservoir);

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

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

            payloadBuilder.PayloadFormatted().
            Should().
            Be(
                "test__test_histogram,host=server1,env=staging 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");
        }
예제 #14
0
        public void can_report_timers()
        {
            var expected  = StringReporterSamples.Timers.ExtractStringReporterSampleFromResourceFile();
            var sr        = new StringReporter();
            var clock     = new TestClock();
            var histogram = new DefaultHistogramMetric(_defaultReservoir);
            var metric    = new DefaultTimerMetric(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);
        }
        public void can_report_histograms_when_multidimensional()
        {
            var metricsMock = new Mock <IMetrics>();
            var histogram   = new DefaultHistogramMetric(_defaultReservoir);

            histogram.Update(1000, "client1");
            var histogramValueSource = new HistogramValueSource(
                "test histogram" + MultidimensionalMetricNameSuffix,
                ConstantValue.Provider(histogram.Value),
                Unit.None,
                _tags);
            var payloadBuilder = new GraphitePayloadBuilder(_settings.GraphiteSettings.MetricNameFormatter, _settings.DataKeys, Origin);

            var reporter = CreateReporter(payloadBuilder);

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

            payloadBuilder.PayloadFormatted().
            Should().
            Be(
                "env.staging.histogram.test.test_histogram.host.server1.Samples 1 0\nenv.staging.histogram.test.test_histogram.host.server1.Last 1000.00 0\nenv.staging.histogram.test.test_histogram.host.server1.Count 1 0\nenv.staging.histogram.test.test_histogram.host.server1.Sum 1000.00 0\nenv.staging.histogram.test.test_histogram.host.server1.Min 1000.00 0\nenv.staging.histogram.test.test_histogram.host.server1.Max 1000.00 0\nenv.staging.histogram.test.test_histogram.host.server1.Mean 1000.00 0\nenv.staging.histogram.test.test_histogram.host.server1.Median 1000.00 0\nenv.staging.histogram.test.test_histogram.host.server1.StdDev 0.00 0\nenv.staging.histogram.test.test_histogram.host.server1.Percentile-999 1000.00 0\nenv.staging.histogram.test.test_histogram.host.server1.Percentile-99 1000.00 0\nenv.staging.histogram.test.test_histogram.host.server1.Percentile-98 1000.00 0\nenv.staging.histogram.test.test_histogram.host.server1.Percentile-95 1000.00 0\nenv.staging.histogram.test.test_histogram.host.server1.Percentile-75 1000.00 0\nenv.staging.histogram.test.test_histogram.host.server1.User-Last client1 0\nenv.staging.histogram.test.test_histogram.host.server1.User-Min client1 0\nenv.staging.histogram.test.test_histogram.host.server1.User-Max client1 0\n");
        }
예제 #16
0
 public HistogramMetricTests()
 {
     _histogram = new DefaultHistogramMetric(new DefaultForwardDecayingReservoir());
 }
예제 #17
0
        public HistogramMetricTests()
        {
            var reservoir = new Lazy <IReservoir>(() => new DefaultForwardDecayingReservoir());

            _histogram = new DefaultHistogramMetric(reservoir);
        }