/** * Executes a restart of Thread loop, equivalent of "continue" in algorithm but on Thread Loop. * As a consequence it ends all loop on the path to root * @param pathToRootTraverser {@link FindTestElementsUpToRootTraverser} */ private static void continueOnThreadLoop(FindTestElementsUpToRootTraverser pathToRootTraverser) { List<Controller> controllersToReinit = pathToRootTraverser.getControllersToRoot(); for (Controller parentController : controllersToReinit) { if (parentController instanceof AbstractThreadGroup) { AbstractThreadGroup tg = (AbstractThreadGroup) parentController; tg.startNextLoop(); } else { parentController.triggerEndOfLoop(); } } }
FindTestElementsUpToRootTraverser pathToRootTraverser = new FindTestElementsUpToRootTraverser(realSampler); testTree.traverse(pathToRootTraverser);
/** * Executes a break of current loop, equivalent of "break" in algorithm. * As a consequence it ends the first loop it finds on the path to root * @param pathToRootTraverser {@link FindTestElementsUpToRootTraverser} */ private static void breakOnCurrentLoop(FindTestElementsUpToRootTraverser pathToRootTraverser) { List<Controller> controllersToReinit = pathToRootTraverser.getControllersToRoot(); for (Controller parentController : controllersToReinit) { if (parentController instanceof AbstractThreadGroup) { AbstractThreadGroup tg = (AbstractThreadGroup) parentController; tg.breakThreadLoop(); } else if (parentController instanceof IteratingController) { ((IteratingController) parentController).breakLoop(); break; } else { parentController.triggerEndOfLoop(); } } }
/** * Executes a continue of current loop, equivalent of "continue" in algorithm. * As a consequence it ends the first loop it finds on the path to root * @param pathToRootTraverser {@link FindTestElementsUpToRootTraverser} */ private static void continueOnCurrentLoop(FindTestElementsUpToRootTraverser pathToRootTraverser) { List<Controller> controllersToReinit = pathToRootTraverser.getControllersToRoot(); for (Controller parentController : controllersToReinit) { if (parentController instanceof AbstractThreadGroup) { AbstractThreadGroup tg = (AbstractThreadGroup) parentController; tg.startNextLoop(); } else if (parentController instanceof IteratingController) { ((IteratingController) parentController).startNextLoop(); break; } else { parentController.triggerEndOfLoop(); } } }