blob: 7a6cee2d3c5c7e3b6f8d7ea70164a2a101bdd189 [file] [log] [blame]
Madan Jampaniab6d3112014-10-02 16:30:14 -07001package org.onlab.netty;
2
3import java.util.concurrent.TimeUnit;
4
pankaj5eb26c62014-10-02 18:08:48 -07005import org.onlab.metrics.MetricsComponent;
6import org.onlab.metrics.MetricsFeature;
7import org.onlab.metrics.MetricsManager;
8
9import com.codahale.metrics.Timer;
10
Madan Jampaniab6d3112014-10-02 16:30:14 -070011public final class SimpleClient {
tomfa70a292014-10-02 21:28:31 -070012 private SimpleClient() {
13 }
Madan Jampaniab6d3112014-10-02 16:30:14 -070014
15 public static void main(String... args) throws Exception {
16 NettyMessagingService messaging = new TestNettyMessagingService(9081);
pankaj5eb26c62014-10-02 18:08:48 -070017 MetricsManager metrics = new MetricsManager();
Madan Jampaniab6d3112014-10-02 16:30:14 -070018 messaging.activate();
pankaj5eb26c62014-10-02 18:08:48 -070019 metrics.activate();
20 MetricsFeature feature = new MetricsFeature("timers");
21 MetricsComponent component = metrics.registerComponent("NettyMessaging");
22 Timer sendAsyncTimer = metrics.createTimer(component, feature, "AsyncSender");
23 final int warmup = 100;
24 for (int i = 0; i < warmup; i++) {
25 Timer.Context context = sendAsyncTimer.time();
26 messaging.sendAsync(new Endpoint("localhost", 8080), "simple", "Hello World");
27 context.stop();
28 }
29 metrics.registerMetric(component, feature, "AsyncTimer", sendAsyncTimer);
Madan Jampaniab6d3112014-10-02 16:30:14 -070030
pankaj5eb26c62014-10-02 18:08:48 -070031 Timer sendAndRecieveTimer = metrics.createTimer(component, feature, "SendAndReceive");
32 final int iterations = 1000000;
tomfa70a292014-10-02 21:28:31 -070033 for (int i = 0; i < iterations; i++) {
pankaj5eb26c62014-10-02 18:08:48 -070034 Timer.Context context = sendAndRecieveTimer.time();
35 Response<String> response = messaging
36 .sendAndReceive(new Endpoint("localhost", 8080), "echo",
tomfa70a292014-10-02 21:28:31 -070037 "Hello World");
pankaj5eb26c62014-10-02 18:08:48 -070038 System.out.println("Got back:" + response.get(2, TimeUnit.SECONDS));
39 context.stop();
40 }
41 metrics.registerMetric(component, feature, "AsyncTimer", sendAndRecieveTimer);
42
Madan Jampaniab6d3112014-10-02 16:30:14 -070043 }
44
45 public static class TestNettyMessagingService extends NettyMessagingService {
46 public TestNettyMessagingService(int port) throws Exception {
47 super(port);
48 Serializer serializer = new KryoSerializer();
49 this.serializer = serializer;
50 }
51 }
52}