RaftNetworkClient implements RPCSender { @Override public void requestVoteReply(String server, long term, boolean voteGranted) throws RPCException { write(server, new RequestVoteReply(self.getId(), server, term, voteGranted)); } RaftNetworkClient(
            Random random,
            Timer timer,
            ObjectMapper mapper,
            RaftMember self,
            Set<RaftMember> cluster,
            int connectTimeout,
            int minReconnectInterval,
            int additionalReconnectIntervalRange,
            TimeUnit timeUnit
    ); synchronized void initialize(
            ListeningExecutorService nonIoExecutorService,
            ServerChannelFactory serverChannelFactory,
            ChannelFactory clientChannelFactory,
            RPCReceiver receiver); synchronized void start(); synchronized void stop(); @Override void requestVote(String server, long term, long lastLogIndex, long lastLogTerm); @Override void requestVoteReply(String server, long term, boolean voteGranted); @Override void appendEntries(String server, long term, long commitIndex, long prevLogIndex, long prevLogTerm, @Nullable Collection<LogEntry> entries); @Override void appendEntriesReply(String server, long term, long prevLogIndex, long entryCount, boolean applied);  }
@Test public void shouldProduceAndConsumeRequestVoteReply() throws RPCException { client0.requestVoteReply(ClusterMembersFixture.RAFT_MEMBER_1.getId(), 10, false); verifyNoMoreInteractions(client0RPCReceiver); verify(client1RPCReceiver).onRequestVoteReply(ClusterMembersFixture.RAFT_MEMBER_0.getId(), 10, false); }