/** * {@inheritDoc} */ @Override protected void processData(DefaultData defaultData, EntityManager entityManager) { if (defaultData instanceof HttpTimerData) { try { HttpTimerData original = (HttpTimerData) defaultData; HttpInfo httpInfo = getHttpInfo(original, entityManager); HttpTimerData clone = getClone(original); clone.setHttpInfo(httpInfo); entityManager.persist(clone); } catch (SerializationException e) { log.warn("TimerDataChartingCmrProcessor failed to clone the given HttpTimerData", e); } } else { timerDataAggregator.processTimerData((TimerData) defaultData); } }
/** * Tests that after maximum amount of elements is reached we move them to persist list. */ @Test public void maxElementsReached() { 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); assertThat(aggregator.getElementCount(), is(1)); verifyZeroInteractions(entityManager); }
/** * Tests that if we place many time same amount of elements, maximum will not be reached. */ @Test public void noMaxElementsReached() { aggregator.maxElements = 2; TimerData timerData1 = new TimerData(new Timestamp(System.currentTimeMillis()), 10L, 20L, 30L); TimerData timerData2 = new TimerData(new Timestamp(System.currentTimeMillis()), 100L, 200L, 300L); for (int i = 0; i < 100; i++) { aggregator.processTimerData(timerData1); aggregator.processTimerData(timerData2); } assertThat(aggregator.getElementCount(), is(2)); verifyZeroInteractions(entityManager); }
/** * 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())); }
processor.process(httpTimerData, entityManager); verify(timerDataAggregator, times(1)).processTimerData(timerData);
when(timerData.getMethodIdent()).thenReturn(20L); aggregator.processTimerData(timerData);
aggregator.processTimerData(timerData); aggregator.processTimerData(timerData2);