diff --git a/processing/src/test/java/io/druid/query/aggregation/hyperloglog/HyperLogLogCollectorTest.java b/processing/src/test/java/io/druid/query/aggregation/hyperloglog/HyperLogLogCollectorTest.java index 8b6839fa26a26a5a325475296a03aaa0ec3a3809..acf775d1cdde48157c10fde810548288e2aaa120 100644 --- a/processing/src/test/java/io/druid/query/aggregation/hyperloglog/HyperLogLogCollectorTest.java +++ b/processing/src/test/java/io/druid/query/aggregation/hyperloglog/HyperLogLogCollectorTest.java @@ -298,6 +298,24 @@ public class HyperLogLogCollectorTest } } + @Test + public void testBufferSwap() throws Exception + { + ByteBuffer biggerOffset = makeCollectorBuffer(1, (byte) 0x00, 0x11); + ByteBuffer smallerOffset = makeCollectorBuffer(0, (byte) 0x20, 0x00); + + ByteBuffer buffer = ByteBuffer.allocate(HyperLogLogCollector.getLatestNumBytesForDenseStorage()); + HyperLogLogCollector collector = HyperLogLogCollector.makeCollector(buffer); + + // make sure the original buffer gets modified + collector.fold(biggerOffset); + Assert.assertEquals(collector, HyperLogLogCollector.makeCollector(buffer)); + + // make sure the original buffer gets modified + collector.fold(smallerOffset); + Assert.assertEquals(collector, HyperLogLogCollector.makeCollector(buffer)); + } + @Test public void testFoldWithArbitraryInitialPositions() throws Exception {