/** * Test the {@link DataAggregatorProcessor} for a correct aggregation of data. */ @Test public void dataAggregatorProcessorAggregation() { int aggregationPeriod = 100; DataAggregatorProcessor<TimerData> dataAggregatorProcessor = new DataAggregatorProcessor<>(TimerData.class, aggregationPeriod, new TimerDataAggregator(), true); dataAggregatorProcessor.setStorageWriter(storageWriter); long timestampValue = new Date().getTime(); Random random = new Random(); long platformIdent = random.nextLong(); long sensorTypeIdent = random.nextLong(); long methodIdent = random.nextLong(); TimerData timerData = new TimerData(new Timestamp(timestampValue), platformIdent, sensorTypeIdent, methodIdent); assertThat(dataAggregatorProcessor.canBeProcessed(timerData), is(true)); final int elements = 1000; for (int i = 0; i < (elements / 2); i++) { dataAggregatorProcessor.process(timerData); } Collection<Future<Void>> futures = dataAggregatorProcessor.flush(); assertThat(futures, hasSize(1)); verify(storageWriter, times(1)).write(Matchers.<TimerData> anyObject()); }