@Override protected void writeRemainingData(final JsonGenerator generator) throws IOException { final String samples = accumulatorSampleConsumer.flush(); // Don't write out empty samples if (!Strings.isNullOrEmpty(samples)) { generator.writeObject(new SamplesForMetricAndSource(lastSource, lastEventCategory, lastMetric, samples)); } } }
public String flush() { outputAndResetAccumulators(); return toString(); } }
@Test(groups = "fast") public void testDailyAggregation() throws Exception { clock.setTime(new DateTime(2012, 12, 1, 12, 40, DateTimeZone.UTC)); final DateTime start = clock.getUTCNow(); final AccumulatorSampleConsumer sampleConsumer = new AccumulatorSampleConsumer(TimeAggregationMode.DAYS, new CSVSampleProcessor()); // 5 for day 1 sampleConsumer.processOneSample(start, SampleOpcode.DOUBLE, (double) 1); sampleConsumer.processOneSample(start.plusHours(4), SampleOpcode.DOUBLE, (double) 4); // 1 for day 2 sampleConsumer.processOneSample(start.plusDays(1), SampleOpcode.DOUBLE, (double) 1); // 10 and 20 for day 3 (with different opcode) sampleConsumer.processOneSample(start.plusDays(2), SampleOpcode.DOUBLE, (double) 10); sampleConsumer.processOneSample(start.plusDays(2), SampleOpcode.INT, 20); Assert.assertEquals(sampleConsumer.flush(), "1354320000,5.0,1354406400,1.0,1354492800,10.0,1354492800,20.0"); } }
public AccumulatingJsonSamplesOutputer(final TimeAggregationMode timeAggregationMode, final TimelineEventHandler timelineEventHandler, final TimelineDao timelineDao, final InternalTenantContext context) { super(timelineEventHandler, timelineDao, context); this.accumulatorSampleConsumer = new AccumulatorSampleConsumer(timeAggregationMode, new CSVSampleProcessor()); }