/*******************************************************************************
* Copyright (c) 2005, 2014 springside.github.io
*
* Licensed under the Apache License, Version 2.0 (the "License");
*******************************************************************************/
package org.springside.modules.metrics;
import static org.assertj.core.api.Assertions.*;
import org.junit.Test;
public class HistogramTest {
@Test
public void normal() {
Histogram histogram = new Histogram(90d, 95d);
for (int i = 1; i <= 100; i++) {
histogram.update(i);
}
HistogramMetric metric = histogram.calculateMetric();
assertThat(metric.min).isEqualTo(1);
assertThat(metric.max).isEqualTo(100);
assertThat(metric.mean).isEqualTo(50.5);
assertThat(metric.pcts.get(90d)).isEqualTo(90);
assertThat(metric.pcts.get(95d)).isEqualTo(95);
for (int i = 1; i <= 100; i++) {
histogram.update(i * 2);
}
metric = histogram.calculateMetric();
assertThat(metric.min).isEqualTo(2);
assertThat(metric.max).isEqualTo(200);
assertThat(metric.mean).isEqualTo(101);
assertThat(metric.pcts.get(90d)).isEqualTo(180);
assertThat(metric.pcts.get(95d)).isEqualTo(190);
}
@Test
public void fewData() {
Histogram histogram = new Histogram(90d, 95d);
histogram.update(1);
HistogramMetric metric = histogram.calculateMetric();
assertThat(metric.pcts.get(90d)).isEqualTo(1);
assertThat(metric.pcts.get(95d)).isEqualTo(1);
for (int i = 1; i <= 3; i++) {
histogram.update(i);
}
metric = histogram.calculateMetric();
assertThat(metric.min).isEqualTo(1);
assertThat(metric.max).isEqualTo(3);
assertThat(metric.mean).isEqualTo(2);
assertThat(metric.pcts.get(90d)).isEqualTo(3);
assertThat(metric.pcts.get(95d)).isEqualTo(3);
}
@Test
public void emptyMesures() {
Histogram histogram = new Histogram(90d, 95d);
HistogramMetric metric = histogram.calculateMetric();
assertThat(metric.min).isZero();
assertThat(metric.max).isZero();
assertThat(metric.mean).isZero();
assertThat(metric.pcts.get(90d)).isZero();
}
@Test()
public void emptyPcts() {
Histogram histogram = new Histogram();
for (int i = 1; i <= 3; i++) {
histogram.update(i);
}
HistogramMetric metric = histogram.calculateMetric();
assertThat(metric.max).isEqualTo(3);
assertThat(metric.pcts).isEmpty();
assertThat(metric.pcts.get(90d)).isNull();
}
}