@Test public void testSwap() throws Exception { final DataSchema schema = new DataSchema( "test", null, new AggregatorFactory[] {new CountAggregatorFactory("rows")}, new UniformGranularitySpec(Granularity.HOUR, QueryGranularities.MINUTE, null), new DefaultObjectMapper()); final Interval interval = new Interval("2013-01-01/2013-01-02"); final String version = new DateTime().toString(); RealtimeTuningConfig tuningConfig = new RealtimeTuningConfig( 100, new Period("P1Y"), null, null, null, null, null, null, null, null, 0, 0, null, null); final Sink sink = new Sink( interval, schema, tuningConfig.getShardSpec(), version, tuningConfig.getMaxRowsInMemory(), tuningConfig.isReportParseExceptions()); sink.add( new InputRow() { @Override public List<String> getDimensions() { return Lists.newArrayList(); } @Override public long getTimestampFromEpoch() { return new DateTime("2013-01-01").getMillis(); } @Override public DateTime getTimestamp() { return new DateTime("2013-01-01"); } @Override public List<String> getDimension(String dimension) { return Lists.newArrayList(); } @Override public float getFloatMetric(String metric) { return 0; } @Override public long getLongMetric(String metric) { return 0L; } @Override public Object getRaw(String dimension) { return null; } @Override public int compareTo(Row o) { return 0; } }); FireHydrant currHydrant = sink.getCurrHydrant(); Assert.assertEquals(new Interval("2013-01-01/PT1M"), currHydrant.getIndex().getInterval()); FireHydrant swapHydrant = sink.swap(); sink.add( new InputRow() { @Override public List<String> getDimensions() { return Lists.newArrayList(); } @Override public long getTimestampFromEpoch() { return new DateTime("2013-01-01").getMillis(); } @Override public DateTime getTimestamp() { return new DateTime("2013-01-01"); } @Override public List<String> getDimension(String dimension) { return Lists.newArrayList(); } @Override public float getFloatMetric(String metric) { return 0; } @Override public long getLongMetric(String metric) { return 0L; } @Override public Object getRaw(String dimension) { return null; } @Override public int compareTo(Row o) { return 0; } }); Assert.assertEquals(currHydrant, swapHydrant); Assert.assertNotSame(currHydrant, sink.getCurrHydrant()); Assert.assertEquals( new Interval("2013-01-01/PT1M"), sink.getCurrHydrant().getIndex().getInterval()); Assert.assertEquals(2, Iterators.size(sink.iterator())); }