private GetBlobOperation createOperationAndComplete(Callback<GetBlobResult> callback) throws Exception {
    GetBlobOperation op = createOperation(routerConfig, callback);
    while (!op.isOperationComplete()) {
      op.poll(requestRegistrationCallback);
      List<ResponseInfo> responses = sendAndWaitForResponses(requestRegistrationCallback.getRequestsToSend());
      for (ResponseInfo responseInfo : responses) {
        DataInputStream dis = new NettyByteBufDataInputStream(responseInfo.content());
        GetResponse getResponse = responseInfo.getError() == null ? GetResponse.readFrom(dis, mockClusterMap) : null;
        op.handleResponse(responseInfo, getResponse);
        responseInfo.release();
      }
    }
    return op;
  }
Create a getBlob operation with the specified callback and poll until completion.
@param callback the callback to run after completion of the operation, or {@code null} if no callback.
@return the operation
@throws Exception
ambry-router/src/test/java/com/github/ambry/router/GetBlobOperationTest.java