private function runSubject(ExecutorInterface $executor, RunnerContext $context, Subject $subject, SubjectMetadata $subjectMetadata)
{
$parameterSets = $context->getParameterSets($subjectMetadata->getParameterSets());
$paramsIterator = new CartesianParameterIterator($parameterSets);
// create the variants.
foreach ($paramsIterator as $parameterSet) {
foreach ($subjectMetadata->getIterations() as $nbIterations) {
foreach ($subjectMetadata->getRevs() as $revolutions) {
foreach ($subjectMetadata->getWarmup() as $warmup) {
$variant = $subject->createVariant($parameterSet, $revolutions, $warmup);
$variant->spawnIterations($nbIterations);
}
}
}
}
// run the variants.
foreach ($subject->getVariants() as $variant) {
$this->runVariant($executor, $context, $subjectMetadata, $variant);
}
return $subject;
}