/** * {@inheritDoc} */ @Override public void run() { while (true) { TimerData timerData = this.mostRecentlyAdded; if (timerData != null) { if (timerData == lastChecked) { // NOPMD this.timerDataAggregator.removeAndPersistAll(); } lastChecked = timerData; } this.timerDataAggregator.saveAllInPersistList(); try { Thread.sleep(this.timerDataAggregator.cacheCleanSleepingPeriod); } catch (InterruptedException e) { Thread.interrupted(); } } }
/** * Tests that persist list saving includes correct elements being saved. */ @Test public void saveAllInPersistList() { aggregator.maxElements = 1; TimerData timerData1 = new TimerData(new Timestamp(System.currentTimeMillis()), 10L, 20L, 30L); TimerData timerData2 = new TimerData(new Timestamp(System.currentTimeMillis()), 100L, 200L, 300L); aggregator.processTimerData(timerData1); aggregator.processTimerData(timerData2); aggregator.saveAllInPersistList(); ArgumentCaptor<DatabaseAggregatedTimerData> argument = ArgumentCaptor.forClass(DatabaseAggregatedTimerData.class); verify(entityManager, times(1)).persist(argument.capture()); assertThat(argument.getValue(), is(instanceOf(DatabaseAggregatedTimerData.class))); assertThat(argument.getValue().getPlatformIdent(), is(timerData1.getPlatformIdent())); assertThat(argument.getValue().getSensorTypeIdent(), is(timerData1.getSensorTypeIdent())); assertThat(argument.getValue().getMethodIdent(), is(timerData1.getMethodIdent())); }