private Runner setSchedulers()

in surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilder.java [441:481]


        private Runner setSchedulers(ParentRunner suiteSuites, ParentRunner suiteClasses) throws InitializationError {
            int parallelSuites = allGroups.get(SUITES);
            int parallelClasses = allGroups.get(CLASSES);
            int parallelMethods = allGroups.get(METHODS);
            int poolSize = totalPoolSize();
            ExecutorService commonPool = splitPool || poolSize == 0 ? null : createPool(poolSize);
            master = createMaster(commonPool, poolSize);

            if (suiteSuites != null) {
                // a scheduler for parallel suites
                if (commonPool != null && parallelSuites > 0) {
                    Balancer balancer = BalancerFactory.createBalancerWithFairness(parallelSuites);
                    suiteSuites.setScheduler(createScheduler(null, commonPool, true, balancer));
                } else {
                    suiteSuites.setScheduler(createScheduler(parallelSuites));
                }
            }

            // schedulers for parallel classes
            ArrayList<ParentRunner> allSuites = new ArrayList<>(suites);
            allSuites.addAll(nestedSuites);
            if (suiteClasses != null) {
                allSuites.add(suiteClasses);
            }
            if (!allSuites.isEmpty()) {
                setSchedulers(allSuites, parallelClasses, commonPool);
            }

            // schedulers for parallel methods
            ArrayList<ParentRunner> allClasses = new ArrayList<>(classes);
            allClasses.addAll(nestedClasses);
            if (!allClasses.isEmpty()) {
                setSchedulers(allClasses, parallelMethods, commonPool);
            }

            // resulting runner for Computer#getSuite() scheduled by master scheduler
            ParentRunner all = createFinalRunner(removeNullRunners(
                    Arrays.<Runner>asList(suiteSuites, suiteClasses, createSuite(notParallelRunners))));
            all.setScheduler(master);
            return all;
        }