/** * * Adds a new test case instance failure. * @param KalturaTestCaseInstanceFailure $testCaseInstanceFailure */ public function addTestCaseInstanceFailure(KalturaTestCaseInstanceFailure $testCaseInstanceFailure) { if ($this->testCaseInstanceFailures == null) { $this->testCaseInstanceFailures = array(); } $name = $testCaseInstanceFailure->getTestCaseInstanceName(); if (!isset($this->testCaseInstanceFailures["{$name}"])) { $this->testCaseInstanceFailures["{$name}"] = $testCaseInstanceFailure; } else { throw new Exception("Test Case instance failures [{$name}] were already added"); } return $this->testCaseInstanceFailures["{$name}"]; }
/** * * Returns a DomDocument containing the test case failure * @param KalturaTestCaseInstanceFailure $failure * @param string $rootNodeName - default to 'data' * @return DOMDocument - the xml for the given error */ public static function toXml(KalturaTestCaseInstanceFailure $testCaseInstanceFailure, $rootNodeName = 'data') { if (count($testCaseInstanceFailure->getFailures()) == 0) { return new DOMDocument("1.0"); } $dom = new DOMDocument(1.0); $rootNode = $dom->createElement($rootNodeName); $dom->appendChild($rootNode); $rootNode->setAttribute("testCaseInstanceName", $testCaseInstanceFailure->getTestCaseInstanceName()); $inputsNode = $dom->createElement("Inputs"); foreach ($testCaseInstanceFailure->getTestCaseInput() as $inputKey => $inputValue) { $node = $dom->createElement("Input"); if ($inputValue != null) { $type = gettype($inputValue); if (is_object($inputValue)) { $class = get_class($inputValue); KalturaLog::debug("class [" . $class . "]\n"); if (class_exists($class)) { $type = get_class($inputValue); } } $node->setAttribute("type", $type); $id = $inputValue; if ($inputValue instanceof BaseObject) { $id = $inputValue->getId(); } elseif ($inputValue instanceof KalturaObjectBase || $inputValue instanceof KalturaObject) { if (property_exists($inputValue, 'id')) { $id = $inputValue->id; } } //Fixes problem where id was object if (is_object($id)) { $idType = get_class($id); $id = "not a string but {$idType}"; } $node->setAttribute($type . "Id", $id); } $inputsNode->appendChild($node); } $failuresNode = $dom->createElement("Failures"); foreach ($testCaseInstanceFailure->getFailures() as $kalturaFailure) { $objectAsDOM = KalturaFailure::toXml($kalturaFailure, "Failure"); kXml::appendDomToElement($objectAsDOM, $failuresNode, $dom); } $rootNode->appendChild($inputsNode); $rootNode->appendChild($failuresNode); //pass back DomElement object return $dom; }
/** * * Gets the test case instance data key * First by name and if name don't exists then by the test case inputs * @param KalturaTestCaseDataFile $newTestDataFile * @param KalturaTestCaseInstanceFailure $testCaseInstanceFailure */ protected static function getTestCaseInstnaceKey(KalturaTestCaseDataFile $newTestDataFile, KalturaTestCaseInstanceFailure $testCaseInstanceFailure) { $testCaseInstanceKey = $testCaseInstanceFailure->getTestCaseInstanceName(); //Check if key exists in the data file if (!$newTestDataFile->isTestCaseInstanceExists($testCaseInstanceKey)) { //If name doesn't exists we find the right input //TODO: maybe remove getTestKeyByInputs $testCaseInstanceKey = KalturaTestResultUpdater::getTestKeyByInputs($newTestDataFile, $testCaseInstanceFailure->getTestCaseInput()); } return $testCaseInstanceKey; }