package org.kairosdb.client.builder; import org.junit.Test; import org.kairosdb.client.builder.aggregator.CustomAggregator; import org.kairosdb.client.builder.aggregator.PercentileAggregator; import org.kairosdb.client.builder.aggregator.RateAggregator; import org.kairosdb.client.builder.aggregator.SamplingAggregator; import static org.hamcrest.Matchers.equalTo; import static org.junit.Assert.assertThat; public class AggregatorFactoryTest { @Test(expected = IllegalArgumentException.class) public void test_createDivAggregator_zero_divisor_invalid() { AggregatorFactory.createDivAggregator(0); } @Test public void test_createMinAggregator() { SamplingAggregator minAggregator = AggregatorFactory.createMinAggregator(1, TimeUnit.MINUTES); assertThat(minAggregator.getName(), equalTo("min")); assertThat(minAggregator.getValue(), equalTo(1)); assertThat(minAggregator.getUnit(), equalTo(TimeUnit.MINUTES)); } @Test public void test_createMaxAggregator() { SamplingAggregator minAggregator = AggregatorFactory.createMaxAggregator(1, TimeUnit.MINUTES); assertThat(minAggregator.getName(), equalTo("max")); assertThat(minAggregator.getValue(), equalTo(1)); assertThat(minAggregator.getUnit(), equalTo(TimeUnit.MINUTES)); } @Test public void test_createAverageAggregator() { SamplingAggregator aggregator = AggregatorFactory.createAverageAggregator(2, TimeUnit.YEARS); assertThat(aggregator.getName(), equalTo("avg")); assertThat(aggregator.getValue(), equalTo(2)); assertThat(aggregator.getUnit(), equalTo(TimeUnit.YEARS)); } @Test public void test_createStandardDeviationAggregator() { SamplingAggregator aggregator = AggregatorFactory.createStandardDeviationAggregator(3, TimeUnit.DAYS); assertThat(aggregator.getName(), equalTo("dev")); assertThat(aggregator.getValue(), equalTo(3)); assertThat(aggregator.getUnit(), equalTo(TimeUnit.DAYS)); } @Test public void test_createSumAggregator() { SamplingAggregator aggregator = AggregatorFactory.createSumAggregator(3, TimeUnit.DAYS); assertThat(aggregator.getName(), equalTo("sum")); assertThat(aggregator.getValue(), equalTo(3)); assertThat(aggregator.getUnit(), equalTo(TimeUnit.DAYS)); } @Test public void test_createCountAggregator() { SamplingAggregator aggregator = AggregatorFactory.createCountAggregator(3, TimeUnit.DAYS); assertThat(aggregator.getName(), equalTo("count")); assertThat(aggregator.getValue(), equalTo(3)); assertThat(aggregator.getUnit(), equalTo(TimeUnit.DAYS)); } @Test public void test_createPercentileAggregator() { PercentileAggregator aggregator = AggregatorFactory.createPercentileAggregator(0.5, 3, TimeUnit.DAYS); assertThat(aggregator.getName(), equalTo("percentile")); assertThat(aggregator.getPercentile(),equalTo(0.5)); assertThat(aggregator.getValue(), equalTo(3)); assertThat(aggregator.getUnit(), equalTo(TimeUnit.DAYS)); } @Test public void test_createRateAggregator() { RateAggregator aggregator = AggregatorFactory.createRateAggregator(TimeUnit.DAYS); assertThat(aggregator.getName(), equalTo("rate")); assertThat(aggregator.getUnit(), equalTo(TimeUnit.DAYS)); } @Test public void test_createCustomAggregator() { CustomAggregator aggregator = AggregatorFactory.createCustomAggregator("foobar", "\"foo\": 10"); assertThat(aggregator.getName(), equalTo("foobar")); assertThat(aggregator.toJson(), equalTo("{\"name\":\"foobar\",\"foo\": 10}")); } @Test public void test_createDivAggregator() { CustomAggregator aggregator = AggregatorFactory.createDivAggregator(60); assertThat(aggregator.getName(), equalTo("div")); assertThat(aggregator.toJson(), equalTo("{\"name\":\"div\",\"divisor\":60.0}")); } @Test public void test_createLastAggregator() { SamplingAggregator aggregator = AggregatorFactory.createLastAggregator(3, TimeUnit.DAYS); assertThat(aggregator.getName(), equalTo("last")); assertThat(aggregator.getValue(), equalTo(3)); assertThat(aggregator.getUnit(), equalTo(TimeUnit.DAYS)); } @Test public void test_createLeastSquaresAggregator() { SamplingAggregator aggregator = AggregatorFactory.createLeastSquaresAggregator(3, TimeUnit.DAYS); assertThat(aggregator.getName(), equalTo("least_squares")); assertThat(aggregator.getValue(), equalTo(3)); assertThat(aggregator.getUnit(), equalTo(TimeUnit.DAYS)); } @Test public void test_createDiffAggregator() { Aggregator aggregator = AggregatorFactory.createDiffAggregator(); assertThat(aggregator.getName(), equalTo("diff")); } @Test public void test_createSamplerAggregator() { Aggregator aggregator = AggregatorFactory.createSamplerAggregator(); assertThat(aggregator.getName(), equalTo("sampler")); } @Test public void test_createScaleAggregator() { CustomAggregator aggregator = AggregatorFactory.createScaleAggregator(0.5); assertThat(aggregator.getName(), equalTo("scale")); assertThat(aggregator.toJson(), equalTo("{\"name\":\"scale\",\"factor\":0.5}")); } @Test (expected = NullPointerException.class) public void test_createSaveAsAggregator_null_metricName_invalid() { AggregatorFactory.createSaveAsAggregator(null); } @Test (expected = IllegalArgumentException.class) public void test_createSaveAsAggregator_empty_metricName_invalid() { AggregatorFactory.createSaveAsAggregator(""); } @Test public void test_createSaveAsAggregator() { CustomAggregator aggregator = AggregatorFactory.createSaveAsAggregator("newMetric"); assertThat(aggregator.getName(), equalTo("save_as")); assertThat(aggregator.toJson(), equalTo("{\"name\":\"save_as\",\"metric_name\":\"newMetric\"}")); } @Test (expected = NullPointerException.class) public void test_createTrimAggregator_null_trim_invalid() { AggregatorFactory.createTrimAggregator(null); } @Test public void test_createTrimAggregator() { CustomAggregator aggregator = AggregatorFactory.createTrimAggregator(AggregatorFactory.Trim.BOTH); assertThat(aggregator.getName(), equalTo("trim")); assertThat(aggregator.toJson(), equalTo("{\"name\":\"trim\",\"trim\":\"both\"}")); } @Test public void test_createSimpleMovingAggregator() { CustomAggregator aggregator = AggregatorFactory.createSimpleMovingAverage(5); assertThat(aggregator.getName(), equalTo("sma")); assertThat(aggregator.toJson(), equalTo("{\"name\":\"sma\",'size':5}")); } }