@Test
public void testInvocationExtractor() {
AbstractDataProcessor chainedProcessor = mock(AbstractDataProcessor.class);
List<AbstractDataProcessor> chainedList = new ArrayList<>();
chainedList.add(chainedProcessor);
InvocationExtractorDataProcessor invocationExtractorDataProcessor = new InvocationExtractorDataProcessor(chainedList);
invocationExtractorDataProcessor.setStorageWriter(storageWriter);
InvocationSequenceData invocationSequenceData = new InvocationSequenceData();
List<InvocationSequenceData> children = new ArrayList<>();
InvocationSequenceData child1 = new InvocationSequenceData(new Timestamp(new Date().getTime()), 10, 10, 10);
TimerData timerData = new TimerData();
child1.setTimerData(timerData);
InvocationSequenceData child2 = new InvocationSequenceData(new Timestamp(new Date().getTime()), 20, 20, 20);
SqlStatementData sqlStatementData = new SqlStatementData();
child2.setSqlStatementData(sqlStatementData);
children.add(child1);
children.add(child2);
invocationSequenceData.setNestedSequences(children);
assertThat(invocationExtractorDataProcessor.canBeProcessed(invocationSequenceData), is(true));
invocationExtractorDataProcessor.process(invocationSequenceData);
verify(chainedProcessor, times(1)).process(timerData);
verify(chainedProcessor, times(1)).process(timerData);
verify(chainedProcessor, times(0)).process(child1);
verify(chainedProcessor, times(0)).process(child2);
}