|  | @@ -19,10 +19,12 @@
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  package org.elasticsearch.common.util.concurrent;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import org.elasticsearch.common.settings.Setting;
 | 
	
		
			
				|  |  |  import org.elasticsearch.common.settings.Settings;
 | 
	
		
			
				|  |  |  import org.elasticsearch.test.ESTestCase;
 | 
	
		
			
				|  |  |  import org.hamcrest.Matcher;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import java.util.Locale;
 | 
	
		
			
				|  |  |  import java.util.concurrent.CountDownLatch;
 | 
	
		
			
				|  |  |  import java.util.concurrent.CyclicBarrier;
 | 
	
		
			
				|  |  |  import java.util.concurrent.ThreadPoolExecutor;
 | 
	
	
		
			
				|  | @@ -389,15 +391,30 @@ public class EsExecutorsTests extends ESTestCase {
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    public void testNodeProcessorsBound() {
 | 
	
		
			
				|  |  | +        runProcessorsBoundTest(EsExecutors.NODE_PROCESSORS_SETTING);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      public void testProcessorsBound() {
 | 
	
		
			
				|  |  | +        runProcessorsBoundTest(EsExecutors.PROCESSORS_SETTING);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private void runProcessorsBoundTest(final Setting<Integer> processorsSetting) {
 | 
	
		
			
				|  |  |          final int available = Runtime.getRuntime().availableProcessors();
 | 
	
		
			
				|  |  |          final int processors = randomIntBetween(available + 1, Integer.MAX_VALUE);
 | 
	
		
			
				|  |  | -        final Settings settings = Settings.builder().put("processors", processors).build();
 | 
	
		
			
				|  |  | +        final Settings settings = Settings.builder().put(processorsSetting.getKey(), processors).build();
 | 
	
		
			
				|  |  |          final IllegalArgumentException e =
 | 
	
		
			
				|  |  | -            expectThrows(IllegalArgumentException.class, () -> EsExecutors.PROCESSORS_SETTING.get(settings));
 | 
	
		
			
				|  |  | -        assertThat(
 | 
	
		
			
				|  |  | -            e,
 | 
	
		
			
				|  |  | -            hasToString(containsString("Failed to parse value [" + processors + "] for setting [processors] must be <= " + available)));
 | 
	
		
			
				|  |  | +            expectThrows(IllegalArgumentException.class, () -> processorsSetting.get(settings));
 | 
	
		
			
				|  |  | +        final String expected = String.format(
 | 
	
		
			
				|  |  | +            Locale.ROOT,
 | 
	
		
			
				|  |  | +            "Failed to parse value [%d] for setting [%s] must be <= %d",
 | 
	
		
			
				|  |  | +            processors,
 | 
	
		
			
				|  |  | +            processorsSetting.getKey(),
 | 
	
		
			
				|  |  | +            available);
 | 
	
		
			
				|  |  | +        assertThat(e, hasToString(containsString(expected)));
 | 
	
		
			
				|  |  | +        if (processorsSetting.getProperties().contains(Setting.Property.Deprecated)) {
 | 
	
		
			
				|  |  | +            assertSettingDeprecationsAndWarnings(new Setting<?>[]{processorsSetting});
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  }
 |