pankaj

instrumented the simple client to register metrics

...@@ -2,16 +2,43 @@ package org.onlab.netty; ...@@ -2,16 +2,43 @@ package org.onlab.netty;
2 2
3 import java.util.concurrent.TimeUnit; 3 import java.util.concurrent.TimeUnit;
4 4
5 +import org.onlab.metrics.MetricsComponent;
6 +import org.onlab.metrics.MetricsFeature;
7 +import org.onlab.metrics.MetricsManager;
8 +
9 +import com.codahale.metrics.Timer;
10 +
5 public final class SimpleClient { 11 public final class SimpleClient {
6 private SimpleClient() {} 12 private SimpleClient() {}
7 13
8 public static void main(String... args) throws Exception { 14 public static void main(String... args) throws Exception {
9 NettyMessagingService messaging = new TestNettyMessagingService(9081); 15 NettyMessagingService messaging = new TestNettyMessagingService(9081);
16 + MetricsManager metrics = new MetricsManager();
10 messaging.activate(); 17 messaging.activate();
18 + metrics.activate();
19 + MetricsFeature feature = new MetricsFeature("timers");
20 + MetricsComponent component = metrics.registerComponent("NettyMessaging");
21 + Timer sendAsyncTimer = metrics.createTimer(component, feature, "AsyncSender");
22 + final int warmup = 100;
23 + for (int i = 0; i < warmup; i++) {
24 + Timer.Context context = sendAsyncTimer.time();
25 + messaging.sendAsync(new Endpoint("localhost", 8080), "simple", "Hello World");
26 + context.stop();
27 + }
28 + metrics.registerMetric(component, feature, "AsyncTimer", sendAsyncTimer);
29 +
30 + Timer sendAndRecieveTimer = metrics.createTimer(component, feature, "SendAndReceive");
31 + final int iterations = 1000000;
32 + for (int i=0; i < iterations; i++) {
33 + Timer.Context context = sendAndRecieveTimer.time();
34 + Response<String> response = messaging
35 + .sendAndReceive(new Endpoint("localhost", 8080), "echo",
36 + "Hello World");
37 + System.out.println("Got back:" + response.get(2, TimeUnit.SECONDS));
38 + context.stop();
39 + }
40 + metrics.registerMetric(component, feature, "AsyncTimer", sendAndRecieveTimer);
11 41
12 - messaging.sendAsync(new Endpoint("localhost", 8080), "simple", "Hello World");
13 - Response<String> response = messaging.sendAndReceive(new Endpoint("localhost", 8080), "echo", "Hello World");
14 - System.out.println("Got back:" + response.get(2, TimeUnit.SECONDS));
15 } 42 }
16 43
17 public static class TestNettyMessagingService extends NettyMessagingService { 44 public static class TestNettyMessagingService extends NettyMessagingService {
......