pankaj

cleaned-up to give better help and javadoc

...@@ -4,8 +4,6 @@ import java.io.IOException; ...@@ -4,8 +4,6 @@ import java.io.IOException;
4 4
5 import org.onlab.netty.Message; 5 import org.onlab.netty.Message;
6 import org.onlab.netty.MessageHandler; 6 import org.onlab.netty.MessageHandler;
7 -import org.slf4j.Logger;
8 -import org.slf4j.LoggerFactory;
9 7
10 8
11 /** 9 /**
...@@ -13,11 +11,8 @@ import org.slf4j.LoggerFactory; ...@@ -13,11 +11,8 @@ import org.slf4j.LoggerFactory;
13 */ 11 */
14 public class NettyEchoHandler implements MessageHandler { 12 public class NettyEchoHandler implements MessageHandler {
15 13
16 - private final Logger log = LoggerFactory.getLogger(getClass());
17 -
18 @Override 14 @Override
19 public void handle(Message message) throws IOException { 15 public void handle(Message message) throws IOException {
20 - //log.info("Received message. Echoing it back to the sender.");
21 message.respond(message.payload()); 16 message.respond(message.payload());
22 } 17 }
23 } 18 }
......
1 +package org.onlab.onos.foo;
2 +
3 +import org.onlab.netty.Message;
4 +import org.onlab.netty.MessageHandler;
5 +import org.slf4j.Logger;
6 +import org.slf4j.LoggerFactory;
7 +
8 +/**
9 + * A MessageHandler that simply logs the information.
10 + */
11 +public class NettyNothingHandler implements MessageHandler {
12 +
13 + private final Logger log = LoggerFactory.getLogger(getClass());
14 +
15 + @Override
16 + public void handle(Message message) {
17 + // Do nothing
18 + }
19 +}
...@@ -2,6 +2,7 @@ package org.onlab.onos.foo; ...@@ -2,6 +2,7 @@ package org.onlab.onos.foo;
2 2
3 import java.io.IOException; 3 import java.io.IOException;
4 import java.util.concurrent.ExecutionException; 4 import java.util.concurrent.ExecutionException;
5 +import java.util.concurrent.TimeUnit;
5 import java.util.concurrent.TimeoutException; 6 import java.util.concurrent.TimeoutException;
6 7
7 import org.onlab.metrics.MetricsComponent; 8 import org.onlab.metrics.MetricsComponent;
...@@ -15,14 +16,29 @@ import org.slf4j.LoggerFactory; ...@@ -15,14 +16,29 @@ import org.slf4j.LoggerFactory;
15 16
16 import com.codahale.metrics.Timer; 17 import com.codahale.metrics.Timer;
17 18
19 +/**
20 + * The Simple netty client test.
21 + */
18 // FIXME: Should be move out to test or app 22 // FIXME: Should be move out to test or app
19 public final class SimpleNettyClient { 23 public final class SimpleNettyClient {
20 24
21 private static Logger log = LoggerFactory.getLogger(SimpleNettyClient.class); 25 private static Logger log = LoggerFactory.getLogger(SimpleNettyClient.class);
22 26
27 + static NettyMessagingService messaging;
28 + static MetricsManager metrics;
29 +
23 private SimpleNettyClient() { 30 private SimpleNettyClient() {
24 } 31 }
25 32
33 + /**
34 + * The entry point of application.
35 + *
36 + * @param args the input arguments
37 + * @throws IOException the iO exception
38 + * @throws InterruptedException the interrupted exception
39 + * @throws ExecutionException the execution exception
40 + * @throws TimeoutException the timeout exception
41 + */
26 public static void main(String[] args) 42 public static void main(String[] args)
27 throws IOException, InterruptedException, ExecutionException, 43 throws IOException, InterruptedException, ExecutionException,
28 TimeoutException { 44 TimeoutException {
...@@ -34,13 +50,20 @@ private static Logger log = LoggerFactory.getLogger(SimpleNettyClient.class); ...@@ -34,13 +50,20 @@ private static Logger log = LoggerFactory.getLogger(SimpleNettyClient.class);
34 50
35 System.exit(0); 51 System.exit(0);
36 } 52 }
53 +
54 + /**
55 + * Start standalone.
56 + *
57 + * @param args the args
58 + * @throws Exception the exception
59 + */
37 public static void startStandalone(String[] args) throws Exception { 60 public static void startStandalone(String[] args) throws Exception {
38 String host = args.length > 0 ? args[0] : "localhost"; 61 String host = args.length > 0 ? args[0] : "localhost";
39 int port = args.length > 1 ? Integer.parseInt(args[1]) : 8081; 62 int port = args.length > 1 ? Integer.parseInt(args[1]) : 8081;
40 int warmup = args.length > 2 ? Integer.parseInt(args[2]) : 1000; 63 int warmup = args.length > 2 ? Integer.parseInt(args[2]) : 1000;
41 int iterations = args.length > 3 ? Integer.parseInt(args[3]) : 50 * 100000; 64 int iterations = args.length > 3 ? Integer.parseInt(args[3]) : 50 * 100000;
42 - NettyMessagingService messaging = new TestNettyMessagingService(9081); 65 + messaging = new TestNettyMessagingService(9081);
43 - MetricsManager metrics = new MetricsManager(); 66 + metrics = new MetricsManager();
44 Endpoint endpoint = new Endpoint(host, port); 67 Endpoint endpoint = new Endpoint(host, port);
45 messaging.activate(); 68 messaging.activate();
46 metrics.activate(); 69 metrics.activate();
...@@ -53,6 +76,7 @@ private static Logger log = LoggerFactory.getLogger(SimpleNettyClient.class); ...@@ -53,6 +76,7 @@ private static Logger log = LoggerFactory.getLogger(SimpleNettyClient.class);
53 Response response = messaging 76 Response response = messaging
54 .sendAndReceive(endpoint, "echo", 77 .sendAndReceive(endpoint, "echo",
55 "Hello World".getBytes()); 78 "Hello World".getBytes());
79 + response.get(100000, TimeUnit.MILLISECONDS);
56 } 80 }
57 81
58 log.info("measuring async sender"); 82 log.info("measuring async sender");
...@@ -64,19 +88,47 @@ private static Logger log = LoggerFactory.getLogger(SimpleNettyClient.class); ...@@ -64,19 +88,47 @@ private static Logger log = LoggerFactory.getLogger(SimpleNettyClient.class);
64 context.stop(); 88 context.stop();
65 } 89 }
66 90
91 + log.info("measuring round-trip send & receive");
67 Timer sendAndReceiveTimer = metrics.createTimer(component, feature, "SendAndReceive"); 92 Timer sendAndReceiveTimer = metrics.createTimer(component, feature, "SendAndReceive");
93 + int timeouts = 0;
94 +
68 for (int i = 0; i < iterations; i++) { 95 for (int i = 0; i < iterations; i++) {
96 + Response response;
69 Timer.Context context = sendAndReceiveTimer.time(); 97 Timer.Context context = sendAndReceiveTimer.time();
70 - Response response = messaging 98 + try {
99 + response = messaging
71 .sendAndReceive(endpoint, "echo", 100 .sendAndReceive(endpoint, "echo",
72 "Hello World".getBytes()); 101 "Hello World".getBytes());
73 - // System.out.println("Got back:" + new String(response.get(2, TimeUnit.SECONDS))); 102 + response.get(10000, TimeUnit.MILLISECONDS);
103 + } catch (TimeoutException e) {
104 + timeouts++;
105 + log.info("timeout:" + timeouts + " at iteration:" + i);
106 + } finally {
74 context.stop(); 107 context.stop();
75 } 108 }
109 + // System.out.println("Got back:" + new String(response.get(2, TimeUnit.SECONDS)));
110 + }
111 + }
112 +
113 + public static void stop() {
114 + try {
115 + messaging.deactivate();
76 metrics.deactivate(); 116 metrics.deactivate();
117 + } catch (Exception e) {
118 + log.info("Unable to stop client %s", e);
119 + }
77 } 120 }
78 121
122 + /**
123 + * The type Test netty messaging service.
124 + */
79 public static class TestNettyMessagingService extends NettyMessagingService { 125 public static class TestNettyMessagingService extends NettyMessagingService {
126 + /**
127 + * Instantiates a new Test netty messaging service.
128 + *
129 + * @param port the port
130 + * @throws Exception the exception
131 + */
80 public TestNettyMessagingService(int port) throws Exception { 132 public TestNettyMessagingService(int port) throws Exception {
81 super(port); 133 super(port);
82 } 134 }
......
1 package org.onlab.onos.foo; 1 package org.onlab.onos.foo;
2 2
3 import static org.onlab.onos.foo.SimpleNettyClient.startStandalone; 3 import static org.onlab.onos.foo.SimpleNettyClient.startStandalone;
4 +import static org.onlab.onos.foo.SimpleNettyClient.stop;
4 5
5 import org.apache.karaf.shell.commands.Argument; 6 import org.apache.karaf.shell.commands.Argument;
6 import org.apache.karaf.shell.commands.Command; 7 import org.apache.karaf.shell.commands.Command;
...@@ -24,11 +25,11 @@ public class SimpleNettyClientCommand extends AbstractShellCommand { ...@@ -24,11 +25,11 @@ public class SimpleNettyClientCommand extends AbstractShellCommand {
24 25
25 @Argument(index = 2, name = "warmupCount", description = "Warm-up count", 26 @Argument(index = 2, name = "warmupCount", description = "Warm-up count",
26 required = false, multiValued = false) 27 required = false, multiValued = false)
27 - String warmupCount = "1000"; 28 + String warmupCount = "10000";
28 29
29 @Argument(index = 3, name = "messageCount", description = "Message count", 30 @Argument(index = 3, name = "messageCount", description = "Message count",
30 required = false, multiValued = false) 31 required = false, multiValued = false)
31 - String messageCount = "100000"; 32 + String messageCount = "1000000";
32 33
33 @Override 34 @Override
34 protected void execute() { 35 protected void execute() {
...@@ -37,5 +38,6 @@ public class SimpleNettyClientCommand extends AbstractShellCommand { ...@@ -37,5 +38,6 @@ public class SimpleNettyClientCommand extends AbstractShellCommand {
37 } catch (Exception e) { 38 } catch (Exception e) {
38 error("Unable to start client %s", e); 39 error("Unable to start client %s", e);
39 } 40 }
41 + stop();
40 } 42 }
41 } 43 }
......
...@@ -12,17 +12,30 @@ import org.slf4j.LoggerFactory; ...@@ -12,17 +12,30 @@ import org.slf4j.LoggerFactory;
12 12
13 private SimpleNettyServer() {} 13 private SimpleNettyServer() {}
14 14
15 + /**
16 + * The entry point of application.
17 + *
18 + * @param args the input arguments
19 + * @throws Exception the exception
20 + */
15 public static void main(String... args) throws Exception { 21 public static void main(String... args) throws Exception {
16 startStandalone(args); 22 startStandalone(args);
17 System.exit(0); 23 System.exit(0);
18 } 24 }
19 25
26 + /**
27 + * Start standalone server.
28 + *
29 + * @param args the args
30 + * @throws Exception the exception
31 + */
20 public static void startStandalone(String[] args) throws Exception { 32 public static void startStandalone(String[] args) throws Exception {
21 int port = args.length > 0 ? Integer.parseInt(args[0]) : 8081; 33 int port = args.length > 0 ? Integer.parseInt(args[0]) : 8081;
22 NettyMessagingService server = new NettyMessagingService(port); 34 NettyMessagingService server = new NettyMessagingService(port);
23 server.activate(); 35 server.activate();
24 - server.registerHandler("simple", new NettyLoggingHandler()); 36 + server.registerHandler("simple", new NettyNothingHandler());
25 server.registerHandler("echo", new NettyEchoHandler()); 37 server.registerHandler("echo", new NettyEchoHandler());
38 + log.info("Netty Server server on port " + port);
26 } 39 }
27 } 40 }
28 41
......