Create and add a new iteration.
public createIteration ( array $results = [] ) : |
||
$results | array | |
return |
private function processVariant(Variant $variant, \DOMElement $variantEl, array $resultClasses) { $errorEls = $variantEl->query('.//error'); if ($errorEls->length) { $errors = []; foreach ($errorEls as $errorEl) { $error = new Error($errorEl->nodeValue, $errorEl->getAttribute('exception-class'), $errorEl->getAttribute('code'), $errorEl->getAttribute('file'), $errorEl->getAttribute('line'), ''); $errors[] = $error; } $variant->createErrorStack($errors); return; } foreach ($variantEl->query('./iteration') as $iterationEl) { $results = []; foreach ($iterationEl->attributes as $attributeEl) { $name = $attributeEl->name; if (false === strpos($name, '-')) { throw new \RuntimeException(sprintf('Expected attribute name to have a result key prefix, got "%s".', $name)); } $prefix = substr($name, 0, strpos($name, '-')); if (!isset($resultClasses[$prefix])) { throw new \RuntimeException(sprintf('No result class was provided with key "%s" for attribute "%s"', $prefix, $name)); } $suffix = substr($name, strpos($name, '-') + 1); $results[$prefix][str_replace('-', '_', $suffix)] = $attributeEl->value; } $iteration = $variant->createIteration(); foreach ($results as $resultKey => $resultData) { $iteration->setResult(call_user_func_array([$resultClasses[$resultKey], 'fromArray'], [$resultData])); } } // TODO: Serialize statistics .. $variant->computeStats(); }
/** * It should return times and memories. */ public function testGetMetricValues() { $variant = new Variant($this->subject->reveal(), $this->parameterSet->reveal(), 1, 0); $variant->createIteration(TestUtil::createResults(4, 100)); $variant->createIteration(TestUtil::createResults(8, 200)); $times = $variant->getMetricValuesByRev(TimeResult::class, 'net'); $memories = $variant->getMetricValues(MemoryResult::class, 'peak'); $this->assertEquals([4, 8], $times); $this->assertEquals([100, 200], $memories); }