Return true if any of the iterations in this set encountered
an error.
public hasErrorStack ( ) : boolean | ||
리턴 | boolean |
/** * {@inheritdoc} */ public function variantEnd(Variant $variant) { if ($variant->hasErrorStack()) { $this->output->write(sprintf("[0G %-30s<error>ERROR</error>", $variant->getSubject()->getName())); $this->output->write(PHP_EOL); return; } $this->output->write(sprintf("\t%s", $this->formatIterationsFullSummary($variant))); $this->output->write(PHP_EOL); }
/** * {@inheritdoc} */ public function variantEnd(Variant $variant) { if ($variant->getRejectCount() > 0) { return; } $subject = $variant->getSubject(); if ($variant->hasErrorStack()) { $this->output->writeln(sprintf(' t%-30s <error>ERROR</error>', $subject->getName())); return; } $this->output->writeln(sprintf(" %-30s I%s P%s\t%s", $subject->getName(), $variant->count(), $variant->getParameterSet()->getIndex(), $this->formatIterationsFullSummary($variant))); }
public function variantEnd(Variant $variant) { // do not show reject runs if ($variant->getRejectCount() > 0) { return; } $dot = $variant->hasErrorStack() ? '<error>E</error>' : '.'; if ($this->isCi) { $this->output->write($dot); return; } $this->buffer .= $dot; $this->output->write(sprintf("\r%s ", $this->buffer)); }
private function processVariant(Subject $subject, Variant $variant, \DOMElement $subjectEl) { $variantEl = $subjectEl->appendElement('variant'); // TODO: These attributes should be on the subject, see // https://github.com/phpbench/phpbench/issues/307 $variantEl->setAttribute('sleep', $subject->getSleep()); $variantEl->setAttribute('output-time-unit', $subject->getOutputTimeUnit() ?: TimeUnit::MICROSECONDS); $variantEl->setAttribute('output-time-precision', $subject->getOutputTimePrecision()); $variantEl->setAttribute('output-mode', $subject->getOutputMode() ?: TimeUnit::MODE_TIME); $variantEl->setAttribute('revs', $variant->getRevolutions()); $variantEl->setAttribute('warmup', $variant->getWarmup()); $variantEl->setAttribute('retry-threshold', $subject->getRetryThreshold()); foreach ($variant->getParameterSet() as $name => $value) { $this->createParameter($variantEl, $name, $value); } if ($variant->hasErrorStack()) { $errorsEl = $variantEl->appendElement('errors'); foreach ($variant->getErrorStack() as $error) { $errorEl = $errorsEl->appendElement('error', $error->getMessage()); $errorEl->setAttribute('exception-class', $error->getClass()); $errorEl->setAttribute('code', $error->getCode()); $errorEl->setAttribute('file', $error->getFile()); $errorEl->setAttribute('line', $error->getLine()); } return; } $stats = $variant->getStats(); $stats = iterator_to_array($stats); $resultClasses = []; // ensure same order (for testing) ksort($stats); foreach ($variant as $iteration) { $iterationEl = $variantEl->appendElement('iteration'); foreach ($iteration->getResults() as $result) { // we need to store the class FQNs of the results for deserialization later. if (!isset($resultClasses[$result->getKey()])) { $resultClasses[$result->getKey()] = get_class($result); } $prefix = $result->getKey(); $metrics = $result->getMetrics(); foreach ($metrics as $key => $value) { $iterationEl->setAttribute(sprintf('%s-%s', $prefix, str_replace('_', '-', $key)), $value); } } } $statsEl = $variantEl->appendElement('stats'); foreach ($stats as $statName => $statValue) { $statsEl->setAttribute($statName, $statValue); } foreach ($resultClasses as $resultKey => $classFqn) { if ($subjectEl->queryOne('ancestor::suite/result[@key="' . $resultKey . '"]')) { continue; } $resultEl = $subjectEl->queryOne('ancestor::suite')->appendElement('result'); $resultEl->setAttribute('key', $resultKey); $resultEl->setAttribute('class', $classFqn); } }
/** * It should be aware of exceptions. */ public function testExceptionAwareness() { $variant = new Variant($this->subject->reveal(), $this->parameterSet->reveal(), 10, 20); $error = new \Exception('Test'); $this->assertFalse($variant->hasErrorStack()); $variant->setException($error); $this->assertTrue($variant->hasErrorStack()); $this->assertEquals('Test', $variant->getErrorStack()->getTop()->getMessage()); }