@Test
public void testServer() throws Exception {
MockChannel mockChannel = new MockChannel();
Map<String, Service> services = new HashMap<String, Service>();
final SudokuResponse sudokuResponse = SudokuResponse.newBuilder()
.setSolved(true)
.setCheckerboard("98765")
.build();
Interface mockImpl = new Interface() {
@Override
public void solve(RpcController controller, SudokuRequest request,
RpcCallback<SudokuResponse> done) {
gotRequest = request;
done.run(sudokuResponse);
}
};
services.put(SudokuService.getDescriptor().getName(),
SudokuService.newReflectiveService(mockImpl));
RpcChannel channel = new RpcChannel(mockChannel);
channel.setServiceMap(services);
SudokuRequest sudokuRequest = SudokuRequest.newBuilder().setCheckerboard("001010").build();
RpcMessage request = RpcMessage.newBuilder()
.setType(MessageType.REQUEST)
.setId(2)
.setService(SudokuService.getDescriptor().getName())
.setMethod("Solve")
.setRequest(sudokuRequest.toByteString())
.build();
channel.messageReceived(null, new UpstreamMessageEvent(mockChannel, request, null));
assertEquals(sudokuRequest, gotRequest);
RpcMessage response = RpcMessage.newBuilder()
.setType(MessageType.RESPONSE)
.setId(2)
.setResponse(sudokuResponse.toByteString())
.build();
assertEquals(response, mockChannel.message);
}