public async void QueryMetricsAsync_uses_avg_aggregator()
        {
            var metricName = GetUniqueMetricName();

            var time = DateTime.UtcNow.MillisecondsSinceEpoch();

            var dataPoint  = new DataPoint(time, 10L);
            var dataPoint2 = new DataPoint(time + 1, 30L);

            var metric = new Metric(metricName)
                         .AddTag("route_id", "1")
                         .AddDataPoint(dataPoint2)
                         .AddDataPoint(dataPoint);

            await _client.AddMetricsAsync(new[] { metric });

            var queryMetric = new QueryMetric(metricName)
                              .AddAggregator(new AverageAggregator(1, TimeUnit.Minutes));

            var query = new QueryBuilder()
                        .SetStart(TimeSpan.FromSeconds(10))
                        .AddQueryMetric(queryMetric);

            Thread.Sleep(TimeSpan.FromSeconds(2));

            var response = await _client.QueryMetricsAsync(query);

            response.Queries.Should().HaveCount(1);
            response.Queries[0].Results.Should().HaveCount(1);
            response.Queries[0].Results[0].DataPoints.Single().Value.Should().Be(20L);
        }
        public async void QueryMetricsAsync_uses_sum_aggregator()
        {
            var metricName = GetUniqueMetricName();

            var time = DateTime.UtcNow.MillisecondsSinceEpoch();

            var dataPoint = new DataPoint(time, 10L);
            var dataPoint2 = new DataPoint(time + 1, 30L);

            var metric = new Metric(metricName)
                .AddTag("route_id", "1")
                .AddDataPoint(dataPoint2)
                .AddDataPoint(dataPoint);

            await _client.AddMetricsAsync(new[] { metric });

            var queryMetric = new QueryMetric(metricName)
                .AddAggregator(new SumAggregator(1, TimeUnit.Minutes));

            var query = new QueryBuilder()
                .SetStart(TimeSpan.FromSeconds(10))
                .AddQueryMetric(queryMetric);

            Thread.Sleep(TimeSpan.FromSeconds(2));

            var response = await _client.QueryMetricsAsync(query);

            response.Queries.Should().HaveCount(1);
            response.Queries[0].Results.Should().HaveCount(1);
            response.Queries[0].Results[0].DataPoints.Single().Value.Should().Be(40L);
        }
        public async void QueryMetricsAsync_uses_group_by_tag()
        {
            var metricName = GetUniqueMetricName();

            var dataPoint = new DataPoint(DateTime.UtcNow.MillisecondsSinceEpoch(), 10L);

            var metric = new Metric(metricName)
                         .AddTag("route_id", "1")
                         .AddDataPoint(dataPoint);

            var dataPoint2 = new DataPoint(DateTime.UtcNow.MillisecondsSinceEpoch(), 5L);

            var metric2 = new Metric(metricName)
                          .AddTag("route_id", "2")
                          .AddDataPoint(dataPoint2);

            await _client.AddMetricsAsync(new[] { metric, metric2 });

            var queryMetric = new QueryMetric(metricName)
                              .AddGroupBy(new GroupByTag("route_id"));

            var query = new QueryBuilder()
                        .SetStart(TimeSpan.FromSeconds(5))
                        .AddQueryMetric(queryMetric);

            Thread.Sleep(TimeSpan.FromSeconds(2));

            var response = await _client.QueryMetricsAsync(query);

            response.Queries.Single().SampleSize.Should().Be(2);

            response.Queries.Single().Results
            .Should()
            .HaveCount(2)
            .And
            .Contain(result => result.DataPoints.Single().LongValue == 10L)
            .And
            .Contain(result => result.DataPoints.Single().LongValue == 5L);
        }
Esempio n. 4
0
 /// <summary>
 /// Add a metric to query for
 /// </summary>
 /// <param name="metric"></param>
 /// <returns></returns>
 public QueryBuilder AddQueryMetric(QueryMetric metric)
 {
     _queryMetrics.Add(metric);
     return(this);
 }
        public async void QueryMetricsAsync_uses_group_by_tag()
        {
            var metricName = GetUniqueMetricName();

            var dataPoint = new DataPoint(DateTime.UtcNow.MillisecondsSinceEpoch(), 10L);

            var metric = new Metric(metricName)
                .AddTag("route_id", "1")
                .AddDataPoint(dataPoint);

            var dataPoint2 = new DataPoint(DateTime.UtcNow.MillisecondsSinceEpoch(), 5L);

            var metric2 = new Metric(metricName)
                .AddTag("route_id", "2")
                .AddDataPoint(dataPoint2);

            await _client.AddMetricsAsync(new[] {metric, metric2});

            var queryMetric = new QueryMetric(metricName)
                .AddGroupBy(new GroupByTag("route_id"));

            var query = new QueryBuilder()
                .SetStart(TimeSpan.FromSeconds(5))
                .AddQueryMetric(queryMetric);

            Thread.Sleep(TimeSpan.FromSeconds(2));

            var response = await _client.QueryMetricsAsync(query);

            response.Queries.Single().SampleSize.Should().Be(2);

            response.Queries.Single().Results
                .Should()
                .HaveCount(2)
                .And
                .Contain(result => result.DataPoints.Single().LongValue == 10L)
                .And
                .Contain(result => result.DataPoints.Single().LongValue == 5L);
        }