blob: dbdb3db38e77962f18391dc2d942530c728f9689 [file] [log] [blame]
pankajf49b45e2014-10-07 14:24:22 -07001package org.onlab.onos.foo;
2
3import java.io.IOException;
4import java.util.concurrent.ExecutionException;
pankajf49b45e2014-10-07 14:24:22 -07005import java.util.concurrent.TimeoutException;
6
7import org.onlab.metrics.MetricsComponent;
8import org.onlab.metrics.MetricsFeature;
9import org.onlab.metrics.MetricsManager;
10import org.onlab.netty.Endpoint;
11import org.onlab.netty.NettyMessagingService;
12import org.onlab.netty.Response;
13
14import com.codahale.metrics.Timer;
15
16// FIXME: Should be move out to test or app
17public final class SimpleNettyClient {
18 private SimpleNettyClient() {
19 }
20
21 public static void main(String[] args)
22 throws IOException, InterruptedException, ExecutionException,
23 TimeoutException {
24 try {
25 startStandalone(args);
26 } catch (Exception e) {
27 e.printStackTrace();
28 }
29
30 System.exit(0);
31 }
32 public static void startStandalone(String... args) throws Exception {
pankaj13373b52014-10-07 18:26:07 -070033 String host = args.length > 0 ? args[0] : "localhost";
34 int port = args.length > 1 ? Integer.parseInt(args[1]) : 8081;
35 int warmup = args.length > 2 ? Integer.parseInt(args[2]) : 1000;
36 int iterations = args.length > 3 ? Integer.parseInt(args[3]) : 50 * 100000;
pankajf49b45e2014-10-07 14:24:22 -070037 NettyMessagingService messaging = new TestNettyMessagingService(9081);
38 MetricsManager metrics = new MetricsManager();
39 messaging.activate();
40 metrics.activate();
pankaj366ce8b2014-10-07 17:18:37 -070041 MetricsFeature feature = new MetricsFeature("latency");
pankajf49b45e2014-10-07 14:24:22 -070042 MetricsComponent component = metrics.registerComponent("NettyMessaging");
pankaj366ce8b2014-10-07 17:18:37 -070043
pankajf49b45e2014-10-07 14:24:22 -070044 for (int i = 0; i < warmup; i++) {
pankaj13373b52014-10-07 18:26:07 -070045 messaging.sendAsync(new Endpoint(host, port), "simple", "Hello World".getBytes());
pankaj366ce8b2014-10-07 17:18:37 -070046 Response response = messaging
pankaj13373b52014-10-07 18:26:07 -070047 .sendAndReceive(new Endpoint(host, port), "echo",
pankaj366ce8b2014-10-07 17:18:37 -070048 "Hello World".getBytes());
49 }
50
pankaj4face402014-10-07 18:05:52 -070051 Timer sendAsyncTimer = metrics.createTimer(component, feature, "AsyncSender");
pankaj4face402014-10-07 18:05:52 -070052
pankaj366ce8b2014-10-07 17:18:37 -070053 for (int i = 0; i < iterations; i++) {
pankajf49b45e2014-10-07 14:24:22 -070054 Timer.Context context = sendAsyncTimer.time();
pankaj13373b52014-10-07 18:26:07 -070055 messaging.sendAsync(new Endpoint(host, port), "simple", "Hello World".getBytes());
pankajf49b45e2014-10-07 14:24:22 -070056 context.stop();
57 }
pankajf49b45e2014-10-07 14:24:22 -070058
pankajf0f80b22014-10-07 18:37:32 -070059 Timer sendAndReceiveTimer = metrics.createTimer(component, feature, "SendAndReceive");
pankajf49b45e2014-10-07 14:24:22 -070060 for (int i = 0; i < iterations; i++) {
61 Timer.Context context = sendAndReceiveTimer.time();
62 Response response = messaging
pankaj13373b52014-10-07 18:26:07 -070063 .sendAndReceive(new Endpoint(host, port), "echo",
pankajf49b45e2014-10-07 14:24:22 -070064 "Hello World".getBytes());
pankaj366ce8b2014-10-07 17:18:37 -070065 // System.out.println("Got back:" + new String(response.get(2, TimeUnit.SECONDS)));
pankajf49b45e2014-10-07 14:24:22 -070066 context.stop();
67 }
pankajf49b45e2014-10-07 14:24:22 -070068 }
69
70 public static class TestNettyMessagingService extends NettyMessagingService {
71 public TestNettyMessagingService(int port) throws Exception {
72 super(port);
73 }
74 }
75}