mirror of https://github.com/apache/druid.git
additional UTs for [DoubleMax/DoubleMin] aggregation
This commit is contained in:
parent
d0ec945129
commit
cebb550796
|
@ -0,0 +1,133 @@
|
|||
/*
|
||||
* Licensed to Metamarkets Group Inc. (Metamarkets) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. Metamarkets licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package io.druid.query.aggregation;
|
||||
|
||||
import com.google.common.primitives.Doubles;
|
||||
import io.druid.jackson.DefaultObjectMapper;
|
||||
import io.druid.segment.ColumnSelectorFactory;
|
||||
import org.easymock.EasyMock;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class DoubleMaxAggregationTest
|
||||
{
|
||||
private DoubleMaxAggregatorFactory doubleMaxAggFactory;
|
||||
private ColumnSelectorFactory colSelectorFactory;
|
||||
private TestFloatColumnSelector selector;
|
||||
|
||||
private float[] values = {1.1f, 2.7f, 3.5f, 1.3f};
|
||||
|
||||
public DoubleMaxAggregationTest() throws Exception
|
||||
{
|
||||
String aggSpecJson = "{\"type\": \"doubleMax\", \"name\": \"billy\", \"fieldName\": \"nilly\"}";
|
||||
doubleMaxAggFactory = new DefaultObjectMapper().readValue(aggSpecJson , DoubleMaxAggregatorFactory.class);
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setup()
|
||||
{
|
||||
selector = new TestFloatColumnSelector(values);
|
||||
colSelectorFactory = EasyMock.createMock(ColumnSelectorFactory.class);
|
||||
EasyMock.expect(colSelectorFactory.makeFloatColumnSelector("nilly")).andReturn(selector);
|
||||
EasyMock.replay(colSelectorFactory);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDoubleMaxAggregator()
|
||||
{
|
||||
DoubleMaxAggregator agg = (DoubleMaxAggregator) doubleMaxAggFactory.factorize(colSelectorFactory);
|
||||
|
||||
Assert.assertEquals("billy", agg.getName());
|
||||
|
||||
aggregate(selector, agg);
|
||||
aggregate(selector, agg);
|
||||
aggregate(selector, agg);
|
||||
aggregate(selector, agg);
|
||||
|
||||
Assert.assertEquals(values[2], ((Double) agg.get()).doubleValue(), 0.0001);
|
||||
Assert.assertEquals((long)values[2], agg.getLong());
|
||||
Assert.assertEquals(values[2], agg.getFloat(), 0.0001);
|
||||
|
||||
agg.reset();
|
||||
Assert.assertEquals(Double.NEGATIVE_INFINITY, (Double) agg.get(), 0.0001);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDoubleMaxBufferAggregator()
|
||||
{
|
||||
DoubleMaxBufferAggregator agg = (DoubleMaxBufferAggregator) doubleMaxAggFactory.factorizeBuffered(colSelectorFactory);
|
||||
|
||||
ByteBuffer buffer = ByteBuffer.wrap(new byte[Doubles.BYTES]);
|
||||
agg.init(buffer, 0);
|
||||
|
||||
aggregate(selector, agg, buffer, 0);
|
||||
aggregate(selector, agg, buffer, 0);
|
||||
aggregate(selector, agg, buffer, 0);
|
||||
aggregate(selector, agg, buffer, 0);
|
||||
|
||||
Assert.assertEquals(values[2], ((Double) agg.get(buffer, 0)).doubleValue(), 0.0001);
|
||||
Assert.assertEquals((long) values[2], agg.getLong(buffer, 0));
|
||||
Assert.assertEquals(values[2], agg.getFloat(buffer, 0), 0.0001);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCombine()
|
||||
{
|
||||
Assert.assertEquals(3.4d, ((Double) doubleMaxAggFactory.combine(1.2, 3.4)).doubleValue(), 0.0001);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEqualsAndHashCode() throws Exception
|
||||
{
|
||||
DoubleMaxAggregatorFactory one = new DoubleMaxAggregatorFactory("name1", "fieldName1");
|
||||
DoubleMaxAggregatorFactory oneMore = new DoubleMaxAggregatorFactory("name1", "fieldName1");
|
||||
DoubleMaxAggregatorFactory two = new DoubleMaxAggregatorFactory("name2", "fieldName2");
|
||||
|
||||
Assert.assertEquals(one.hashCode(), oneMore.hashCode());
|
||||
|
||||
Assert.assertTrue(one.equals(oneMore));
|
||||
Assert.assertFalse(one.equals(two));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMaxDeserialization() throws Exception
|
||||
{
|
||||
String aggSpecJson = "{\"type\": \"max\", \"name\": \"billy\", \"fieldName\": \"nilly\"}";
|
||||
MaxAggregatorFactory agg = new DefaultObjectMapper().readValue(aggSpecJson , MaxAggregatorFactory.class);
|
||||
Assert.assertNotNull(agg);
|
||||
}
|
||||
|
||||
private void aggregate(TestFloatColumnSelector selector, DoubleMaxAggregator agg)
|
||||
{
|
||||
agg.aggregate();
|
||||
selector.increment();
|
||||
}
|
||||
|
||||
private void aggregate(TestFloatColumnSelector selector, DoubleMaxBufferAggregator agg, ByteBuffer buff, int position)
|
||||
{
|
||||
agg.aggregate(buff, position);
|
||||
selector.increment();
|
||||
}
|
||||
}
|
|
@ -1,49 +0,0 @@
|
|||
/*
|
||||
* Druid - a distributed column store.
|
||||
* Copyright 2012 - 2015 Metamarkets Group Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.druid.query.aggregation;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class DoubleMaxAggregatorTest
|
||||
{
|
||||
private void aggregate(TestFloatColumnSelector selector, DoubleMaxAggregator agg)
|
||||
{
|
||||
agg.aggregate();
|
||||
selector.increment();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAggregate() throws Exception
|
||||
{
|
||||
final float[] values = {0.15f, 0.27f, 0.0f, 0.93f};
|
||||
final TestFloatColumnSelector selector = new TestFloatColumnSelector(values);
|
||||
DoubleMaxAggregator agg = new DoubleMaxAggregator("billy", selector);
|
||||
|
||||
Assert.assertEquals("billy", agg.getName());
|
||||
|
||||
aggregate(selector, agg);
|
||||
aggregate(selector, agg);
|
||||
aggregate(selector, agg);
|
||||
aggregate(selector, agg);
|
||||
|
||||
Assert.assertEquals(new Float(values[3]).doubleValue(), agg.get());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,133 @@
|
|||
/*
|
||||
* Licensed to Metamarkets Group Inc. (Metamarkets) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. Metamarkets licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package io.druid.query.aggregation;
|
||||
|
||||
import com.google.common.primitives.Doubles;
|
||||
import io.druid.jackson.DefaultObjectMapper;
|
||||
import io.druid.segment.ColumnSelectorFactory;
|
||||
import org.easymock.EasyMock;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class DoubleMinAggregationTest
|
||||
{
|
||||
private DoubleMinAggregatorFactory doubleMinAggFactory;
|
||||
private ColumnSelectorFactory colSelectorFactory;
|
||||
private TestFloatColumnSelector selector;
|
||||
|
||||
private float[] values = {3.5f, 2.7f, 1.1f, 1.3f};
|
||||
|
||||
public DoubleMinAggregationTest() throws Exception
|
||||
{
|
||||
String aggSpecJson = "{\"type\": \"doubleMin\", \"name\": \"billy\", \"fieldName\": \"nilly\"}";
|
||||
doubleMinAggFactory = new DefaultObjectMapper().readValue(aggSpecJson , DoubleMinAggregatorFactory.class);
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setup()
|
||||
{
|
||||
selector = new TestFloatColumnSelector(values);
|
||||
colSelectorFactory = EasyMock.createMock(ColumnSelectorFactory.class);
|
||||
EasyMock.expect(colSelectorFactory.makeFloatColumnSelector("nilly")).andReturn(selector);
|
||||
EasyMock.replay(colSelectorFactory);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDoubleMinAggregator()
|
||||
{
|
||||
DoubleMinAggregator agg = (DoubleMinAggregator) doubleMinAggFactory.factorize(colSelectorFactory);
|
||||
|
||||
Assert.assertEquals("billy", agg.getName());
|
||||
|
||||
aggregate(selector, agg);
|
||||
aggregate(selector, agg);
|
||||
aggregate(selector, agg);
|
||||
aggregate(selector, agg);
|
||||
|
||||
Assert.assertEquals(values[2], ((Double) agg.get()).doubleValue(), 0.0001);
|
||||
Assert.assertEquals((long)values[2], agg.getLong());
|
||||
Assert.assertEquals(values[2], agg.getFloat(), 0.0001);
|
||||
|
||||
agg.reset();
|
||||
Assert.assertEquals(Double.POSITIVE_INFINITY, (Double) agg.get(), 0.0001);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDoubleMinBufferAggregator()
|
||||
{
|
||||
DoubleMinBufferAggregator agg = (DoubleMinBufferAggregator) doubleMinAggFactory.factorizeBuffered(colSelectorFactory);
|
||||
|
||||
ByteBuffer buffer = ByteBuffer.wrap(new byte[Doubles.BYTES]);
|
||||
agg.init(buffer, 0);
|
||||
|
||||
aggregate(selector, agg, buffer, 0);
|
||||
aggregate(selector, agg, buffer, 0);
|
||||
aggregate(selector, agg, buffer, 0);
|
||||
aggregate(selector, agg, buffer, 0);
|
||||
|
||||
Assert.assertEquals(values[2], ((Double) agg.get(buffer, 0)).doubleValue(), 0.0001);
|
||||
Assert.assertEquals((long) values[2], agg.getLong(buffer, 0));
|
||||
Assert.assertEquals(values[2], agg.getFloat(buffer, 0), 0.0001);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCombine()
|
||||
{
|
||||
Assert.assertEquals(1.2d, ((Double) doubleMinAggFactory.combine(1.2, 3.4)).doubleValue(), 0.0001);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEqualsAndHashCode() throws Exception
|
||||
{
|
||||
DoubleMinAggregatorFactory one = new DoubleMinAggregatorFactory("name1", "fieldName1");
|
||||
DoubleMinAggregatorFactory oneMore = new DoubleMinAggregatorFactory("name1", "fieldName1");
|
||||
DoubleMinAggregatorFactory two = new DoubleMinAggregatorFactory("name2", "fieldName2");
|
||||
|
||||
Assert.assertEquals(one.hashCode(), oneMore.hashCode());
|
||||
|
||||
Assert.assertTrue(one.equals(oneMore));
|
||||
Assert.assertFalse(one.equals(two));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMinDeserialization() throws Exception
|
||||
{
|
||||
String aggSpecJson = "{\"type\": \"min\", \"name\": \"billy\", \"fieldName\": \"nilly\"}";
|
||||
MinAggregatorFactory agg = new DefaultObjectMapper().readValue(aggSpecJson , MinAggregatorFactory.class);
|
||||
Assert.assertNotNull(agg);
|
||||
}
|
||||
|
||||
private void aggregate(TestFloatColumnSelector selector, DoubleMinAggregator agg)
|
||||
{
|
||||
agg.aggregate();
|
||||
selector.increment();
|
||||
}
|
||||
|
||||
private void aggregate(TestFloatColumnSelector selector, DoubleMinBufferAggregator agg, ByteBuffer buff, int position)
|
||||
{
|
||||
agg.aggregate(buff, position);
|
||||
selector.increment();
|
||||
}
|
||||
}
|
|
@ -1,49 +0,0 @@
|
|||
/*
|
||||
* Druid - a distributed column store.
|
||||
* Copyright 2012 - 2015 Metamarkets Group Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.druid.query.aggregation;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class DoubleMinAggregatorTest
|
||||
{
|
||||
private void aggregate(TestFloatColumnSelector selector, DoubleMinAggregator agg)
|
||||
{
|
||||
agg.aggregate();
|
||||
selector.increment();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAggregate() throws Exception
|
||||
{
|
||||
final float[] values = {0.15f, 0.27f, 0.0f, 0.93f};
|
||||
final TestFloatColumnSelector selector = new TestFloatColumnSelector(values);
|
||||
DoubleMinAggregator agg = new DoubleMinAggregator("billy", selector);
|
||||
|
||||
Assert.assertEquals("billy", agg.getName());
|
||||
|
||||
aggregate(selector, agg);
|
||||
aggregate(selector, agg);
|
||||
aggregate(selector, agg);
|
||||
aggregate(selector, agg);
|
||||
|
||||
Assert.assertEquals(new Float(values[2]).doubleValue(), agg.get());
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue