示例#1
0
 /**
  * The overridden parameter sets should be nested in an array of an array.
  */
 public function testGetParameterSets()
 {
     $context = new RunnerContext(__DIR__, array('parameters' => array('nb_elements' => 10)));
     $this->assertEquals(array(array(array('nb_elements' => 10))), $context->getParameterSets(array(array('nb_elements' => 100))));
 }
示例#2
0
 private function runIterations(ExecutorInterface $executor, RunnerContext $context, SubjectMetadata $subject, ParameterSet $parameterSet, \DOMElement $variantEl)
 {
     $iterationCount = $context->getIterations($subject->getIterations());
     $revolutionCount = $context->getRevolutions($subject->getRevs());
     $warmupCount = $context->getWarmup($subject->getWarmUp());
     $executorConfig = $this->executorRegistry->getConfig($context->getExecutor());
     $iterationCollection = new IterationCollection($subject, $parameterSet, $iterationCount, $revolutionCount, $warmupCount, $context->getRetryThreshold($this->retryThreshold));
     $this->logger->iterationsStart($iterationCollection);
     try {
         foreach ($iterationCollection as $iteration) {
             $this->runIteration($executor, $executorConfig, $iteration, $context->getSleep($subject->getSleep()));
         }
     } catch (\Exception $e) {
         $iterationCollection->setException($e);
         $this->logger->iterationsEnd($iterationCollection);
         $this->appendException($variantEl, $e);
         return;
     }
     $iterationCollection->computeStats();
     $this->logger->iterationsEnd($iterationCollection);
     while ($iterationCollection->getRejectCount() > 0) {
         $this->logger->retryStart($iterationCollection->getRejectCount());
         $this->logger->iterationsStart($iterationCollection);
         foreach ($iterationCollection->getRejects() as $reject) {
             $reject->incrementRejectionCount();
             $this->runIteration($executor, $executorConfig, $reject, $context->getSleep($subject->getSleep()));
         }
         $iterationCollection->computeStats();
         $this->logger->iterationsEnd($iterationCollection);
     }
     $stats = $iterationCollection->getStats();
     foreach ($iterationCollection as $iteration) {
         $iterationEl = $variantEl->ownerDocument->createElement('iteration');
         $iterationEl->setAttribute('net-time', $iteration->getResult()->getTime());
         $iterationEl->setAttribute('rev-time', $iteration->getResult()->getTime() / $iteration->getRevolutions());
         $iterationEl->setAttribute('z-value', $iteration->getZValue());
         $iterationEl->setAttribute('memory', $iteration->getResult()->getMemory());
         $iterationEl->setAttribute('deviation', $iteration->getDeviation());
         $iterationEl->setAttribute('rejection-count', $iteration->getRejectionCount());
         $variantEl->appendChild($iterationEl);
     }
     $statsEl = $variantEl->appendElement('stats');
     foreach ($stats as $statName => $statValue) {
         $statsEl->setAttribute($statName, $statValue);
     }
 }
示例#3
0
 private function runVariant(ExecutorInterface $executor, RunnerContext $context, SubjectMetadata $subjectMetadata, Variant $variant)
 {
     $executorConfig = $this->executorRegistry->getConfig($context->getExecutor());
     $this->logger->variantStart($variant);
     $rejectCount = [];
     try {
         foreach ($variant->getIterations() as $iteration) {
             $rejectCount[spl_object_hash($iteration)] = 0;
             $this->runIteration($executor, $executorConfig, $iteration, $subjectMetadata);
         }
     } catch (\Exception $e) {
         $variant->setException($e);
         $this->logger->variantEnd($variant);
         if ($context->getStopOnError()) {
             throw new StopOnErrorException();
         }
         return;
     }
     $variant->computeStats();
     $this->logger->variantEnd($variant);
     while ($variant->getRejectCount() > 0) {
         $this->logger->retryStart($variant->getRejectCount());
         $this->logger->variantStart($variant);
         foreach ($variant->getRejects() as $reject) {
             $rejectCount[spl_object_hash($reject)]++;
             $this->runIteration($executor, $executorConfig, $reject, $subjectMetadata);
         }
         $variant->computeStats();
         $this->logger->variantEnd($variant);
         $reject->setResult(new RejectionCountResult($rejectCount[spl_object_hash($reject)]));
     }
 }
示例#4
0
文件: Runner.php 项目: stof/phpbench
 private function runIterations(RunnerContext $context, SubjectMetadata $subject, ParameterSet $parameterSet, \DOMElement $variantEl)
 {
     $iterationCount = $context->getIterations($subject->getIterations());
     $revolutionCount = $context->getRevolutions($subject->getRevs());
     $iterationCollection = new IterationCollection($subject, $parameterSet, $context->getRetryThreshold($this->retryThreshold));
     $this->logger->iterationsStart($iterationCollection);
     $iterations = $iterationCollection->spawnIterations($iterationCount, $revolutionCount);
     foreach ($iterations as $iteration) {
         $this->runIteration($iteration, $subject->getSleep());
         $iterationCollection->add($iteration);
     }
     $iterationCollection->computeStats();
     $this->logger->iterationsEnd($iterationCollection);
     while ($iterationCollection->getRejectCount() > 0) {
         $this->logger->retryStart($iterationCollection->getRejectCount());
         $this->logger->iterationsStart($iterationCollection);
         foreach ($iterationCollection->getRejects() as $reject) {
             $reject->incrementRejectionCount();
             $this->runIteration($reject, $context->getSleep($subject->getSleep()));
         }
         $iterationCollection->computeStats();
         $this->logger->iterationsEnd($iterationCollection);
     }
     $stats = $iterationCollection->getStats();
     foreach ($iterationCollection as $iteration) {
         $iterationEl = $variantEl->ownerDocument->createElement('iteration');
         $iterationEl->setAttribute('revs', $iteration->getRevolutions());
         $iterationEl->setAttribute('time-net', $iteration->getResult()->getTime());
         $iterationEl->setAttribute('time', $iteration->getResult()->getTime() / $iteration->getRevolutions());
         $iterationEl->setAttribute('z-value', $iteration->getZValue());
         $iterationEl->setAttribute('memory', $iteration->getResult()->getMemory());
         $iterationEl->setAttribute('deviation', $iteration->getDeviation());
         $iterationEl->setAttribute('rejection-count', $iteration->getRejectionCount());
         $variantEl->appendChild($iterationEl);
     }
     $statsEl = $variantEl->appendElement('stats');
     foreach ($stats as $statName => $statValue) {
         $statsEl->setAttribute($statName, $statValue);
     }
 }
示例#5
0
 /**
  * The overridden parameter sets should be nested in an array of an array.
  */
 public function testGetParameterSets()
 {
     $context = new RunnerContext(__DIR__, ['parameters' => ['nb_elements' => 10]]);
     $this->assertEquals([[['nb_elements' => 10]]], $context->getParameterSets([['nb_elements' => 100]]));
 }