mock rpc connection
This commit is contained in:
parent
7ee0a60b5e
commit
66ae27e805
4 changed files with 81 additions and 3 deletions
|
@ -6,5 +6,7 @@ public interface IncomingRpcMessage {
|
|||
|
||||
AnyPointer.Reader getBody();
|
||||
|
||||
List<Integer> getAttachedFds();
|
||||
default List<Integer> getAttachedFds() {
|
||||
return List.of();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,8 @@ public interface OutgoingRpcMessage {
|
|||
|
||||
AnyPointer.Builder getBody();
|
||||
|
||||
void setFds(List<Integer> fds);
|
||||
default void setFds(List<Integer> fds) {
|
||||
}
|
||||
|
||||
void send();
|
||||
|
||||
|
|
|
@ -83,6 +83,12 @@ final class RpcState {
|
|||
};
|
||||
|
||||
private final HashMap<ClientHook, Integer> 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);
|
||||
|
|
|
@ -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<IncomingRpcMessage> receiveIncomingMessage() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
TestConnection connection;
|
||||
RpcState rpc;
|
||||
final Queue<OutgoingRpcMessage> 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() {
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue