Package test

Source Code of test.StringLinePerformance$StatTask

package test;

import com.firefly.net.Client;
import com.firefly.net.Session;
import com.firefly.net.tcp.TcpClient;
import com.firefly.utils.log.Log;
import com.firefly.utils.log.LogFactory;
import java.util.concurrent.*;

public class StringLinePerformance {
  private static Log log = LogFactory.getInstance().getLog("firefly-system");
    public static final int LOOP = 2000;
    public static final int THREAD = 500;

    public static class ClientTask implements Runnable {

        private final Client client;
        private final CyclicBarrier barrier;

        public Session getSession() {
            return client.connect("10.147.22.162", 9900);
        }

        @Override
        public void run() {
            Session session = getSession();
            for (int i = 0; i < LOOP; i++) {
                String message = "hello world! " + session.getSessionId();
                session.encode(message);
                String ret = (String) session.getResult(1000);
                log.debug("rev: {}", ret);
            }
            session.close(false);
            log.debug("session {} complete", session.getSessionId());

            try {
                barrier.await();
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (BrokenBarrierException e) {
                e.printStackTrace();
            }

        }

        public ClientTask(Client client, CyclicBarrier barrier) {
            this.client = client;
            this.barrier = barrier;
        }
    }

    public static class StatTask implements Runnable {

        private long start;

        public StatTask() {
            this.start = System.currentTimeMillis();
        }

        @Override
        public void run() {
            long time = System.currentTimeMillis() - start;
            log.debug("start time: {}", start);
            log.debug("total time: {}", time);
            int reqs = LOOP * THREAD;

            double throughput = (reqs / (double) time) * 1000;
            log.info("throughput: {}", throughput);
        }

    }

    public static void main(String[] args) {
        ExecutorService executorService = Executors.newFixedThreadPool(THREAD);
        final StringLineClientHandler handler = new StringLineClientHandler();
        final Client client = new TcpClient(new StringLineDecoder(),
                new StringLineEncoder(), handler);

        final CyclicBarrier barrier = new CyclicBarrier(THREAD, new StatTask());

        for (int i = 0; i < THREAD; i++) {
            executorService.submit(new ClientTask(client, barrier));
        }
    }
}
TOP

Related Classes of test.StringLinePerformance$StatTask

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.