Example usage for org.apache.commons.math3.stat.descriptive.summary Sum Sum

List of usage examples for org.apache.commons.math3.stat.descriptive.summary Sum Sum

Introduction

In this page you can find the example usage for org.apache.commons.math3.stat.descriptive.summary Sum Sum.

Prototype

public Sum() 

Source Link

Document

Create a Sum instance

Usage

From source file:org.hawkular.metrics.core.service.metrics.BaseMetricsITest.java

protected <T extends Number> NumericBucketPoint createSingleBucket(List<? extends DataPoint<T>> combinedData,
        DateTime start, DateTime end) {/*from   www. j a v  a 2s .co m*/
    T expectedMin = combinedData.stream()
            .min((x, y) -> Double.compare(x.getValue().doubleValue(), y.getValue().doubleValue())).get()
            .getValue();
    T expectedMax = combinedData.stream()
            .max((x, y) -> Double.compare(x.getValue().doubleValue(), y.getValue().doubleValue())).get()
            .getValue();
    PercentileWrapper expectedMedian = NumericDataPointCollector.createPercentile.apply(50.0);
    Mean expectedAverage = new Mean();
    Sum expectedSamples = new Sum();
    Sum expectedSum = new Sum();
    combinedData.stream().forEach(arg -> {
        expectedMedian.addValue(arg.getValue().doubleValue());
        expectedAverage.increment(arg.getValue().doubleValue());
        expectedSamples.increment(1);
        expectedSum.increment(arg.getValue().doubleValue());
    });

    return new NumericBucketPoint.Builder(start.getMillis(), end.getMillis()).setMin(expectedMin.doubleValue())
            .setMax(expectedMax.doubleValue()).setAvg(expectedAverage.getResult())
            .setMedian(expectedMedian.getResult()).setSum(expectedSum.getResult())
            .setSamples(new Double(expectedSamples.getResult()).intValue()).build();
}

From source file:org.hawkular.metrics.core.service.metrics.CounterITest.java

@Test
public void findSimpleCounterStats() {
    //Setup the counter data
    NumericDataPointCollector.createPercentile = InMemoryPercentileWrapper::new;

    Random r = new Random(123);
    List<Long> randomList = new ArrayList<>();
    for (int i = 0; i < 100; i++) {
        randomList.add((long) r.nextInt(100));
    }//w ww  .ja v a2 s  . c  o  m
    Collections.sort(randomList);
    Iterator<Long> randoms = randomList.iterator();

    String tenantId = "findCounterStats";
    DateTime start = now().minusMinutes(10);

    Metric<Long> c1 = new Metric<>(new MetricId<>(tenantId, COUNTER, "C1"),
            asList(new DataPoint<>(start.getMillis(), 222L + randoms.next()),
                    new DataPoint<>(start.plusMinutes(1).getMillis(), 224L + randoms.next()),
                    new DataPoint<>(start.plusMinutes(2).getMillis(), 226L + randoms.next()),
                    new DataPoint<>(start.plusMinutes(3).getMillis(), 228L + randoms.next()),
                    new DataPoint<>(start.plusMinutes(4).getMillis(), 229L + randoms.next())));
    doAction(() -> metricsService.addDataPoints(COUNTER, Observable.just(c1)));
    doAction(() -> metricsService.addTags(c1, ImmutableMap.of("type", "counter_cpu_usage", "node", "server1")));

    Metric<Long> c2 = new Metric<>(new MetricId<>(tenantId, COUNTER, "C2"),
            asList(new DataPoint<>(start.getMillis(), 150L),
                    new DataPoint<>(start.plusMinutes(1).getMillis(), 153L + randoms.next()),
                    new DataPoint<>(start.plusMinutes(2).getMillis(), 156L + randoms.next()),
                    new DataPoint<>(start.plusMinutes(3).getMillis(), 159L + randoms.next()),
                    new DataPoint<>(start.plusMinutes(4).getMillis(), 162L + randoms.next())));
    doAction(() -> metricsService.addDataPoints(COUNTER, Observable.just(c2)));
    doAction(() -> metricsService.addTags(c2, ImmutableMap.of("type", "counter_cpu_usage", "node", "server2")));

    Metric<Long> c3 = new Metric<>(new MetricId<>(tenantId, COUNTER, "C3"),
            asList(new DataPoint<>(start.getMillis(), 11456L + randoms.next()),
                    new DataPoint<>(start.plusMinutes(1).getMillis(), 183332L + randoms.next())));
    doAction(() -> metricsService.addDataPoints(COUNTER, Observable.just(c3)));
    doAction(() -> metricsService.addTags(c3, ImmutableMap.of("type", "counter_cpu_usage", "node", "server3")));

    Buckets buckets = Buckets.fromCount(start.getMillis(), start.plusMinutes(5).getMillis(), 1);
    Map<String, String> tagFilters = ImmutableMap.of("type", "counter_cpu_usage", "node", "server1|server2");

    List<DataPoint<Double>> c1Rate = getOnNextEvents(() -> metricsService.findRateData(c1.getMetricId(),
            start.getMillis(), start.plusMinutes(5).getMillis(), 0, Order.ASC));

    List<DataPoint<Double>> c2Rate = getOnNextEvents(() -> metricsService.findRateData(c2.getMetricId(),
            start.getMillis(), start.plusMinutes(5).getMillis(), 0, Order.ASC));

    //Test simple counter stats
    List<List<NumericBucketPoint>> actualCounterStatsByTag = getOnNextEvents(
            () -> metricsService.findNumericStats(tenantId, MetricType.COUNTER, tagFilters, start.getMillis(),
                    start.plusMinutes(5).getMillis(), buckets, emptyList(), false));
    assertEquals(actualCounterStatsByTag.size(), 1);

    List<List<NumericBucketPoint>> actualCounterStatsById = getOnNextEvents(
            () -> metricsService.findNumericStats(tenantId, MetricType.COUNTER, asList("C1", "C2"),
                    start.getMillis(), start.plusMinutes(5).getMillis(), buckets, emptyList(), false));
    assertEquals(actualCounterStatsById.size(), 1);

    List<NumericBucketPoint> expectedCounterStats = Arrays
            .asList(createSingleBucket(Stream.concat(c1.getDataPoints().stream(), c2.getDataPoints().stream())
                    .collect(Collectors.toList()), start, start.plusMinutes(5)));

    assertNumericBucketsEquals(actualCounterStatsByTag.get(0), expectedCounterStats);
    assertNumericBucketsEquals(actualCounterStatsById.get(0), expectedCounterStats);

    //Test stacked counter stats
    List<List<NumericBucketPoint>> actualStackedCounterStatsByTag = getOnNextEvents(
            () -> metricsService.findNumericStats(tenantId, MetricType.COUNTER, tagFilters, start.getMillis(),
                    start.plusMinutes(5).getMillis(), buckets, emptyList(), true));
    assertEquals(actualStackedCounterStatsByTag.size(), 1);

    List<List<NumericBucketPoint>> actualStackedCounterStatsById = getOnNextEvents(
            () -> metricsService.findNumericStats(tenantId, MetricType.COUNTER, asList("C1", "C2"),
                    start.getMillis(), start.plusMinutes(5).getMillis(), buckets, emptyList(), true));
    assertEquals(actualStackedCounterStatsByTag.size(), 1);

    NumericBucketPoint collectorC1 = createSingleBucket(c1.getDataPoints(), start, start.plusMinutes(5));
    NumericBucketPoint collectorC2 = createSingleBucket(c2.getDataPoints(), start, start.plusMinutes(5));

    final Sum min = new Sum();
    final Sum average = new Sum();
    final Sum median = new Sum();
    final Sum max = new Sum();
    final Sum sum = new Sum();
    Observable.just(collectorC1, collectorC2).forEach(d -> {
        min.increment(d.getMin());
        max.increment(d.getMax());
        average.increment(d.getAvg());
        median.increment(d.getMedian());
        sum.increment(d.getSum());
    });
    NumericBucketPoint expectedStackedRateBucketPoint = new NumericBucketPoint.Builder(start.getMillis(),
            start.plusMinutes(5).getMillis()).setMin(min.getResult()).setMax(max.getResult())
                    .setAvg(average.getResult()).setMedian(median.getResult()).setSum(sum.getResult())
                    .setSamples(2).build();
    List<NumericBucketPoint> expectedStackedCounterStatsList = new ArrayList<NumericBucketPoint>();
    expectedStackedCounterStatsList.add(expectedStackedRateBucketPoint);

    assertNumericBucketsEquals(actualStackedCounterStatsByTag.get(0), expectedStackedCounterStatsList);
    assertNumericBucketsEquals(actualStackedCounterStatsById.get(0), expectedStackedCounterStatsList);

    //Test simple counter rate stats
    List<List<NumericBucketPoint>> actualCounterRateStatsByTag = getOnNextEvents(
            () -> metricsService.findNumericStats(tenantId, MetricType.COUNTER_RATE, tagFilters,
                    start.getMillis(), start.plusMinutes(5).getMillis(), buckets, emptyList(), false));
    assertEquals(actualCounterRateStatsByTag.size(), 1);

    List<List<NumericBucketPoint>> actualCounterRateStatsById = getOnNextEvents(
            () -> metricsService.findNumericStats(tenantId, MetricType.COUNTER_RATE, asList("C1", "C2"),
                    start.getMillis(), start.plusMinutes(5).getMillis(), buckets, emptyList(), false));
    assertEquals(actualCounterRateStatsById.size(), 1);

    List<NumericBucketPoint> expectedCounterRateStats = Arrays.asList(
            createSingleBucket(Stream.concat(c1Rate.stream(), c2Rate.stream()).collect(Collectors.toList()),
                    start, start.plusMinutes(5)));

    assertNumericBucketsEquals(actualCounterRateStatsByTag.get(0), expectedCounterRateStats);
    assertNumericBucketsEquals(actualCounterRateStatsById.get(0), expectedCounterRateStats);

    //Test stacked counter rate stats
    List<List<NumericBucketPoint>> actualStackedCounterRateStatsByTag = getOnNextEvents(
            () -> metricsService.findNumericStats(tenantId, MetricType.COUNTER_RATE, tagFilters,
                    start.getMillis(), start.plusMinutes(5).getMillis(), buckets, emptyList(), true));
    assertEquals(actualStackedCounterStatsByTag.size(), 1);

    List<List<NumericBucketPoint>> actualStackedCounterRateStatsById = getOnNextEvents(
            () -> metricsService.findNumericStats(tenantId, MetricType.COUNTER_RATE, asList("C1", "C2"),
                    start.getMillis(), start.plusMinutes(5).getMillis(), buckets, emptyList(), true));
    assertEquals(actualStackedCounterStatsByTag.size(), 1);

    NumericBucketPoint collectorC1Rate = createSingleBucket(c1Rate, start, start.plusMinutes(5));
    NumericBucketPoint collectorC2Rate = createSingleBucket(c2Rate, start, start.plusMinutes(5));

    final Sum counterRateMin = new Sum();
    final Sum counterRateMax = new Sum();
    final Sum counterRateAverage = new Sum();
    final Sum counterRateMedian = new Sum();
    final Sum counterRateSum = new Sum();
    Observable.just(collectorC1Rate, collectorC2Rate).forEach(d -> {
        counterRateMin.increment(d.getMin());
        counterRateMax.increment(d.getMax());
        counterRateAverage.increment(d.getAvg());
        counterRateMedian.increment(d.getMedian());
        counterRateSum.increment(d.getSum());
    });
    NumericBucketPoint expectedStackedCounterRateBucketPoint = new NumericBucketPoint.Builder(start.getMillis(),
            start.plusMinutes(5).getMillis()).setMin(counterRateMin.getResult())
                    .setMax(counterRateMax.getResult()).setAvg(counterRateAverage.getResult())
                    .setMedian(counterRateMedian.getResult()).setSum(counterRateSum.getResult()).setSamples(2)
                    .build();
    List<NumericBucketPoint> expectedStackedCounterRateStatsList = new ArrayList<NumericBucketPoint>();
    expectedStackedCounterRateStatsList.add(expectedStackedCounterRateBucketPoint);

    assertNumericBucketsEquals(actualStackedCounterRateStatsByTag.get(0), expectedStackedCounterRateStatsList);
    assertNumericBucketsEquals(actualStackedCounterRateStatsById.get(0), expectedStackedCounterRateStatsList);
}

From source file:org.hawkular.metrics.core.service.metrics.GaugeITest.java

@Test
public void findStackedGaugeStatsByMetricNames() {
    NumericDataPointCollector.createPercentile = InMemoryPercentileWrapper::new;

    String tenantId = "findGaugeStatsByMetricNames";
    DateTime start = now().minusMinutes(10);

    Metric<Double> m1 = new Metric<>(new MetricId<>(tenantId, GAUGE, "M1"), getDataPointList("M1", start));
    doAction(() -> metricsService.addDataPoints(GAUGE, Observable.just(m1)));

    Metric<Double> m2 = new Metric<>(new MetricId<>(tenantId, GAUGE, "M2"), getDataPointList("M2", start));
    doAction(() -> metricsService.addDataPoints(GAUGE, Observable.just(m2)));

    Metric<Double> m3 = new Metric<>(new MetricId<>(tenantId, GAUGE, "M3"), getDataPointList("M3", start));
    doAction(() -> metricsService.addDataPoints(GAUGE, Observable.just(m3)));

    Buckets buckets = Buckets.fromCount(start.getMillis(), start.plusMinutes(5).getMillis(), 1);

    List<List<NumericBucketPoint>> actual = getOnNextEvents(
            () -> metricsService.findNumericStats(tenantId, MetricType.GAUGE, asList("M1", "M2"),
                    start.getMillis(), start.plusMinutes(5).getMillis(), buckets, emptyList(), true));

    assertEquals(actual.size(), 1);//  ww w. jav  a 2s .  c  om

    NumericBucketPoint collectorM1 = createSingleBucket(m1.getDataPoints(), start, start.plusMinutes(5));
    NumericBucketPoint collectorM2 = createSingleBucket(m2.getDataPoints(), start, start.plusMinutes(5));

    final Sum min = new Sum();
    final Sum average = new Sum();
    final Sum median = new Sum();
    final Sum max = new Sum();
    Observable.just(collectorM1, collectorM2).forEach(d -> {
        min.increment(d.getMin());
        max.increment(d.getMax());
        average.increment(d.getAvg());
        median.increment(d.getMedian());
    });

    assertEquals(actual.get(0).get(0).getMin(), min.getResult());
    assertEquals(actual.get(0).get(0).getMax(), max.getResult());
    assertEquals(actual.get(0).get(0).getMedian(), median.getResult());
    assertEquals(actual.get(0).get(0).getAvg(), average.getResult());
}

From source file:org.hawkular.metrics.core.service.metrics.GaugeITest.java

@Test
public void findStackedGaugeStatsByTags() {
    NumericDataPointCollector.createPercentile = InMemoryPercentileWrapper::new;

    String tenantId = "findGaugeStatsByTags";
    DateTime start = now().minusMinutes(10);

    Metric<Double> m1 = new Metric<>(new MetricId<>(tenantId, GAUGE, "M1"), getDataPointList("M1", start));
    doAction(() -> metricsService.addDataPoints(GAUGE, Observable.just(m1)));
    doAction(() -> metricsService.addTags(m1, ImmutableMap.of("type", "cpu_usage", "node", "server1")));

    Metric<Double> m2 = new Metric<>(new MetricId<>(tenantId, GAUGE, "M2"), getDataPointList("M2", start));
    doAction(() -> metricsService.addDataPoints(GAUGE, Observable.just(m2)));
    doAction(() -> metricsService.addTags(m2, ImmutableMap.of("type", "cpu_usage", "node", "server2")));

    Metric<Double> m3 = new Metric<>(new MetricId<>(tenantId, GAUGE, "M3"), getDataPointList("M3", start));
    doAction(() -> metricsService.addDataPoints(GAUGE, Observable.just(m3)));
    doAction(() -> metricsService.addTags(m3, ImmutableMap.of("type", "cpu_usage", "node", "server3")));

    Buckets buckets = Buckets.fromCount(start.getMillis(), start.plusMinutes(5).getMillis(), 1);
    Map<String, String> tagFilters = ImmutableMap.of("type", "cpu_usage", "node", "server1|server2");

    List<List<NumericBucketPoint>> actual = getOnNextEvents(
            () -> metricsService.findNumericStats(tenantId, MetricType.GAUGE, tagFilters, start.getMillis(),
                    start.plusMinutes(5).getMillis(), buckets, emptyList(), true));

    assertEquals(actual.size(), 1);/*from w w  w .  jav  a2 s .c  om*/

    NumericBucketPoint collectorM1 = createSingleBucket(m1.getDataPoints(), start, start.plusMinutes(5));
    NumericBucketPoint collectorM2 = createSingleBucket(m2.getDataPoints(), start, start.plusMinutes(5));

    final Sum min = new Sum();
    final Sum average = new Sum();
    final Sum median = new Sum();
    final Sum max = new Sum();
    Observable.just(collectorM1, collectorM2).forEach(d -> {
        min.increment(d.getMin());
        max.increment(d.getMax());
        average.increment(d.getAvg());
        median.increment(d.getMedian());
    });

    assertEquals(actual.get(0).get(0).getMin(), min.getResult());
    assertEquals(actual.get(0).get(0).getMax(), max.getResult());
    assertEquals(actual.get(0).get(0).getMedian(), median.getResult());
    assertEquals(actual.get(0).get(0).getAvg(), average.getResult());
}

From source file:org.hawkular.metrics.core.service.MetricsServiceITest.java

@Test
public void findSimpleCounterStats() {
    //Setup the counter data
    NumericDataPointCollector.createPercentile = InMemoryPercentileWrapper::new;

    Random r = new Random(123);
    List<Long> randomList = new ArrayList<>();
    for (int i = 0; i < 100; i++) {
        randomList.add((long) r.nextInt(100));
    }//  www  .j a  v  a  2  s.  c  o  m
    Collections.sort(randomList);
    Iterator<Long> randoms = randomList.iterator();

    String tenantId = "findCounterStats";
    DateTime start = now().minusMinutes(10);

    Metric<Long> c1 = new Metric<>(new MetricId<>(tenantId, COUNTER, "C1"),
            asList(new DataPoint<>(start.getMillis(), 222L + randoms.next()),
                    new DataPoint<>(start.plusMinutes(1).getMillis(), 224L + randoms.next()),
                    new DataPoint<>(start.plusMinutes(2).getMillis(), 226L + randoms.next()),
                    new DataPoint<>(start.plusMinutes(3).getMillis(), 228L + randoms.next()),
                    new DataPoint<>(start.plusMinutes(4).getMillis(), 229L + randoms.next())));
    doAction(() -> metricsService.addDataPoints(COUNTER, Observable.just(c1)));
    doAction(() -> metricsService.addTags(c1, ImmutableMap.of("type", "counter_cpu_usage", "node", "server1")));

    Metric<Long> c2 = new Metric<>(new MetricId<>(tenantId, COUNTER, "C2"),
            asList(new DataPoint<>(start.getMillis(), 150L),
                    new DataPoint<>(start.plusMinutes(1).getMillis(), 153L + randoms.next()),
                    new DataPoint<>(start.plusMinutes(2).getMillis(), 156L + randoms.next()),
                    new DataPoint<>(start.plusMinutes(3).getMillis(), 159L + randoms.next()),
                    new DataPoint<>(start.plusMinutes(4).getMillis(), 162L + randoms.next())));
    doAction(() -> metricsService.addDataPoints(COUNTER, Observable.just(c2)));
    doAction(() -> metricsService.addTags(c2, ImmutableMap.of("type", "counter_cpu_usage", "node", "server2")));

    Metric<Long> c3 = new Metric<>(new MetricId<>(tenantId, COUNTER, "C3"),
            asList(new DataPoint<>(start.getMillis(), 11456L + randoms.next()),
                    new DataPoint<>(start.plusMinutes(1).getMillis(), 183332L + randoms.next())));
    doAction(() -> metricsService.addDataPoints(COUNTER, Observable.just(c3)));
    doAction(() -> metricsService.addTags(c3, ImmutableMap.of("type", "counter_cpu_usage", "node", "server3")));

    Buckets buckets = Buckets.fromCount(start.getMillis(), start.plusMinutes(5).getMillis(), 1);
    Map<String, String> tagFilters = ImmutableMap.of("type", "counter_cpu_usage", "node", "server1|server2");

    List<DataPoint<Double>> c1Rate = getOnNextEvents(() -> metricsService.findRateData(c1.getMetricId(),
            start.getMillis(), start.plusMinutes(5).getMillis()));

    List<DataPoint<Double>> c2Rate = getOnNextEvents(() -> metricsService.findRateData(c2.getMetricId(),
            start.getMillis(), start.plusMinutes(5).getMillis()));

    //Test simple counter stats
    List<List<NumericBucketPoint>> actualCounterStatsByTag = getOnNextEvents(
            () -> metricsService.findNumericStats(tenantId, MetricType.COUNTER, tagFilters, start.getMillis(),
                    start.plusMinutes(5).getMillis(), buckets, Collections.emptyList(), false));
    assertEquals(actualCounterStatsByTag.size(), 1);

    List<List<NumericBucketPoint>> actualCounterStatsById = getOnNextEvents(
            () -> metricsService.findNumericStats(tenantId, MetricType.COUNTER, asList("C1", "C2"),
                    start.getMillis(), start.plusMinutes(5).getMillis(), buckets, Collections.emptyList(),
                    false));
    assertEquals(actualCounterStatsById.size(), 1);

    List<NumericBucketPoint> expectedCounterStats = Arrays
            .asList(createSingleBucket(Stream.concat(c1.getDataPoints().stream(), c2.getDataPoints().stream())
                    .collect(Collectors.toList()), start, start.plusMinutes(5)));

    assertNumericBucketsEquals(actualCounterStatsByTag.get(0), expectedCounterStats);
    assertNumericBucketsEquals(actualCounterStatsById.get(0), expectedCounterStats);

    //Test stacked counter stats
    List<List<NumericBucketPoint>> actualStackedCounterStatsByTag = getOnNextEvents(
            () -> metricsService.findNumericStats(tenantId, MetricType.COUNTER, tagFilters, start.getMillis(),
                    start.plusMinutes(5).getMillis(), buckets, Collections.emptyList(), true));
    assertEquals(actualStackedCounterStatsByTag.size(), 1);

    List<List<NumericBucketPoint>> actualStackedCounterStatsById = getOnNextEvents(
            () -> metricsService.findNumericStats(tenantId, MetricType.COUNTER, asList("C1", "C2"),
                    start.getMillis(), start.plusMinutes(5).getMillis(), buckets, Collections.emptyList(),
                    true));
    assertEquals(actualStackedCounterStatsByTag.size(), 1);

    NumericBucketPoint collectorC1 = createSingleBucket(c1.getDataPoints(), start, start.plusMinutes(5));
    NumericBucketPoint collectorC2 = createSingleBucket(c2.getDataPoints(), start, start.plusMinutes(5));

    final Sum min = new Sum();
    final Sum average = new Sum();
    final Sum median = new Sum();
    final Sum max = new Sum();
    Observable.just(collectorC1, collectorC2).forEach(d -> {
        min.increment(d.getMin());
        max.increment(d.getMax());
        average.increment(d.getAvg());
        median.increment(d.getMedian());
    });
    NumericBucketPoint expectedStackedRateBucketPoint = new NumericBucketPoint.Builder(start.getMillis(),
            start.plusMinutes(5).getMillis()).setMin(min.getResult()).setMax(max.getResult())
                    .setAvg(average.getResult()).setMedian(median.getResult()).setSamples(2).build();
    List<NumericBucketPoint> expectedStackedCounterStatsList = new ArrayList<NumericBucketPoint>();
    expectedStackedCounterStatsList.add(expectedStackedRateBucketPoint);

    assertNumericBucketsEquals(actualStackedCounterStatsByTag.get(0), expectedStackedCounterStatsList);
    assertNumericBucketsEquals(actualStackedCounterStatsById.get(0), expectedStackedCounterStatsList);

    //Test simple counter rate stats
    List<List<NumericBucketPoint>> actualCounterRateStatsByTag = getOnNextEvents(
            () -> metricsService.findNumericStats(tenantId, MetricType.COUNTER_RATE, tagFilters,
                    start.getMillis(), start.plusMinutes(5).getMillis(), buckets, Collections.emptyList(),
                    false));
    assertEquals(actualCounterRateStatsByTag.size(), 1);

    List<List<NumericBucketPoint>> actualCounterRateStatsById = getOnNextEvents(
            () -> metricsService.findNumericStats(tenantId, MetricType.COUNTER_RATE, asList("C1", "C2"),
                    start.getMillis(), start.plusMinutes(5).getMillis(), buckets, Collections.emptyList(),
                    false));
    assertEquals(actualCounterRateStatsById.size(), 1);

    List<NumericBucketPoint> expectedCounterRateStats = Arrays.asList(
            createSingleBucket(Stream.concat(c1Rate.stream(), c2Rate.stream()).collect(Collectors.toList()),
                    start, start.plusMinutes(5)));

    assertNumericBucketsEquals(actualCounterRateStatsByTag.get(0), expectedCounterRateStats);
    assertNumericBucketsEquals(actualCounterRateStatsById.get(0), expectedCounterRateStats);

    //Test stacked counter rate stats
    List<List<NumericBucketPoint>> actualStackedCounterRateStatsByTag = getOnNextEvents(
            () -> metricsService.findNumericStats(tenantId, MetricType.COUNTER_RATE, tagFilters,
                    start.getMillis(), start.plusMinutes(5).getMillis(), buckets, Collections.emptyList(),
                    true));
    assertEquals(actualStackedCounterStatsByTag.size(), 1);

    List<List<NumericBucketPoint>> actualStackedCounterRateStatsById = getOnNextEvents(
            () -> metricsService.findNumericStats(tenantId, MetricType.COUNTER_RATE, asList("C1", "C2"),
                    start.getMillis(), start.plusMinutes(5).getMillis(), buckets, Collections.emptyList(),
                    true));
    assertEquals(actualStackedCounterStatsByTag.size(), 1);

    NumericBucketPoint collectorC1Rate = createSingleBucket(c1Rate, start, start.plusMinutes(5));
    NumericBucketPoint collectorC2Rate = createSingleBucket(c2Rate, start, start.plusMinutes(5));

    final Sum counterRateMin = new Sum();
    final Sum counterRateMax = new Sum();
    final Sum counterRateAverage = new Sum();
    final Sum counterRateMedian = new Sum();
    Observable.just(collectorC1Rate, collectorC2Rate).forEach(d -> {
        counterRateMin.increment(d.getMin());
        counterRateMax.increment(d.getMax());
        counterRateAverage.increment(d.getAvg());
        counterRateMedian.increment(d.getMedian());
    });
    NumericBucketPoint expectedStackedCounterRateBucketPoint = new NumericBucketPoint.Builder(start.getMillis(),
            start.plusMinutes(5).getMillis()).setMin(counterRateMin.getResult())
                    .setMax(counterRateMax.getResult()).setAvg(counterRateAverage.getResult())
                    .setMedian(counterRateMedian.getResult()).setSamples(2).build();
    List<NumericBucketPoint> expectedStackedCounterRateStatsList = new ArrayList<NumericBucketPoint>();
    expectedStackedCounterRateStatsList.add(expectedStackedCounterRateBucketPoint);

    assertNumericBucketsEquals(actualStackedCounterRateStatsByTag.get(0), expectedStackedCounterRateStatsList);
    assertNumericBucketsEquals(actualStackedCounterRateStatsById.get(0), expectedStackedCounterRateStatsList);
}

From source file:org.hawkular.metrics.core.service.MetricsServiceITest.java

private <T extends Number> NumericBucketPoint createSingleBucket(List<? extends DataPoint<T>> combinedData,
        DateTime start, DateTime end) {/*from  w w  w .j a v  a 2 s.  c o m*/
    T expectedMin = combinedData.stream()
            .min((x, y) -> Double.compare(x.getValue().doubleValue(), y.getValue().doubleValue())).get()
            .getValue();
    T expectedMax = combinedData.stream()
            .max((x, y) -> Double.compare(x.getValue().doubleValue(), y.getValue().doubleValue())).get()
            .getValue();
    PercentileWrapper expectedMedian = NumericDataPointCollector.createPercentile.apply(50.0);
    Mean expectedAverage = new Mean();
    Sum expectedSamples = new Sum();
    combinedData.stream().forEach(arg -> {
        expectedMedian.addValue(arg.getValue().doubleValue());
        expectedAverage.increment(arg.getValue().doubleValue());
        expectedSamples.increment(1);
    });

    return new NumericBucketPoint.Builder(start.getMillis(), end.getMillis()).setMin(expectedMin.doubleValue())
            .setMax(expectedMax.doubleValue()).setAvg(expectedAverage.getResult())
            .setMedian(expectedMedian.getResult())
            .setSamples(new Double(expectedSamples.getResult()).intValue()).build();
}

From source file:org.hawkular.metrics.core.service.MetricsServiceITest.java

@Test
public void findStackedGaugeStatsByTags() {
    NumericDataPointCollector.createPercentile = InMemoryPercentileWrapper::new;

    String tenantId = "findGaugeStatsByTags";
    DateTime start = now().minusMinutes(10);

    Metric<Double> m1 = new Metric<>(new MetricId<>(tenantId, GAUGE, "M1"), getDataPointList("M1", start));
    doAction(() -> metricsService.addDataPoints(GAUGE, Observable.just(m1)));
    doAction(() -> metricsService.addTags(m1, ImmutableMap.of("type", "cpu_usage", "node", "server1")));

    Metric<Double> m2 = new Metric<>(new MetricId<>(tenantId, GAUGE, "M2"), getDataPointList("M2", start));
    doAction(() -> metricsService.addDataPoints(GAUGE, Observable.just(m2)));
    doAction(() -> metricsService.addTags(m2, ImmutableMap.of("type", "cpu_usage", "node", "server2")));

    Metric<Double> m3 = new Metric<>(new MetricId<>(tenantId, GAUGE, "M3"), getDataPointList("M3", start));
    doAction(() -> metricsService.addDataPoints(GAUGE, Observable.just(m3)));
    doAction(() -> metricsService.addTags(m3, ImmutableMap.of("type", "cpu_usage", "node", "server3")));

    Buckets buckets = Buckets.fromCount(start.getMillis(), start.plusMinutes(5).getMillis(), 1);
    Map<String, String> tagFilters = ImmutableMap.of("type", "cpu_usage", "node", "server1|server2");

    List<List<NumericBucketPoint>> actual = getOnNextEvents(
            () -> metricsService.findNumericStats(tenantId, MetricType.GAUGE, tagFilters, start.getMillis(),
                    start.plusMinutes(5).getMillis(), buckets, Collections.emptyList(), true));

    assertEquals(actual.size(), 1);//ww  w .  j  av  a  2s  .c o  m

    NumericBucketPoint collectorM1 = createSingleBucket(m1.getDataPoints(), start, start.plusMinutes(5));
    NumericBucketPoint collectorM2 = createSingleBucket(m2.getDataPoints(), start, start.plusMinutes(5));

    final Sum min = new Sum();
    final Sum average = new Sum();
    final Sum median = new Sum();
    final Sum max = new Sum();
    Observable.just(collectorM1, collectorM2).forEach(d -> {
        min.increment(d.getMin());
        max.increment(d.getMax());
        average.increment(d.getAvg());
        median.increment(d.getMedian());
    });

    assertEquals(actual.get(0).get(0).getMin(), min.getResult());
    assertEquals(actual.get(0).get(0).getMax(), max.getResult());
    assertEquals(actual.get(0).get(0).getMedian(), median.getResult());
    assertEquals(actual.get(0).get(0).getAvg(), average.getResult());
}

From source file:org.hawkular.metrics.core.service.MetricsServiceITest.java

@Test
public void findStackedGaugeStatsByMetricNames() {
    NumericDataPointCollector.createPercentile = InMemoryPercentileWrapper::new;

    String tenantId = "findGaugeStatsByMetricNames";
    DateTime start = now().minusMinutes(10);

    Metric<Double> m1 = new Metric<>(new MetricId<>(tenantId, GAUGE, "M1"), getDataPointList("M1", start));
    doAction(() -> metricsService.addDataPoints(GAUGE, Observable.just(m1)));

    Metric<Double> m2 = new Metric<>(new MetricId<>(tenantId, GAUGE, "M2"), getDataPointList("M2", start));
    doAction(() -> metricsService.addDataPoints(GAUGE, Observable.just(m2)));

    Metric<Double> m3 = new Metric<>(new MetricId<>(tenantId, GAUGE, "M3"), getDataPointList("M3", start));
    doAction(() -> metricsService.addDataPoints(GAUGE, Observable.just(m3)));

    Buckets buckets = Buckets.fromCount(start.getMillis(), start.plusMinutes(5).getMillis(), 1);

    List<List<NumericBucketPoint>> actual = getOnNextEvents(() -> metricsService.findNumericStats(tenantId,
            MetricType.GAUGE, asList("M1", "M2"), start.getMillis(), start.plusMinutes(5).getMillis(), buckets,
            Collections.emptyList(), true));

    assertEquals(actual.size(), 1);//from ww w . j  ava2 s  . co m

    NumericBucketPoint collectorM1 = createSingleBucket(m1.getDataPoints(), start, start.plusMinutes(5));
    NumericBucketPoint collectorM2 = createSingleBucket(m2.getDataPoints(), start, start.plusMinutes(5));

    final Sum min = new Sum();
    final Sum average = new Sum();
    final Sum median = new Sum();
    final Sum max = new Sum();
    Observable.just(collectorM1, collectorM2).forEach(d -> {
        min.increment(d.getMin());
        max.increment(d.getMax());
        average.increment(d.getAvg());
        median.increment(d.getMedian());
    });

    assertEquals(actual.get(0).get(0).getMin(), min.getResult());
    assertEquals(actual.get(0).get(0).getMax(), max.getResult());
    assertEquals(actual.get(0).get(0).getMedian(), median.getResult());
    assertEquals(actual.get(0).get(0).getAvg(), average.getResult());
}