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();
|
AnyPointer.Reader getBody();
|
||||||
|
|
||||||
List<Integer> getAttachedFds();
|
default List<Integer> getAttachedFds() {
|
||||||
|
return List.of();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,8 @@ public interface OutgoingRpcMessage {
|
||||||
|
|
||||||
AnyPointer.Builder getBody();
|
AnyPointer.Builder getBody();
|
||||||
|
|
||||||
void setFds(List<Integer> fds);
|
default void setFds(List<Integer> fds) {
|
||||||
|
}
|
||||||
|
|
||||||
void send();
|
void send();
|
||||||
|
|
||||||
|
|
|
@ -83,6 +83,12 @@ final class RpcState {
|
||||||
};
|
};
|
||||||
|
|
||||||
private final HashMap<ClientHook, Integer> exportsByCap = new HashMap<>();
|
private final HashMap<ClientHook, Integer> exportsByCap = new HashMap<>();
|
||||||
|
private final VatNetwork.Connection connection;
|
||||||
|
|
||||||
|
|
||||||
|
RpcState(VatNetwork.Connection connection) {
|
||||||
|
this.connection = connection;
|
||||||
|
}
|
||||||
|
|
||||||
void handleMessage(IncomingRpcMessage message) {
|
void handleMessage(IncomingRpcMessage message) {
|
||||||
var reader = message.getBody().getAs(RpcProtocol.Message.factory);
|
var reader = message.getBody().getAs(RpcProtocol.Message.factory);
|
||||||
|
|
|
@ -1,13 +1,81 @@
|
||||||
package org.capnproto;
|
package org.capnproto;
|
||||||
|
|
||||||
|
import org.junit.After;
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.ArrayDeque;
|
||||||
|
import java.util.Queue;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
public class RpcStateTest {
|
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
|
@Test
|
||||||
public void handleUnimplemented() {
|
public void handleUnimplemented() {
|
||||||
|
var msg = new TestMessage();
|
||||||
|
msg.builder.getRoot(RpcProtocol.Message.factory).initUnimplemented();
|
||||||
|
rpc.handleMessage(msg);
|
||||||
|
Assert.assertTrue(sent.isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -37,4 +105,5 @@ public class RpcStateTest {
|
||||||
@Test
|
@Test
|
||||||
public void handleDisembargo() {
|
public void handleDisembargo() {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in a new issue