Package test.net.tcp

Source Code of test.net.tcp.TestTcpClientAndServer

package test.net.tcp;

import com.firefly.net.Client;
import com.firefly.net.Config;
import com.firefly.net.Server;
import com.firefly.net.Session;
import com.firefly.net.tcp.TcpClient;
import com.firefly.net.tcp.TcpServer;
import com.firefly.utils.log.Log;
import com.firefly.utils.log.LogFactory;
import org.junit.Assert;
import org.junit.Test;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import static org.hamcrest.Matchers.is;

public class TestTcpClientAndServer {
  private static Log log = LogFactory.getInstance().getLog("firefly-system");

    @Test
    public void testHello() {
        Server server = new TcpServer();
        Config config = new Config();
        config.setHandleThreads(-1);
        config.setDecoder(new StringLineDecoder());
        config.setEncoder(new StringLineEncoder());
        config.setHandler(new SendFileHandler());
        server.setConfig(config);
        server.start("localhost", 9900);

        final int LOOP = 50;
        ExecutorService executorService = Executors.newFixedThreadPool(LOOP);
        final Client client = new TcpClient(new StringLineDecoder(),
                new StringLineEncoder(), new StringLineClientHandler());


        for (int i = 0; i < LOOP; i++) {
            executorService.submit(new Runnable() {
                @Override
                public void run() {
                    final Session session = client.connect("localhost", 9900);
                    Assert.assertThat(session.isOpen(), is(true));

                    session.encode("hello client");
                    log.debug("main thread {}", Thread.currentThread().toString());
                    String ret = (String) session.getResult(1000);
                    log.debug("receive[" + ret + "]");
                    Assert.assertThat(ret, is("hello client"));

                    session.encode("hello multithread test");
                    ret = (String) session.getResult(1000);
                    Assert.assertThat(ret, is("hello multithread test"));

                    session.encode("getfile");
                    ret = (String) session.getResult(1000);
                    log.debug("receive[" + ret + "]");
                    Assert.assertThat(ret, is("zero copy file transfers"));

                    session.encode("quit");
                    ret = (String) session.getResult(1000);
                    log.debug("receive[" + ret + "]");
                    Assert.assertThat(ret, is("bye!"));
                    log.debug("complete session {}", session.getSessionId());
                }
            });

        }

        final Session session = client.connect("localhost", 9900);

        session.encode("hello client 2");
        log.debug("main thread {}", Thread.currentThread().toString());
        String ret = (String) session.getResult(1000);
        log.debug("receive[" + ret + "]");
        Assert.assertThat(ret, is("hello client 2"));

        session.encode("quit");
        ret = (String) session.getResult(1000);
        log.debug("receive[" + ret + "]");
        Assert.assertThat(ret, is("bye!"));
        log.debug("complete session {}", session.getSessionId());

//        server.shutdown();
//        client.shutdown();
    }
}
TOP

Related Classes of test.net.tcp.TestTcpClientAndServer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.