private void swapRows(Table table) throws Throwable {
   CoprocessorRpcChannel channel = table.coprocessorService(ROW);
   RowProcessorEndpoint.RowSwapProcessor processor =
       new RowProcessorEndpoint.RowSwapProcessor(ROW, ROW2);
   RowProcessorService.BlockingInterface service = RowProcessorService.newBlockingStub(channel);
   ProcessRequest request = RowProcessorClient.getRowProcessorPB(processor);
   service.process(null, request);
 }
 private int incrementCounter(Table table) throws Throwable {
   CoprocessorRpcChannel channel = table.coprocessorService(ROW);
   RowProcessorEndpoint.IncrementCounterProcessor processor =
       new RowProcessorEndpoint.IncrementCounterProcessor(ROW);
   RowProcessorService.BlockingInterface service = RowProcessorService.newBlockingStub(channel);
   ProcessRequest request = RowProcessorClient.getRowProcessorPB(processor);
   ProcessResponse protoResult = service.process(null, request);
   IncCounterProcessorResponse response =
       IncCounterProcessorResponse.parseFrom(protoResult.getRowProcessorResult());
   Integer result = response.getResponse();
   return result;
 }
 @Test
 public void testTimeout() throws Throwable {
   prepareTestData();
   CoprocessorRpcChannel channel = table.coprocessorService(ROW);
   RowProcessorEndpoint.TimeoutProcessor processor =
       new RowProcessorEndpoint.TimeoutProcessor(ROW);
   RowProcessorService.BlockingInterface service = RowProcessorService.newBlockingStub(channel);
   ProcessRequest request = RowProcessorClient.getRowProcessorPB(processor);
   boolean exceptionCaught = false;
   try {
     service.process(null, request);
   } catch (Exception e) {
     exceptionCaught = true;
   }
   assertTrue(exceptionCaught);
 }
  @Test
  public void testDoubleScan() throws Throwable {
    prepareTestData();

    CoprocessorRpcChannel channel = table.coprocessorService(ROW);
    RowProcessorEndpoint.FriendsOfFriendsProcessor processor =
        new RowProcessorEndpoint.FriendsOfFriendsProcessor(ROW, A);
    RowProcessorService.BlockingInterface service = RowProcessorService.newBlockingStub(channel);
    ProcessRequest request = RowProcessorClient.getRowProcessorPB(processor);
    ProcessResponse protoResult = service.process(null, request);
    FriendsOfFriendsProcessorResponse response =
        FriendsOfFriendsProcessorResponse.parseFrom(protoResult.getRowProcessorResult());
    Set<String> result = new HashSet<String>();
    result.addAll(response.getResultList());
    Set<String> expected = new HashSet<String>(Arrays.asList(new String[] {"d", "e", "f", "g"}));
    Get get = new Get(ROW);
    LOG.debug("row keyvalues:" + stringifyKvs(table.get(get).listCells()));
    assertEquals(expected, result);
  }