blob: caf3e08b2d88c69682da9da8669dc15fe5aa06b4 [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");
39 Timer sendAsyncTimer = metrics.createTimer(component, feature, "AsyncSender");
pankaj366ce8b2014-10-07 17:18:37 -070040
pankajf49b45e2014-10-07 14:24:22 -070041 final int warmup = 100;
42 for (int i = 0; i < warmup; i++) {
pankaj366ce8b2014-10-07 17:18:37 -070043 messaging.sendAsync(new Endpoint("localhost", 8081), "simple", "Hello World".getBytes());
44 Response response = messaging
45 .sendAndReceive(new Endpoint("localhost", 8081), "echo",
46 "Hello World".getBytes());
47 }
48
49 final int iterations = 10000;
50 for (int i = 0; i < iterations; i++) {
pankajf49b45e2014-10-07 14:24:22 -070051 Timer.Context context = sendAsyncTimer.time();
pankaj366ce8b2014-10-07 17:18:37 -070052 messaging.sendAsync(new Endpoint("localhost", 8081), "simple", "Hello World".getBytes());
pankajf49b45e2014-10-07 14:24:22 -070053 context.stop();
54 }
55 metrics.registerMetric(component, feature, "AsyncTimer", sendAsyncTimer);
56
57 Timer sendAndReceiveTimer = metrics.createTimer(component, feature, "SendAndReceive");
pankaj366ce8b2014-10-07 17:18:37 -070058
pankajf49b45e2014-10-07 14:24:22 -070059 for (int i = 0; i < iterations; i++) {
60 Timer.Context context = sendAndReceiveTimer.time();
61 Response response = messaging
pankaj366ce8b2014-10-07 17:18:37 -070062 .sendAndReceive(new Endpoint("localhost", 8081), "echo",
pankajf49b45e2014-10-07 14:24:22 -070063 "Hello World".getBytes());
pankaj366ce8b2014-10-07 17:18:37 -070064 // System.out.println("Got back:" + new String(response.get(2, TimeUnit.SECONDS)));
pankajf49b45e2014-10-07 14:24:22 -070065 context.stop();
66 }
pankaj366ce8b2014-10-07 17:18:37 -070067 metrics.registerMetric(component, feature, "PingPong", sendAndReceiveTimer);
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}