final BasicCallbackReactor reactor = BasicCallbackReactor.create (threading, exceptions);
Assert.assertTrue (reactor.initialize (BasicChannelTest.defaultPollTimeout));
final DefaultChannelMessageCoder coder = DefaultChannelMessageCoder.defaultInstance;
final BasicChannel channel = BasicChannel.create (pipe.source (), pipe.sink (), coder, reactor, threading, exceptions);
Assert.assertTrue (channel.initialize (BasicChannelTest.defaultPollTimeout));
final ChannelController channelController = channel.getController ();
final ChannelCallbacks channelCallbacksProxy = reactor.createProxy (ChannelCallbacks.class);
Assert.assertTrue (channelController.bind (channelCallbacksProxy).await (BasicChannelTest.defaultPollTimeout));
final QueueingChannelCallbacks channelCallbacks = QueueingChannelCallbacks.create (channelController, exceptions);
final CallbackIsolate channelCallbacksIsolate = reactor.createIsolate ();
Assert.assertTrue (reactor.assignHandler (channelCallbacksProxy, channelCallbacks, channelCallbacksIsolate).await (BasicChannelTest.defaultPollTimeout));
for (int index = 0; index < BasicChannelTest.defaultTries; index++) {
final ChannelMessage outboundMessage = RandomMessageGenerator.defaultInstance.generateChannelMessage ();
Assert.assertTrue (channelController.send (outboundMessage).await (BasicChannelTest.defaultPollTimeout));
final ChannelMessage inboundMessage = channelCallbacks.queue.poll (BasicChannelTest.defaultPollTimeout, TimeUnit.MILLISECONDS);
Assert.assertNotNull (inboundMessage);
Assert.assertEquals (outboundMessage.metaData, inboundMessage.metaData);
Assert.assertEquals (outboundMessage.data, inboundMessage.data);
}