package org.apache.haox.event.tcp; import junit.framework.Assert; import org.apache.haox.event.EventHandler; import org.apache.haox.event.EventHub; import org.apache.haox.transport.Acceptor; import org.apache.haox.transport.MessageHandler; import org.apache.haox.transport.event.MessageEvent; import org.apache.haox.transport.event.TransportEventType; import org.apache.haox.transport.tcp.TcpAcceptor; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SocketChannel; public class TestTcpServer extends TestTcpBase { private EventHub eventHub; @Before public void setUp() throws IOException { setUpServer(); } private void setUpServer() throws IOException { eventHub = new EventHub(); EventHandler messageHandler = new MessageHandler() { @Override protected void handleMessage(MessageEvent msgEvent) { if (msgEvent.getEventType() == TransportEventType.INBOUND_MESSAGE) { msgEvent.getTransport().sendMessage(msgEvent.getMessage()); } } }; eventHub.register(messageHandler); Acceptor acceptor = new TcpAcceptor(createStreamingDecoder()); eventHub.register(acceptor); eventHub.start(); acceptor.listen(serverHost, serverPort); } @Test public void testTcpTransport() throws IOException, InterruptedException { Thread.sleep(15); SocketChannel socketChannel = SocketChannel.open(); socketChannel.configureBlocking(true); SocketAddress sa = new InetSocketAddress(serverHost, serverPort); socketChannel.connect(sa); socketChannel.write(ByteBuffer.wrap(TEST_MESSAGE.getBytes())); ByteBuffer byteBuffer = ByteBuffer.allocate(65536); socketChannel.read(byteBuffer); byteBuffer.flip(); clientRecvedMessage = recvBuffer2String(byteBuffer); Assert.assertEquals(TEST_MESSAGE, clientRecvedMessage); } @After public void cleanup() { eventHub.stop(); } }