@Override public Object get(ByteBuffer buf, int position) { return delegate.get(buf, position); }
@Test public void testLongMinBufferAggregator() { BufferAggregator agg = longMinAggFactory.factorizeBuffered(colSelectorFactory); ByteBuffer buffer = ByteBuffer.wrap(new byte[Long.BYTES + Byte.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], ((Long) agg.get(buffer, 0)).longValue()); Assert.assertEquals(values[2], agg.getLong(buffer, 0)); Assert.assertEquals((float) values[2], agg.getFloat(buffer, 0), 0.0001); }
@Test public void testDoubleFirstBufferAggregator() { BufferAggregator agg = doubleFirstAggFactory.factorizeBuffered( colSelectorFactory); ByteBuffer buffer = ByteBuffer.wrap(new byte[doubleFirstAggFactory.getMaxIntermediateSizeWithNulls()]); agg.init(buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); Pair<Long, Double> result = (Pair<Long, Double>) agg.get(buffer, 0); Assert.assertEquals(times[1], result.lhs.longValue()); Assert.assertEquals(doubleValues[1], result.rhs, 0.0001); Assert.assertEquals((long) doubleValues[1], agg.getLong(buffer, 0)); Assert.assertEquals(doubleValues[1], agg.getDouble(buffer, 0), 0.0001); }
@Test public void testLongMaxBufferAggregator() { BufferAggregator agg = longMaxAggFactory.factorizeBuffered(colSelectorFactory); ByteBuffer buffer = ByteBuffer.wrap(new byte[Long.BYTES + Byte.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], ((Long) agg.get(buffer, 0)).longValue()); Assert.assertEquals(values[2], agg.getLong(buffer, 0)); Assert.assertEquals((float) values[2], agg.getFloat(buffer, 0), 0.0001); }
@Override public Object get(ByteBuffer buf, int position) { return delegate.get(buf, position); }
@Test public void testDoubleMaxBufferAggregator() { BufferAggregator agg = doubleMaxAggFactory.factorizeBuffered(colSelectorFactory); ByteBuffer buffer = ByteBuffer.wrap(new byte[Double.BYTES + Byte.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); }
@Override @Nullable public Object get(ByteBuffer buf, int position) { if (buf.get(position) == NullHandling.IS_NULL_BYTE) { return null; } return delegate.get(buf, position + Byte.BYTES); }
@Test public void testDoubleMinBufferAggregator() { BufferAggregator agg = doubleMinAggFactory.factorizeBuffered(colSelectorFactory); ByteBuffer buffer = ByteBuffer.wrap(new byte[Double.BYTES + Byte.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); }
@Override protected Object getAggVal(BufferAggregator agg, int rowOffset, int aggPosition) { int[] indexAndOffset = indexAndOffsets.get(rowOffset); ByteBuffer bb = aggBuffers.get(indexAndOffset[0]).get(); return agg.get(bb, indexAndOffset[1] + aggOffsetInBuffer[aggPosition]); }
@Test public void testLongLastBufferAggregator() { BufferAggregator agg = longLastAggFactory.factorizeBuffered( colSelectorFactory); ByteBuffer buffer = ByteBuffer.wrap(new byte[longLastAggFactory.getMaxIntermediateSizeWithNulls()]); agg.init(buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); Pair<Long, Long> result = (Pair<Long, Long>) agg.get(buffer, 0); Assert.assertEquals(times[2], result.lhs.longValue()); Assert.assertEquals(longValues[2], result.rhs.longValue()); Assert.assertEquals(longValues[2], agg.getLong(buffer, 0)); Assert.assertEquals(longValues[2], agg.getFloat(buffer, 0), 1); }
@Override public Entry<Integer> next() { if (cur < 0) { throw new NoSuchElementException(); } findNext = true; final Object[] values = new Object[aggregators.length]; final int recordOffset = cur * recordSize; for (int i = 0; i < aggregators.length; i++) { values[i] = aggregators[i].get(valBuffer, recordOffset + aggregatorOffsets[i]); } return new Entry<>(cur - 1, values); }
@Test public void testLongFirstBufferAggregator() { BufferAggregator agg = longFirstAggFactory.factorizeBuffered( colSelectorFactory); ByteBuffer buffer = ByteBuffer.wrap(new byte[longFirstAggFactory.getMaxIntermediateSizeWithNulls()]); agg.init(buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); Pair<Long, Long> result = (Pair<Long, Long>) agg.get(buffer, 0); Assert.assertEquals(times[3], result.lhs.longValue()); Assert.assertEquals(longValues[3], result.rhs.longValue()); Assert.assertEquals(longValues[3], agg.getLong(buffer, 0)); Assert.assertEquals(longValues[3], agg.getFloat(buffer, 0), 0.0001); }
@Override public Object getMetricObjectValue(int rowOffset, int aggOffset) { BufferAggregator agg = getAggs()[aggOffset]; int[] indexAndOffset = indexAndOffsets.get(rowOffset); ByteBuffer bb = aggBuffers.get(indexAndOffset[0]).get(); return agg.get(bb, indexAndOffset[1] + aggOffsetInBuffer[aggOffset]); }
@Test public void testDoubleFirstBufferAggregator() { BufferAggregator agg = floatFirstAggregatorFactory.factorizeBuffered( colSelectorFactory); ByteBuffer buffer = ByteBuffer.wrap(new byte[floatFirstAggregatorFactory.getMaxIntermediateSizeWithNulls()]); agg.init(buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); Pair<Long, Float> result = (Pair<Long, Float>) agg.get(buffer, 0); Assert.assertEquals(times[1], result.lhs.longValue()); Assert.assertEquals(floats[1], result.rhs, 0.0001); Assert.assertEquals((long) floats[1], agg.getLong(buffer, 0)); Assert.assertEquals(floats[1], agg.getFloat(buffer, 0), 0.0001); }
protected Entry<KeyType> bucketEntryForOffset(final int bucketOffset) { final ByteBuffer tableBuffer = hashTable.getTableBuffer(); final KeyType key = keySerde.fromByteBuffer(tableBuffer, bucketOffset + HASH_SIZE); final Object[] values = new Object[aggregators.length]; for (int i = 0; i < aggregators.length; i++) { values[i] = aggregators[i].get(tableBuffer, bucketOffset + aggregatorOffsets[i]); } return new Entry<>(key, values); } }
@Test public void testDoubleLastBufferAggregator() { BufferAggregator agg = floatLastAggregatorFactory.factorizeBuffered( colSelectorFactory); ByteBuffer buffer = ByteBuffer.wrap(new byte[floatLastAggregatorFactory.getMaxIntermediateSizeWithNulls()]); agg.init(buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); Pair<Long, Float> result = (Pair<Long, Float>) agg.get(buffer, 0); Assert.assertEquals(times[0], result.lhs.longValue()); Assert.assertEquals(floats[0], result.rhs, 0.0001); Assert.assertEquals((long) floats[0], agg.getLong(buffer, 0)); Assert.assertEquals(floats[0], agg.getFloat(buffer, 0), 0.0001); }
@Test public void testStringLastBufferAggregator() { BufferAggregator agg = stringLastAggFactory.factorizeBuffered( colSelectorFactory); ByteBuffer buffer = ByteBuffer.wrap(new byte[stringLastAggFactory.getMaxIntermediateSize()]); agg.init(buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); Pair<Long, String> result = (Pair<Long, String>) agg.get(buffer, 0); Assert.assertEquals(strings[2], result.rhs); }
@Test public void testStringLastBufferAggregator() { BufferAggregator agg = stringLastAggFactory.factorizeBuffered( colSelectorFactory); ByteBuffer buffer = ByteBuffer.wrap(new byte[stringLastAggFactory.getMaxIntermediateSize()]); agg.init(buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); Pair<Long, String> result = (Pair<Long, String>) agg.get(buffer, 0); Assert.assertEquals(strings[0], result.rhs); }
@Test public void testStringFirstCombiningBufferAggregator() { BufferAggregator agg = combiningAggFactory.factorizeBuffered( colSelectorFactory); ByteBuffer buffer = ByteBuffer.wrap(new byte[stringLastAggFactory.getMaxIntermediateSize()]); agg.init(buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); Pair<Long, String> result = (Pair<Long, String>) agg.get(buffer, 0); Pair<Long, String> expected = pairs[3]; Assert.assertEquals(expected.lhs, result.lhs); Assert.assertEquals(expected.rhs, result.rhs); }
@Test public void testStringLastCombiningBufferAggregator() { BufferAggregator agg = combiningAggFactory.factorizeBuffered( colSelectorFactory); ByteBuffer buffer = ByteBuffer.wrap(new byte[stringLastAggFactory.getMaxIntermediateSize()]); agg.init(buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); aggregate(agg, buffer, 0); Pair<Long, String> result = (Pair<Long, String>) agg.get(buffer, 0); Pair<Long, String> expected = pairs[2]; Assert.assertEquals(expected.lhs, result.lhs); Assert.assertEquals(expected.rhs, result.rhs); }