@Test
  public void testAddUsefulHeaders() throws InterruptedException {
    // take the existing headers into account to make sure this test runs with tests.iters>1 as the
    // list is static
    final Set<String> headers = new HashSet<>();
    headers.addAll(BaseRestHandler.usefulHeaders());
    int iterations = randomIntBetween(1, 5);

    ExecutorService executorService = Executors.newFixedThreadPool(iterations);
    for (int i = 0; i < iterations; i++) {
      int headersCount = randomInt(10);
      final Set<String> newHeaders = new HashSet<>();
      for (int j = 0; j < headersCount; j++) {
        String usefulHeader = randomRealisticUnicodeOfLengthBetween(1, 30);
        newHeaders.add(usefulHeader);
        headers.add(usefulHeader);
      }

      executorService.submit(
          new Runnable() {
            @Override
            public void run() {
              BaseRestHandler.addUsefulHeaders(newHeaders.toArray(new String[newHeaders.size()]));
            }
          });
    }

    executorService.shutdown();
    assertThat(executorService.awaitTermination(1, TimeUnit.SECONDS), equalTo(true));
    String[] usefulHeaders =
        BaseRestHandler.usefulHeaders().toArray(new String[BaseRestHandler.usefulHeaders().size()]);
    assertThat(usefulHeaders.length, equalTo(headers.size()));

    Arrays.sort(usefulHeaders);
    String[] headersArray = new String[headers.size()];
    headersArray = headers.toArray(headersArray);
    Arrays.sort(headersArray);
    assertThat(usefulHeaders, equalTo(headersArray));
  }