sources.add(sourcePair.getName());
sourcesMap.put(sourcePair.getId(), sourcePair);
}
//create the consumer mock up
DatabusStreamConsumer mockConsumer1 = EasyMock.createStrictMock("consumer1",
DatabusStreamConsumer.class);
SelectingDatabusCombinedConsumer sdccMockConsumer1 = new SelectingDatabusCombinedConsumer(mockConsumer1);
EasyMock.makeThreadSafe(mockConsumer1, true);
DatabusV2ConsumerRegistration consumerReg =
new DatabusV2ConsumerRegistration(sdccMockConsumer1, sources, null);
EasyMock.expect(mockConsumer1.onStartConsumption()).andAnswer(
new SleepingAnswer<ConsumerCallbackResult>(new LoggedAnswer<ConsumerCallbackResult>(
ConsumerCallbackResult.SUCCESS, LOG, Level.DEBUG, "startConsumption() called"),
150));
EasyMock.expect(mockConsumer1.onStartDataEventSequence(null)).andAnswer(
new SleepingAnswer<ConsumerCallbackResult>(new LoggedAnswer<ConsumerCallbackResult>(
ConsumerCallbackResult.SUCCESS, LOG, Level.DEBUG, "onStartDataEventSequence() called"),
110));
EasyMock.expect(mockConsumer1.onStartSource("source1", null)).andAnswer(
new SleepingAnswer<ConsumerCallbackResult>(
new LoggedAnswer<ConsumerCallbackResult>(ConsumerCallbackResult.SUCCESS, LOG,
Level.DEBUG,
"onStartSource() called"),
40));
EasyMock.expect(mockConsumer1.onDataEvent(event1, null)).andAnswer(
new SleepingAnswer<ConsumerCallbackResult>(
new LoggedAnswer<ConsumerCallbackResult>(ConsumerCallbackResult.SUCCESS, LOG, Level.DEBUG,
"onDataEvet(1) called"),
50));
EasyMock.expect(mockConsumer1.onDataEvent(event2, null)).andAnswer(
new SleepingAnswer<ConsumerCallbackResult>(
new LoggedAnswer<ConsumerCallbackResult>(ConsumerCallbackResult.SUCCESS, LOG, Level.DEBUG,
"onDataEvet(2) called"),
210));
EasyMock.expect(mockConsumer1.onDataEvent(event1, null)).andAnswer(
new SleepingAnswer<ConsumerCallbackResult>(
new LoggedAnswer<ConsumerCallbackResult>(ConsumerCallbackResult.SUCCESS, LOG, Level.DEBUG,
"onDataEvet(1) called"),
40));
EasyMock.expect(mockConsumer1.onEndSource("source1", null)).andAnswer(
new SleepingAnswer<ConsumerCallbackResult>(
new LoggedAnswer<ConsumerCallbackResult>(ConsumerCallbackResult.SUCCESS, LOG, Level.DEBUG,
"onStartSource() called"),
50));
EasyMock.replay(mockConsumer1);
ConsumerCallbackStats consumerStatsCollector = new ConsumerCallbackStats(1, "test","test", true,false, null);
UnifiedClientStats unifiedStatsCollector = new UnifiedClientStats(1, "test","test.unified");
//Create and fire up callbacks
List<DatabusV2ConsumerRegistration> allRegistrations =
Arrays.asList(consumerReg);
MultiConsumerCallback callback =
new MultiConsumerCallback(
allRegistrations,
Executors.newCachedThreadPool(),
100,
new StreamConsumerCallbackFactory(consumerStatsCollector, unifiedStatsCollector),
consumerStatsCollector,
unifiedStatsCollector,
null,
null);
callback.setSourceMap(sourcesMap);
ConsumerCallbackResult startConsumptionRes = callback.onStartConsumption();
Assert.assertTrue(ConsumerCallbackResult.isFailure(startConsumptionRes),
"startConsumption() failed");
ConsumerCallbackResult startWindowRes = callback.onStartDataEventSequence(null);
Assert.assertTrue(ConsumerCallbackResult.isFailure(startWindowRes),
"startDataEventSequence() failed");
ConsumerCallbackResult startSourceRes = callback.onStartSource("source1", null);
Assert.assertTrue(ConsumerCallbackResult.isSuccess(startSourceRes),
"startSources(source1) succeeded");
ConsumerCallbackResult event1Res = callback.onDataEvent(event1, null);
Assert.assertTrue(ConsumerCallbackResult.isSuccess(event1Res),
"onDataEvent(1) succeeded");
ConsumerCallbackResult event2Res = callback.onDataEvent(event2, null);
Assert.assertTrue(ConsumerCallbackResult.isSuccess(event2Res),
"onDataEvent(2) queued up");
ConsumerCallbackResult event3Res = callback.onDataEvent(event1, null);
Assert.assertTrue(ConsumerCallbackResult.isSuccess(event3Res),
"onDataEvent(1) queued up");
ConsumerCallbackResult endSourceRes = callback.onEndSource("source1", null);
Assert.assertTrue(ConsumerCallbackResult.isFailure(endSourceRes),
"onEndSource fails because of timeout in onDataEvent(2)");
EasyMock.reset(mockConsumer1);
EasyMock.makeThreadSafe(mockConsumer1, true);
EasyMock.expect(mockConsumer1.onStartSource("source2", null)).andAnswer(
new SleepingAnswer<ConsumerCallbackResult>(
new LoggedAnswer<ConsumerCallbackResult>(ConsumerCallbackResult.SUCCESS, LOG, Level.DEBUG,
"onStartSource() called"),
150)).times(0, 1);
EasyMock.expect(mockConsumer1.onDataEvent(event3, null)).andAnswer(
new SleepingAnswer<ConsumerCallbackResult>(
new LoggedAnswer<ConsumerCallbackResult>(ConsumerCallbackResult.SUCCESS, LOG, Level.DEBUG,
"onDataEvet(3) called"),
40));
EasyMock.expect(mockConsumer1.onEndSource("source2", null)).andAnswer(
new SleepingAnswer<ConsumerCallbackResult>(
new LoggedAnswer<ConsumerCallbackResult>(ConsumerCallbackResult.SUCCESS, LOG, Level.DEBUG,
"onStartSource() called"),
60));
EasyMock.replay(mockConsumer1);