blob: 494d410fb19d6f9b267b391bdd56d54c023482f1 [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
Yuta HIGUCHIcdda17f2014-10-06 23:35:19 -070011// FIXME: Should be move out to test or app
Madan Jampaniab6d3112014-10-02 16:30:14 -070012public final class SimpleClient {
tomfa70a292014-10-02 21:28:31 -070013 private SimpleClient() {
14 }
Madan Jampaniab6d3112014-10-02 16:30:14 -070015
16 public static void main(String... args) throws Exception {
17 NettyMessagingService messaging = new TestNettyMessagingService(9081);
pankaj5eb26c62014-10-02 18:08:48 -070018 MetricsManager metrics = new MetricsManager();
Madan Jampaniab6d3112014-10-02 16:30:14 -070019 messaging.activate();
pankaj5eb26c62014-10-02 18:08:48 -070020 metrics.activate();
21 MetricsFeature feature = new MetricsFeature("timers");
22 MetricsComponent component = metrics.registerComponent("NettyMessaging");
23 Timer sendAsyncTimer = metrics.createTimer(component, feature, "AsyncSender");
24 final int warmup = 100;
25 for (int i = 0; i < warmup; i++) {
26 Timer.Context context = sendAsyncTimer.time();
27 messaging.sendAsync(new Endpoint("localhost", 8080), "simple", "Hello World");
28 context.stop();
29 }
30 metrics.registerMetric(component, feature, "AsyncTimer", sendAsyncTimer);
Madan Jampaniab6d3112014-10-02 16:30:14 -070031
pankaj0d1feb22014-10-03 07:07:06 -070032 Timer sendAndReceiveTimer = metrics.createTimer(component, feature, "SendAndReceive");
pankaj5eb26c62014-10-02 18:08:48 -070033 final int iterations = 1000000;
tomfa70a292014-10-02 21:28:31 -070034 for (int i = 0; i < iterations; i++) {
pankaj0d1feb22014-10-03 07:07:06 -070035 Timer.Context context = sendAndReceiveTimer.time();
pankaj5eb26c62014-10-02 18:08:48 -070036 Response<String> response = messaging
37 .sendAndReceive(new Endpoint("localhost", 8080), "echo",
tomfa70a292014-10-02 21:28:31 -070038 "Hello World");
pankaj5eb26c62014-10-02 18:08:48 -070039 System.out.println("Got back:" + response.get(2, TimeUnit.SECONDS));
40 context.stop();
41 }
pankaj0d1feb22014-10-03 07:07:06 -070042 metrics.registerMetric(component, feature, "AsyncTimer", sendAndReceiveTimer);
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);
Yuta HIGUCHI993d7aa2014-10-06 22:54:38 -070048 PayloadSerializer payloadSerializer = new KryoSerializer();
49 this.payloadSerializer = payloadSerializer;
Madan Jampaniab6d3112014-10-02 16:30:14 -070050 }
51 }
52}