From 66ae27e80514ae975b30f98439cdda6e335cdb18 Mon Sep 17 00:00:00 2001 From: Vaci Koblizek Date: Mon, 28 Sep 2020 14:44:25 +0100 Subject: [PATCH] mock rpc connection --- .../org/capnproto/IncomingRpcMessage.java | 4 +- .../org/capnproto/OutgoingRpcMessage.java | 3 +- .../src/main/java/org/capnproto/RpcState.java | 8 ++- .../test/java/org/capnproto/RpcStateTest.java | 69 +++++++++++++++++++ 4 files changed, 81 insertions(+), 3 deletions(-) diff --git a/runtime/src/main/java/org/capnproto/IncomingRpcMessage.java b/runtime/src/main/java/org/capnproto/IncomingRpcMessage.java index c398297..60b4c5d 100644 --- a/runtime/src/main/java/org/capnproto/IncomingRpcMessage.java +++ b/runtime/src/main/java/org/capnproto/IncomingRpcMessage.java @@ -6,5 +6,7 @@ public interface IncomingRpcMessage { AnyPointer.Reader getBody(); - List getAttachedFds(); + default List getAttachedFds() { + return List.of(); + } } diff --git a/runtime/src/main/java/org/capnproto/OutgoingRpcMessage.java b/runtime/src/main/java/org/capnproto/OutgoingRpcMessage.java index 7b342d1..be744dc 100644 --- a/runtime/src/main/java/org/capnproto/OutgoingRpcMessage.java +++ b/runtime/src/main/java/org/capnproto/OutgoingRpcMessage.java @@ -6,7 +6,8 @@ public interface OutgoingRpcMessage { AnyPointer.Builder getBody(); - void setFds(List fds); + default void setFds(List fds) { + } void send(); diff --git a/runtime/src/main/java/org/capnproto/RpcState.java b/runtime/src/main/java/org/capnproto/RpcState.java index 1492253..5483194 100644 --- a/runtime/src/main/java/org/capnproto/RpcState.java +++ b/runtime/src/main/java/org/capnproto/RpcState.java @@ -83,7 +83,13 @@ final class RpcState { }; private final HashMap exportsByCap = new HashMap<>(); - + private final VatNetwork.Connection connection; + + + RpcState(VatNetwork.Connection connection) { + this.connection = connection; + } + void handleMessage(IncomingRpcMessage message) { var reader = message.getBody().getAs(RpcProtocol.Message.factory); diff --git a/runtime/src/test/java/org/capnproto/RpcStateTest.java b/runtime/src/test/java/org/capnproto/RpcStateTest.java index 935103c..72bf771 100644 --- a/runtime/src/test/java/org/capnproto/RpcStateTest.java +++ b/runtime/src/test/java/org/capnproto/RpcStateTest.java @@ -1,13 +1,81 @@ package org.capnproto; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; import org.junit.Test; +import java.util.ArrayDeque; +import java.util.Queue; +import java.util.concurrent.CompletableFuture; + import static org.junit.Assert.*; public class RpcStateTest { + class TestMessage implements IncomingRpcMessage { + + MessageBuilder builder = new MessageBuilder(); + + @Override + public AnyPointer.Reader getBody() { + return builder.getRoot(AnyPointer.factory).asReader(); + } + } + + class TestConnection implements VatNetwork.Connection { + + @Override + public OutgoingRpcMessage newOutgoingMessage(int firstSegmentWordSize) { + var message = new MessageBuilder(); + + return new OutgoingRpcMessage() { + @Override + public AnyPointer.Builder getBody() { + return message.getRoot(AnyPointer.factory); + } + + @Override + public void send() { + sent.add(this); + } + + @Override + public int sizeInWords() { + return 0; + } + }; + } + + @Override + public CompletableFuture receiveIncomingMessage() { + return null; + } + } + + TestConnection connection; + RpcState rpc; + final Queue sent = new ArrayDeque<>(); + + @Before + public void setUp() throws Exception { + connection = new TestConnection(); + rpc = new RpcState(connection); + } + + @After + public void tearDown() throws Exception { + connection = null; + rpc = null; + sent.clear(); + } + @Test public void handleUnimplemented() { + var msg = new TestMessage(); + msg.builder.getRoot(RpcProtocol.Message.factory).initUnimplemented(); + rpc.handleMessage(msg); + Assert.assertTrue(sent.isEmpty()); } @Test @@ -37,4 +105,5 @@ public class RpcStateTest { @Test public void handleDisembargo() { } + } \ No newline at end of file