logger.addHandler(consoleHandler);
Dispatcher dispatcher = new Dispatcher();
dispatcher.start();
// prepare target 1
TestTarget target1 = new TestTarget(11111);
target1.start();
SocketChannel channel1 = target1.getSocketChannel();
channel1.configureBlocking(false);
TestChannelHandler handler1 = new TestChannelHandler();
handler1.setInputHandling(TestChannelHandler.InputHandling.FORWARD);
dispatcher.registerChannel(channel1, handler1);
// prepare target 2
TestTarget target2 = new TestTarget(22222);
target2.start();
SocketChannel channel2 = target2.getSocketChannel();
channel2.configureBlocking(false);
TestChannelHandler handler2 = new TestChannelHandler();
handler2.setInputHandling(TestChannelHandler.InputHandling.FORWARD);
dispatcher.registerChannel(channel2, handler2);
// set up cross references
handler1.setPeer(handler2);
handler2.setPeer(handler1);
// start communication
target1.write("message1".getBytes());
target2.write("message2".getBytes());
// test for deadlock
assertTrue(handler1.hasForwarded());
assertTrue(handler2.hasForwarded());
}