@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)); }