package org.threadly.concurrent.wrapper.limiter; import org.threadly.concurrent.PrioritySchedulerTest.PrioritySchedulerFactory; import org.threadly.concurrent.SubmitterExecutor; import org.threadly.concurrent.SubmitterExecutorInterfaceTest; @SuppressWarnings("javadoc") public class KeyedExecutorLimiterInterfaceTest extends SubmitterExecutorInterfaceTest { @Override protected SubmitterExecutorFactory getSubmitterExecutorFactory() { return new KeyedExecutorLimiterFactory(); } private static class KeyedExecutorLimiterFactory implements SubmitterExecutorFactory { private final PrioritySchedulerFactory schedulerFactory = new PrioritySchedulerFactory(); @Override public SubmitterExecutor makeSubmitterExecutor(int poolSize, boolean prestartIfAvailable) { SubmitterExecutor executor = schedulerFactory.makeSubmitterExecutor(poolSize * 2, prestartIfAvailable); return new KeyedExecutorLimiter(executor, poolSize).getSubmitterExecutorForKey("foo"); } @Override public void shutdown() { schedulerFactory.shutdown(); } } }