Showing
3 changed files
with
37 additions
and
2 deletions
| ... | @@ -8,12 +8,16 @@ import java.io.IOException; | ... | @@ -8,12 +8,16 @@ import java.io.IOException; |
| 8 | */ | 8 | */ |
| 9 | public final class InternalMessage implements Message { | 9 | public final class InternalMessage implements Message { |
| 10 | 10 | ||
| 11 | + public static final String REPLY_MESSAGE_TYPE = "NETTY_MESSAGIG_REQUEST_REPLY"; | ||
| 12 | + | ||
| 11 | private long id; | 13 | private long id; |
| 12 | private Endpoint sender; | 14 | private Endpoint sender; |
| 13 | private String type; | 15 | private String type; |
| 14 | private Object payload; | 16 | private Object payload; |
| 17 | + | ||
| 15 | private transient NettyMessagingService messagingService; | 18 | private transient NettyMessagingService messagingService; |
| 16 | - public static final String REPLY_MESSAGE_TYPE = "NETTY_MESSAGIG_REQUEST_REPLY"; | 19 | + // TODO: add transient payload serializer or change payload type to |
| 20 | + // byte[], ByteBuffer, etc. | ||
| 17 | 21 | ||
| 18 | // Must be created using the Builder. | 22 | // Must be created using the Builder. |
| 19 | private InternalMessage() {} | 23 | private InternalMessage() {} | ... | ... |
| ... | @@ -241,8 +241,9 @@ public class NettyMessagingService implements MessagingService { | ... | @@ -241,8 +241,9 @@ public class NettyMessagingService implements MessagingService { |
| 241 | NettyMessagingService.this.responseFutures.getIfPresent(message.id()); | 241 | NettyMessagingService.this.responseFutures.getIfPresent(message.id()); |
| 242 | if (futureResponse != null) { | 242 | if (futureResponse != null) { |
| 243 | futureResponse.setResponse(message.payload()); | 243 | futureResponse.setResponse(message.payload()); |
| 244 | + } else { | ||
| 245 | + log.warn("Received a reply. But was unable to locate the request handle"); | ||
| 244 | } | 246 | } |
| 245 | - log.warn("Received a reply. But was unable to locate the request handle"); | ||
| 246 | } finally { | 247 | } finally { |
| 247 | NettyMessagingService.this.responseFutures.invalidate(message.id()); | 248 | NettyMessagingService.this.responseFutures.invalidate(message.id()); |
| 248 | } | 249 | } | ... | ... |
| 1 | +package org.onlab.netty; | ||
| 2 | + | ||
| 3 | +import java.util.concurrent.TimeUnit; | ||
| 4 | + | ||
| 5 | +import org.junit.Assert; | ||
| 6 | +import org.junit.Test; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | + * Simple ping-pong test that exercises NettyMessagingService. | ||
| 10 | + */ | ||
| 11 | +public class PingPongTest { | ||
| 12 | + | ||
| 13 | + @Test | ||
| 14 | + public void testPingPong() throws Exception { | ||
| 15 | + NettyMessagingService pinger = new NettyMessagingService(8085); | ||
| 16 | + NettyMessagingService ponger = new NettyMessagingService(9086); | ||
| 17 | + try { | ||
| 18 | + pinger.activate(); | ||
| 19 | + ponger.activate(); | ||
| 20 | + pinger.setPayloadSerializer(new KryoSerializer()); | ||
| 21 | + ponger.setPayloadSerializer(new KryoSerializer()); | ||
| 22 | + ponger.registerHandler("echo", new EchoHandler()); | ||
| 23 | + Response<String> response = pinger.sendAndReceive(new Endpoint("localhost", 9086), "echo", "hello"); | ||
| 24 | + Assert.assertEquals("hello", response.get(10000, TimeUnit.MILLISECONDS)); | ||
| 25 | + } finally { | ||
| 26 | + pinger.deactivate(); | ||
| 27 | + ponger.deactivate(); | ||
| 28 | + } | ||
| 29 | + } | ||
| 30 | +} |
-
Please register or login to post a comment