public Result runSubBuilds(Iterable<Combination> subBuildCombinations, BuildListener listener) throws InterruptedException, IOException {
Iterable<DynamicSubProject> subProjects = getRunSubProjects(subBuildCombinations);
scheduleSubBuilds(subBuildCombinations, listener);
Result r = Result.SUCCESS;
for (DynamicSubProject c : subProjects) {
CurrentBuildState runState = waitForCompletion(c, listener);
Result runResult = getResult(runState);
r = r.combine(runResult);
listener.getLogger().println("Run " + c.getName() + " finished with : " + runResult);
subBuildFinishListener.runFinished(c.getBuildByNumber(dynamicBuild.getNumber()) );
}
return r;