public void testBasicCatcherDistribution() { StringCatcher catcher = new StringCatcher(); bus.register(catcher); bus.post(EVENT); List<String> events = catcher.getEvents(); assertEquals("Only one event should be delivered.", 1, events.size()); assertEquals("Correct string should be delivered.", EVENT, events.get(0)); }
public void testRegisterThreadSafety() throws Exception { List<StringCatcher> catchers = Lists.newCopyOnWriteArrayList(); List<Future<?>> futures = Lists.newArrayList(); ExecutorService executor = Executors.newFixedThreadPool(10); int numberOfCatchers = 10000; for (int i = 0; i < numberOfCatchers; i++) { futures.add(executor.submit(new Registrator(bus, catchers))); } for (int i = 0; i < numberOfCatchers; i++) { futures.get(i).get(); } assertEquals("Unexpected number of catchers in the list", numberOfCatchers, catchers.size()); bus.post(EVENT); List<String> expectedEvents = ImmutableList.of(EVENT); for (StringCatcher catcher : catchers) { assertEquals( "One of the registered catchers did not receive an event.", expectedEvents, catcher.getEvents()); } }
public void testBasicDistribution() { StringCatcher catcher = new StringCatcher(); bus.register(catcher); // We post the event, but our Executor will not deliver it until instructed. bus.post(EVENT); List<String> events = catcher.getEvents(); assertTrue("No events should be delivered synchronously.", events.isEmpty()); // Now we find the task in our Executor and explicitly activate it. List<Runnable> tasks = executor.getTasks(); assertEquals("One event dispatch task should be queued.", 1, tasks.size()); tasks.get(0).run(); assertEquals("One event should be delivered.", 1, events.size()); assertEquals("Correct string should be delivered.", EVENT, events.get(0)); }
expectedEvents.add(EVENT); assertEquals("Two correct events should be delivered.", expectedEvents, catcher1.getEvents()); "One correct event should be delivered.", Lists.newArrayList(EVENT), catcher2.getEvents()); "Shouldn't catch any more events when unregistered.", expectedEvents, catcher1.getEvents()); assertEquals("Two correct events should be delivered.", expectedEvents, catcher2.getEvents()); bus.post(EVENT); assertEquals( "Shouldn't catch any more events when unregistered.", expectedEvents, catcher1.getEvents()); assertEquals( "Shouldn't catch any more events when unregistered.", expectedEvents, catcher2.getEvents());
List<String> stringEvents = stringCatcher.getEvents(); assertEquals("Only one String should be delivered.", 1, stringEvents.size()); assertEquals("Correct string should be delivered.", EVENT, stringEvents.get(0));
public void testBasicCatcherDistribution() { StringCatcher catcher = new StringCatcher(); bus.register(catcher); bus.post(EVENT); List<String> events = catcher.getEvents(); assertEquals("Only one event should be delivered.", 1, events.size()); assertEquals("Correct string should be delivered.", EVENT, events.get(0)); }
public void testRegisterThreadSafety() throws Exception { List<StringCatcher> catchers = Lists.newCopyOnWriteArrayList(); List<Future<?>> futures = Lists.newArrayList(); ExecutorService executor = Executors.newFixedThreadPool(10); int numberOfCatchers = 10000; for (int i = 0; i < numberOfCatchers; i++) { futures.add(executor.submit(new Registrator(bus, catchers))); } for (int i = 0; i < numberOfCatchers; i++) { futures.get(i).get(); } assertEquals("Unexpected number of catchers in the list", numberOfCatchers, catchers.size()); bus.post(EVENT); List<String> expectedEvents = ImmutableList.of(EVENT); for (StringCatcher catcher : catchers) { assertEquals("One of the registered catchers did not receive an event.", expectedEvents, catcher.getEvents()); } }
public void testBasicDistribution() { StringCatcher catcher = new StringCatcher(); bus.register(catcher); // We post the event, but our Executor will not deliver it until instructed. bus.post(EVENT); List<String> events = catcher.getEvents(); assertTrue("No events should be delivered synchronously.", events.isEmpty()); // Now we find the task in our Executor and explicitly activate it. List<Runnable> tasks = executor.getTasks(); assertEquals("One event dispatch task should be queued.", 1, tasks.size()); tasks.get(0).run(); assertEquals("One event should be delivered.", 1, events.size()); assertEquals("Correct string should be delivered.", EVENT, events.get(0)); }
expectedEvents, catcher1.getEvents()); Lists.newArrayList(EVENT), catcher2.getEvents()); expectedEvents, catcher1.getEvents()); assertEquals("Two correct events should be delivered.", expectedEvents, catcher2.getEvents()); bus.post(EVENT); assertEquals("Shouldn't catch any more events when unregistered.", expectedEvents, catcher1.getEvents()); assertEquals("Shouldn't catch any more events when unregistered.", expectedEvents, catcher2.getEvents());
List<String> stringEvents = stringCatcher.getEvents(); assertEquals("Only one String should be delivered.", 1, stringEvents.size());