public function __construct($identifier)
 {
     if (PTS_IS_CLIENT) {
         $ob_identifier = pts_openbenchmarking::evaluate_string_to_qualifier($identifier, true, 'suite');
         if ($ob_identifier != false) {
             $identifier = $ob_identifier;
         }
     }
     $this->identifier = $identifier;
     $this->xml_parser = new pts_suite_nye_XmlReader($identifier);
 }
 public function __construct($read = null, $normal_init = true)
 {
     $this->overrides = array();
     $this->tp_extends = null;
     if ($normal_init == false) {
         $this->identifier = $read;
         return;
     }
     if (!isset($read[200]) && strpos($read, '<?xml version="1.0"?>') === false) {
         if (PTS_IS_CLIENT && (!defined('PTS_TEST_PROFILE_PATH') || !is_file(PTS_TEST_PROFILE_PATH . $read . '/test-definition.xml'))) {
             $read = pts_openbenchmarking::evaluate_string_to_qualifier($read, true, 'test');
             if ($read == false && pts_openbenchmarking::openbenchmarking_has_refreshed() == false) {
                 // Test profile might be brand new, so refresh repository and then check
                 // pts_openbenchmarking::refresh_repository_lists(null, true);
                 $read = pts_openbenchmarking::evaluate_string_to_qualifier($read, true, 'test');
             }
         }
     }
     if (!isset($read[64])) {
         // Passed is not an identifier since it's too long
         $this->identifier = $read;
     }
     if (!isset($read[512]) && !is_file($read)) {
         if (defined('PTS_TEST_PROFILE_PATH') && is_file(PTS_TEST_PROFILE_PATH . $read . '/test-definition.xml')) {
             $read = PTS_TEST_PROFILE_PATH . $read . '/test-definition.xml';
         } else {
             if (substr($read, -4) == '.zip' && is_file($read)) {
                 $zip = new ZipArchive();
                 if ($zip->open($read) === true) {
                     $read = $zip->getFromName('test-definition.xml');
                     $zip->close();
                 }
             }
         }
     }
     //$xml_options = 0;
     //if(defined('LIBXML_COMPACT'))
     //{
     $xml_options = LIBXML_COMPACT | LIBXML_PARSEHUGE;
     //}
     if (is_file($read)) {
         $this->file_location = $read;
         $this->xml = simplexml_load_file($read, 'SimpleXMLElement', $xml_options);
     } else {
         $this->raw_xml = $read;
         if (strpos($read, '<') !== false) {
             $this->xml = simplexml_load_string($read, 'SimpleXMLElement', $xml_options);
         }
     }
 }
 public function __construct($identifier = null)
 {
     if (strpos($identifier, '<?xml version="1.0"?>') === false) {
         if (PTS_IS_CLIENT && (!defined('PTS_TEST_PROFILE_PATH') || !is_file(PTS_TEST_PROFILE_PATH . $identifier . '/test-definition.xml'))) {
             $identifier = pts_openbenchmarking::evaluate_string_to_qualifier($identifier, true, 'test');
             if ($identifier == false && pts_openbenchmarking::openbenchmarking_has_refreshed() == false) {
                 // Test profile might be brand new, so refresh repository and then check
                 // pts_openbenchmarking::refresh_repository_lists(null, true);
                 $identifier = pts_openbenchmarking::evaluate_string_to_qualifier($identifier, true, 'test');
             }
         }
     }
     $this->xml_parser = new pts_test_nye_XmlReader($identifier);
     if (!isset($identifier[64])) {
         // Passed is not an identifier since it's too long
         $this->identifier = $identifier;
     }
 }
 public function add_to_suite_from_reader(&$xml_reader)
 {
     $test_names = $xml_reader->getXMLArrayValues('PhoronixTestSuite/Execute/Test');
     $sub_arguments = $xml_reader->getXMLArrayValues('PhoronixTestSuite/Execute/Arguments');
     $sub_arguments_description = $xml_reader->getXMLArrayValues('PhoronixTestSuite/Execute/Description');
     $sub_modes = $xml_reader->getXMLArrayValues('PhoronixTestSuite/Execute/Mode');
     $override_test_options = $xml_reader->getXMLArrayValues('PhoronixTestSuite/Execute/OverrideTestOptions');
     for ($i = 0; $i < count($test_names); $i++) {
         $identifier = pts_openbenchmarking::evaluate_string_to_qualifier($test_names[$i]);
         if (empty($identifier)) {
             echo PHP_EOL . $test_names[$i] . ' fails.' . PHP_EOL;
             exit;
         }
         $identifier = substr($identifier, 0, strrpos($identifier, '-'));
         // strip the version for now
         $this->add_to_suite($identifier, $sub_arguments[$i], $sub_arguments_description[$i], $sub_modes[$i], $override_test_options[$i]);
     }
 }
 public static function is_test_profile($identifier)
 {
     $identifier = pts_openbenchmarking::evaluate_string_to_qualifier($identifier, true, 'test');
     return $identifier != false && is_file(PTS_TEST_PROFILE_PATH . $identifier . '/test-definition.xml') ? $identifier : false;
 }
 public static function is_suite($identifier)
 {
     $identifier = pts_openbenchmarking::evaluate_string_to_qualifier($identifier, true, 'suite');
     return is_file(PTS_TEST_SUITE_PATH . $identifier . '/suite-definition.xml');
 }
 public function handleXmlZeroTagFallback($xml_tag, $fallback_value)
 {
     // Cascading Test Profiles for finding a tag within an XML file being extended by another XML file
     if ($xml_tag == 'PhoronixTestSuite/TestProfile/Extends' || $this->block_test_extension_support) {
         // Otherwise we'd have an infinite loop
         return $fallback_value;
     }
     $test_extends = $this->getXmlValue('PhoronixTestSuite/TestProfile/Extends');
     if (!empty($test_extends) && PTS_IS_CLIENT) {
         $test_extends = pts_openbenchmarking::evaluate_string_to_qualifier($test_extends, true, 'test');
         $test_below_parser = new pts_test_nye_XmlReader($test_extends);
         $test_below_tag = $test_below_parser->getXMLValue($xml_tag);
         if (!empty($test_below_tag)) {
             $fallback_value = $test_below_tag;
         }
     }
     return $fallback_value;
 }