@Test public void testBatchEvents() throws InterruptedException, EventDeliveryException { StressSource source = new StressSource(); source.setChannelProcessor(mockProcessor); Context context = new Context(); context.put("maxTotalEvents", "35"); context.put("batchSize", "10"); source.configure(context); source.start(); for (int i = 0; i < 50; i++) { if (source.process() == Status.BACKOFF) { TestCase.assertTrue("Source should have sent all events in 4 batches", i == 4); break; } if (i < 3) { verify(mockProcessor, times(i + 1)).processEventBatch(getLastProcessedEventList(source)); } else { verify(mockProcessor, times(1)).processEventBatch(getLastProcessedEventList(source)); } } long successfulEvents = getCounterGroup(source).get("events.successful"); TestCase.assertTrue( "Number of successful events should be 35 but was " + successfulEvents, successfulEvents == 35); long failedEvents = getCounterGroup(source).get("events.failed"); TestCase.assertTrue( "Number of failure events should be 0 but was " + failedEvents, failedEvents == 0); }
@Test public void testMaxSuccessfulEvents() throws InterruptedException, EventDeliveryException { StressSource source = new StressSource(); source.setChannelProcessor(mockProcessor); Context context = new Context(); context.put("maxSuccessfulEvents", "35"); source.configure(context); source.start(); for (int i = 0; i < 10; i++) { source.process(); } // 1 failed call, 10 successful doThrow(new ChannelException("stub")).when(mockProcessor).processEvent(getEvent(source)); source.process(); doNothing().when(mockProcessor).processEvent(getEvent(source)); for (int i = 0; i < 10; i++) { source.process(); } // 1 failed call, 50 succesful doThrow(new ChannelException("stub")).when(mockProcessor).processEvent(getEvent(source)); source.process(); doNothing().when(mockProcessor).processEvent(getEvent(source)); for (int i = 0; i < 50; i++) { source.process(); } // We should have called processEvent(evt) 37 times, twice for failures // and twice for successful events. verify(mockProcessor, times(37)).processEvent(getEvent(source)); }
@Test public void testBatchEventsWithoutMatTotalEvents() throws InterruptedException, EventDeliveryException { StressSource source = new StressSource(); source.setChannelProcessor(mockProcessor); Context context = new Context(); context.put("batchSize", "10"); source.configure(context); source.start(); for (int i = 0; i < 10; i++) { Assert.assertFalse( "StressSource with no maxTotalEvents should not return " + Status.BACKOFF, source.process() == Status.BACKOFF); } verify(mockProcessor, times(10)).processEventBatch(getLastProcessedEventList(source)); long successfulEvents = getCounterGroup(source).get("events.successful"); TestCase.assertTrue( "Number of successful events should be 100 but was " + successfulEvents, successfulEvents == 100); long failedEvents = getCounterGroup(source).get("events.failed"); TestCase.assertTrue( "Number of failure events should be 0 but was " + failedEvents, failedEvents == 0); }
@Test public void testMaxTotalEvents() throws InterruptedException, EventDeliveryException { StressSource source = new StressSource(); source.setChannelProcessor(mockProcessor); Context context = new Context(); context.put("maxTotalEvents", "35"); source.configure(context); source.start(); for (int i = 0; i < 50; i++) { source.process(); } verify(mockProcessor, times(35)).processEvent(getEvent(source)); }