blob: a39743409dd3577140b180c41f2f2b0daf540351 [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 {
33 NettyMessagingService messaging = new TestNettyMessagingService(9081);
34 MetricsManager metrics = new MetricsManager();
35 messaging.activate();
36 metrics.activate();
pankaj366ce8b2014-10-07 17:18:37 -070037 MetricsFeature feature = new MetricsFeature("latency");
pankajf49b45e2014-10-07 14:24:22 -070038 MetricsComponent component = metrics.registerComponent("NettyMessaging");
pankaj366ce8b2014-10-07 17:18:37 -070039
pankaj4face402014-10-07 18:05:52 -070040 final int warmup = 10000;
pankajf49b45e2014-10-07 14:24:22 -070041 for (int i = 0; i < warmup; i++) {
pankaj366ce8b2014-10-07 17:18:37 -070042 messaging.sendAsync(new Endpoint("localhost", 8081), "simple", "Hello World".getBytes());
43 Response response = messaging
44 .sendAndReceive(new Endpoint("localhost", 8081), "echo",
45 "Hello World".getBytes());
46 }
47
pankaj4face402014-10-07 18:05:52 -070048 Timer sendAsyncTimer = metrics.createTimer(component, feature, "AsyncSender");
49 Timer sendAndReceiveTimer = metrics.createTimer(component, feature, "SendAndReceive");
50
51 final int iterations = 10000000;
pankaj366ce8b2014-10-07 17:18:37 -070052 for (int i = 0; i < iterations; i++) {
pankajf49b45e2014-10-07 14:24:22 -070053 Timer.Context context = sendAsyncTimer.time();
pankaj366ce8b2014-10-07 17:18:37 -070054 messaging.sendAsync(new Endpoint("localhost", 8081), "simple", "Hello World".getBytes());
pankajf49b45e2014-10-07 14:24:22 -070055 context.stop();
56 }
pankajf49b45e2014-10-07 14:24:22 -070057
pankajf49b45e2014-10-07 14:24:22 -070058 for (int i = 0; i < iterations; i++) {
59 Timer.Context context = sendAndReceiveTimer.time();
60 Response response = messaging
pankaj366ce8b2014-10-07 17:18:37 -070061 .sendAndReceive(new Endpoint("localhost", 8081), "echo",
pankajf49b45e2014-10-07 14:24:22 -070062 "Hello World".getBytes());
pankaj366ce8b2014-10-07 17:18:37 -070063 // System.out.println("Got back:" + new String(response.get(2, TimeUnit.SECONDS)));
pankajf49b45e2014-10-07 14:24:22 -070064 context.stop();
65 }
pankajf49b45e2014-10-07 14:24:22 -070066 }
67
68 public static class TestNettyMessagingService extends NettyMessagingService {
69 public TestNettyMessagingService(int port) throws Exception {
70 super(port);
71 }
72 }
73}