public CompletionService<MultiHttpRequestResponse> executeGet(List<String> urls,
      @Nullable Map<String, String> requestHeaders, int timeoutMs) {
    List<Pair<String, String>> urlsAndRequestBodies = new ArrayList<>();
    urls.forEach(url -> urlsAndRequestBodies.add(Pair.of(url, "")));
    return execute(urlsAndRequestBodies, requestHeaders, timeoutMs, "GET", HttpGet::new);
  }
@Test
  public void testMultiGet() {
    List<String> urls = Arrays.asList("http://localhost:" + String.valueOf(_portStart) + URI_PATH,
        "http://localhost:" + String.valueOf(_portStart + 1) + URI_PATH,
        "http://localhost:" + String.valueOf(_portStart + 2) + URI_PATH,
        // 2nd request to the same server
        "http://localhost:" + String.valueOf(_portStart) + URI_PATH,
        "http://localhost:" + String.valueOf(_portStart + 3) + URI_PATH);

    MultiHttpRequest mget =
        new MultiHttpRequest(Executors.newCachedThreadPool(), new PoolingHttpClientConnectionManager());

    // timeout value needs to be less than 5000ms set above for
    // third server
    final int requestTimeoutMs = 1000;
    CompletionService<MultiHttpRequestResponse> completionService = mget.executeGet(urls, null, requestTimeoutMs);

    TestResult result = collectResult(completionService, urls.size());
    Assert.assertEquals(result.getSuccess(), 2);
    Assert.assertEquals(result.getErrors(), 2);
    Assert.assertEquals(result.getTimeouts(), 1);
  }