@Override public void ping(Proto.Ping request, StreamObserver<Proto.Pong> responseObserver) { String url = request.getPeer().getUrl(); Peer from = Peer.valueOf(url); log.debug("Received " + request.getPing()); String reply = discoveryConsumer.play(from, request.getPing()); Proto.Pong pong = Proto.Pong.newBuilder().setPong(reply).build(); responseObserver.onNext(pong); responseObserver.onCompleted(); }
@Override public void findPeers(Proto.RequestPeer request, StreamObserver<Proto.PeerList> responseObserver) { Peer peer = Peer.valueOf(request.getPubKey(), request.getIp(), request.getPort()); for (Proto.BestBlock bestBlock : request.getBestBlocksList()) { BestBlock bb = toBestBlock(bestBlock); peer.updateBestBlock(bb); } List<String> list = discoveryConsumer.findPeers(peer); Proto.PeerList.Builder peerListBuilder = Proto.PeerList.newBuilder(); for (String url : list) { peerListBuilder.addPeers(Proto.PeerInfo.newBuilder().setUrl(url).build()); } Proto.PeerList peerList = peerListBuilder.build(); responseObserver.onNext(peerList); responseObserver.onCompleted(); discoveryConsumer.afterFindPeersResponse(); }
@Test public void play() { PeerGrpc.PeerBlockingStub blockingStub = PeerGrpc.newBlockingStub( grpcServerRule.getChannel()); Peer requestPeer = Peer.valueOf("ynode://75bff16c@127.0.0.1:32918"); when(discoveryConsumerMock.play(requestPeer, "Ping")).thenReturn("Pong"); Proto.PeerInfo peerInfo = Proto.PeerInfo.newBuilder() .setUrl(requestPeer.getYnodeUri()) .build(); Proto.Ping ping = Proto.Ping.newBuilder().setPing("Ping").setPeer(peerInfo).build(); Proto.Pong pong = blockingStub.ping(ping); assertEquals("Pong", pong.getPong()); }