@Test public void testLocalTransport() { final CountingEventReceiver testEventReceiver = new CountingEventReceiver(TEST_EVENT_TYPE); final Injector injector = Guice.createInjector(Stage.PRODUCTION, ConfigModule.forTesting("ness.event.transport", "local"), new Module() { @Override public void configure(final Binder binder) { binder.bind(TestEventTransmitter.class).in(Scopes.SINGLETON); NessEventModule.bindEventReceiver(binder).toInstance(testEventReceiver); NessEventModule.bindEventTransmitter(binder, "test").to(TestEventTransmitter.class).in(Scopes.SINGLETON); binder.disableCircularProxies(); binder.requireExplicitBindings(); }}, new NessEventModule()); injector.injectMembers(this); final int maxCount = 1000; for (int i = 0; i < maxCount; i++) { sender.enqueue(TEST_EVENT); } final NessEvent testEvent = testEventReceiver.getEvent(); Assert.assertNotNull(testEvent); Assert.assertSame(TEST_EVENT, testEvent); Assert.assertEquals(maxCount, testEventReceiver.getCount()); Assert.assertEquals(0, testEventTransmitter.getCount()); }
@Test public void testTwoTransports() { final CountingEventReceiver testEventReceiver = new CountingEventReceiver(TEST_EVENT_TYPE); final Injector injector = Guice.createInjector(Stage.PRODUCTION, ConfigModule.forTesting("ness.event.transport", "test\\, local"), new Module() { @Override public void configure(final Binder binder) { binder.bind(TestEventTransmitter.class).in(Scopes.SINGLETON); NessEventModule.bindEventReceiver(binder).toInstance(testEventReceiver); NessEventModule.bindEventTransmitter(binder, "test").to(TestEventTransmitter.class).in(Scopes.SINGLETON); binder.disableCircularProxies(); binder.requireExplicitBindings(); }}, new NessEventModule()); injector.injectMembers(this); final int maxCount = 1000; for (int i = 0; i < maxCount; i++) { sender.enqueue(TEST_EVENT); } final NessEvent testEvent = testEventReceiver.getEvent(); Assert.assertNotNull(testEvent); Assert.assertSame(TEST_EVENT, testEvent); // Each event was transported twice. Assert.assertEquals(maxCount * 2, testEventReceiver.getCount()); // But only once by the test transport. Assert.assertEquals(maxCount, testEventTransmitter.getCount()); }
@Test public void testCustomTransport() { final CountingEventReceiver testEventReceiver = new CountingEventReceiver(TEST_EVENT_TYPE); final Injector injector = Guice.createInjector(Stage.PRODUCTION, ConfigModule.forTesting("ness.event.transport", "test"), new Module() { @Override public void configure(final Binder binder) { binder.bind(TestEventTransmitter.class).in(Scopes.SINGLETON); NessEventModule.bindEventReceiver(binder).toInstance(testEventReceiver); NessEventModule.bindEventTransmitter(binder, "test").to(TestEventTransmitter.class).in(Scopes.SINGLETON); binder.disableCircularProxies(); binder.requireExplicitBindings(); }}, new NessEventModule()); injector.injectMembers(this); final int maxCount = 1000; for (int i = 0; i < maxCount; i++) { sender.enqueue(TEST_EVENT); } final NessEvent testEvent = testEventReceiver.getEvent(); Assert.assertNotNull(testEvent); Assert.assertSame(TEST_EVENT, testEvent); Assert.assertEquals(maxCount, testEventReceiver.getCount()); Assert.assertEquals(maxCount, testEventTransmitter.getCount()); }