diff options
author | Michael Larabel <michael@phx-laptop.(none)> | 2008-04-02 10:15:24 -0400 |
---|---|---|
committer | Michael Larabel <michael@phx-laptop.(none)> | 2008-04-02 10:15:24 -0400 |
commit | 79238c94a095e142974041ab8029a388a9f8b398 (patch) | |
tree | 816118e28600bbece2b0f73d8ab33ee1abb8bad5 /pts-core/functions/pts-functions-merge.php | |
download | phoronix-test-suite-upstream-79238c94a095e142974041ab8029a388a9f8b398.tar.gz phoronix-test-suite-upstream-79238c94a095e142974041ab8029a388a9f8b398.tar.xz phoronix-test-suite-upstream-79238c94a095e142974041ab8029a388a9f8b398.zip |
Initial 0.1.0 Public Release
Diffstat (limited to 'pts-core/functions/pts-functions-merge.php')
-rw-r--r-- | pts-core/functions/pts-functions-merge.php | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/pts-core/functions/pts-functions-merge.php b/pts-core/functions/pts-functions-merge.php new file mode 100644 index 0000000..2def011 --- /dev/null +++ b/pts-core/functions/pts-functions-merge.php @@ -0,0 +1,165 @@ +<?php + +// TODO: Lots with merging results and validation + +function pts_find_file($file) +{ + if(is_file($file)) + $USE_FILE = $file; + else if(is_file(SAVE_RESULTS_LOCATION . "$file.xml")) + $USE_FILE = SAVE_RESULTS_LOCATION . "$file.xml"; + else if(trim(file_get_contents("http://www.phoronix-test-suite.com/global/profile-check.php?id=$file")) == "REMOTE_FILE") + $USE_FILE = "http://www.phoronix-test-suite.com/global/pts-results-viewer.php?id=$file"; + else + { + echo "File: " . $file . " couldn't be found. Exiting..."; + exit(0); + } + + return $USE_FILE; +} +function pts_merge_benchmarks($OLD_RESULTS, $NEW_RESULTS) +{ + // RE-READ LATEST RESULTS + $new_xml_reader = new tandem_XmlReader($NEW_RESULTS); + $new_system_hardware = $new_xml_reader->getXMLArrayValues("PhoronixTestSuite/System/Hardware"); + $new_system_software = $new_xml_reader->getXMLArrayValues("PhoronixTestSuite/System/Software"); + $new_system_author = $new_xml_reader->getXMLArrayValues("PhoronixTestSuite/System/Author"); + $new_system_notes = $new_xml_reader->getXMLArrayValues("PhoronixTestSuite/System/TestNotes"); + $new_system_date = $new_xml_reader->getXMLArrayValues("PhoronixTestSuite/System/TestDate"); + $new_pts_version = $new_xml_reader->getXMLArrayValues("PhoronixTestSuite/System/Version"); + $new_associated_identifiers = $new_xml_reader->getXMLArrayValues("PhoronixTestSuite/System/AssociatedIdentifiers"); + $new_results_raw = $new_xml_reader->getXMLArrayValues("PhoronixTestSuite/Benchmark/Results"); + + $new_suite_name = $new_xml_reader->getXMLValue("PhoronixTestSuite/Suite/Name"); + $new_suite_version = $new_xml_reader->getXMLValue("PhoronixTestSuite/Suite/Version"); + $new_suite_title = $new_xml_reader->getXMLValue("PhoronixTestSuite/Suite/Title"); + $new_suite_description = $new_xml_reader->getXMLValue("PhoronixTestSuite/Suite/Description"); + $new_suite_type = $new_xml_reader->getXMLValue("PhoronixTestSuite/Suite/Type"); + $new_suite_maintainer = $new_xml_reader->getXMLValue("PhoronixTestSuite/Suite/Maintainer"); + + $new_results_identifiers = array(); + $new_results_values = array(); + + foreach($new_results_raw as $new_result_raw) + { + $new_xml_results = new tandem_XmlReader($new_result_raw); + array_push($new_results_identifiers, $new_xml_results->getXMLArrayValues("Group/Entry/Identifier")); + array_push($new_results_values, $new_xml_results->getXMLArrayValues("Group/Entry/Value")); + } + unset($NEW_RESULTS, $new_xml_reader, $new_results_raw); + + + // READ ORIGINAL RESULTS + $original_xml_reader = new tandem_XmlReader($OLD_RESULTS); + $original_system_hardware = $original_xml_reader->getXMLArrayValues("PhoronixTestSuite/System/Hardware"); + $original_system_software = $original_xml_reader->getXMLArrayValues("PhoronixTestSuite/System/Software"); + $original_system_author = $original_xml_reader->getXMLArrayValues("PhoronixTestSuite/System/Author"); + $original_system_notes = $original_xml_reader->getXMLArrayValues("PhoronixTestSuite/System/TestNotes"); + $original_system_date = $original_xml_reader->getXMLArrayValues("PhoronixTestSuite/System/TestDate"); + $original_pts_version = $original_xml_reader->getXMLArrayValues("PhoronixTestSuite/System/Version"); + $original_associated_identifiers = $original_xml_reader->getXMLArrayValues("PhoronixTestSuite/System/AssociatedIdentifiers"); + $original_results_raw = $original_xml_reader->getXMLArrayValues("PhoronixTestSuite/Benchmark/Results"); + + $original_suite_name = $original_xml_reader->getXMLValue("PhoronixTestSuite/Suite/Name"); + $original_suite_version = $original_xml_reader->getXMLValue("PhoronixTestSuite/Suite/Version"); + + $original_results_name = $original_xml_reader->getXMLArrayValues("PhoronixTestSuite/Benchmark/Name"); + $original_results_version = $original_xml_reader->getXMLArrayValues("PhoronixTestSuite/Benchmark/Version"); + $original_results_attributes = $original_xml_reader->getXMLArrayValues("PhoronixTestSuite/Benchmark/Attributes"); + $original_results_scale = $original_xml_reader->getXMLArrayValues("PhoronixTestSuite/Benchmark/Scale"); + $original_results_testname = $original_xml_reader->getXMLArrayValues("PhoronixTestSuite/Benchmark/TestName"); + $original_results_arguments = $original_xml_reader->getXMLArrayValues("PhoronixTestSuite/Benchmark/TestArguments"); + $original_results_proportion = $original_xml_reader->getXMLArrayValues("PhoronixTestSuite/Benchmark/Proportion"); + $original_results_result_format = $original_xml_reader->getXMLArrayValues("PhoronixTestSuite/Benchmark/ResultFormat"); + + $original_results_identifiers = array(); + $original_results_values = array(); + + foreach($original_results_raw as $original_result_raw) + { + $original_xml_results = new tandem_XmlReader($original_result_raw); + array_push($original_results_identifiers, $original_xml_results->getXMLArrayValues("Group/Entry/Identifier")); + array_push($original_results_values, $original_xml_results->getXMLArrayValues("Group/Entry/Value")); + } + unset($OLD_RESULTS, $original_xml_reader, $original_results_raw); + + $RESULTS = new tandem_XmlWriter(); + + $RESULTS->setXslBinding("pts-results-viewer/pts-results-viewer.xsl"); + + $RESULTS->addXmlObject("PhoronixTestSuite/Suite/Title", 0, $new_suite_title); + $RESULTS->addXmlObject("PhoronixTestSuite/Suite/Name", 0, $new_suite_name); + $RESULTS->addXmlObject("PhoronixTestSuite/Suite/Version", 0, $new_suite_version); + $RESULTS->addXmlObject("PhoronixTestSuite/Suite/Description", 0, $new_suite_description); + $RESULTS->addXmlObject("PhoronixTestSuite/Suite/Type", 0, $new_suite_type); + $RESULTS->addXmlObject("PhoronixTestSuite/Suite/Maintainer", 0, $new_suite_maintainer); + + // TODO: ADD MORE COMPATIBILITY CHECKS!!!! + + if(count($original_system_hardware) == 1 && count($new_system_hardware) == 1 && $original_system_hardware[0] == $new_system_hardware[0] && $original_system_software[0] == $new_system_software[0] && $original_pts_version[0] == $new_pts_version[0]) + { + $USE_ID = pts_request_new_id(); + $RESULTS->addXmlObject("PhoronixTestSuite/System/Hardware", $USE_ID, $original_system_hardware[0]); + $RESULTS->addXmlObject("PhoronixTestSuite/System/Software", $USE_ID, $original_system_software[0]); + $RESULTS->addXmlObject("PhoronixTestSuite/System/Author", $USE_ID, $original_system_author[0]); + $RESULTS->addXmlObject("PhoronixTestSuite/System/TestDate", $USE_ID, date("F j, Y h:i A")); + $RESULTS->addXmlObject("PhoronixTestSuite/System/TestNotes", $USE_ID, $original_system_notes[0]); + $RESULTS->addXmlObject("PhoronixTestSuite/System/Version", $USE_ID, $original_pts_version[0]); + $RESULTS->addXmlObject("PhoronixTestSuite/System/AssociatedIdentifiers", $USE_ID, $original_associated_identifiers[0] . "," . $new_associated_identifiers[0]); + } + else + { + for($i = 0; $i < count($original_system_hardware); $i++) + { + $USE_ID = pts_request_new_id(); + $RESULTS->addXmlObject("PhoronixTestSuite/System/Hardware", $USE_ID, $original_system_hardware[$i]); + $RESULTS->addXmlObject("PhoronixTestSuite/System/Software", $USE_ID, $original_system_software[$i]); + $RESULTS->addXmlObject("PhoronixTestSuite/System/Author", $USE_ID, $original_system_author[$i]); + $RESULTS->addXmlObject("PhoronixTestSuite/System/TestDate", $USE_ID, $original_system_date[$i]); + $RESULTS->addXmlObject("PhoronixTestSuite/System/TestNotes", $USE_ID, $original_system_notes[$i]); + $RESULTS->addXmlObject("PhoronixTestSuite/System/Version", $USE_ID, $original_pts_version[$i]); + $RESULTS->addXmlObject("PhoronixTestSuite/System/AssociatedIdentifiers", $USE_ID, $original_associated_identifiers[$i]); + } + for($i = 0; $i < count($new_system_hardware); $i++) + { + $USE_ID = pts_request_new_id(); + $RESULTS->addXmlObject("PhoronixTestSuite/System/Hardware", $USE_ID, $new_system_hardware[$i]); + $RESULTS->addXmlObject("PhoronixTestSuite/System/Software", $USE_ID, $new_system_software[$i]); + $RESULTS->addXmlObject("PhoronixTestSuite/System/Author", $USE_ID, $new_system_author[$i]); + $RESULTS->addXmlObject("PhoronixTestSuite/System/TestDate", $USE_ID, $new_system_date[$i]); + $RESULTS->addXmlObject("PhoronixTestSuite/System/TestNotes", $USE_ID, $new_system_notes[$i]); + $RESULTS->addXmlObject("PhoronixTestSuite/System/Version", $USE_ID, $new_pts_version[$i]); + $RESULTS->addXmlObject("PhoronixTestSuite/System/AssociatedIdentifiers", $USE_ID, $new_associated_identifiers[$i]); + } + } + + for($b = 0; $b < count($original_results_identifiers); $b++) + { + $USE_ID = pts_request_new_id(); + $RESULTS->addXmlObject("PhoronixTestSuite/Benchmark/Name", $USE_ID, $original_results_name[$b]); + $RESULTS->addXmlObject("PhoronixTestSuite/Benchmark/Version", $USE_ID, $original_results_version[$b]); + $RESULTS->addXmlObject("PhoronixTestSuite/Benchmark/Attributes", $USE_ID, $original_results_attributes[$b]); + $RESULTS->addXmlObject("PhoronixTestSuite/Benchmark/Scale", $USE_ID, $original_results_scale[$b]); + $RESULTS->addXmlObject("PhoronixTestSuite/Benchmark/Proportion", $USE_ID, $original_results_proportion[$b]); + $RESULTS->addXmlObject("PhoronixTestSuite/Benchmark/TestName", $USE_ID, $original_results_testname[$b]); + $RESULTS->addXmlObject("PhoronixTestSuite/Benchmark/TestArguments", $USE_ID, $original_results_arguments[$b]); + $RESULTS->addXmlObject("PhoronixTestSuite/Benchmark/ResultFormat", $USE_ID, $original_results_result_format[$b]); + + for($o = 0; $o < count($original_results_identifiers[$b]); $o++) + { + $RESULTS->addXmlObject("PhoronixTestSuite/Benchmark/Results/Group/Entry/Identifier", $USE_ID, $original_results_identifiers[$b][$o], 5, "o-$b-$o"); + $RESULTS->addXmlObject("PhoronixTestSuite/Benchmark/Results/Group/Entry/Value", $USE_ID, $original_results_values[$b][$o], 5, "o-$b-$o"); + } + + for($o = 0; $o < count($new_results_identifiers[$b]); $o++) + { + $RESULTS->addXmlObject("PhoronixTestSuite/Benchmark/Results/Group/Entry/Identifier", $USE_ID, $new_results_identifiers[$b][$o], 5, "n-$b-$o"); + $RESULTS->addXmlObject("PhoronixTestSuite/Benchmark/Results/Group/Entry/Value", $USE_ID, $new_results_values[$b][$o], 5, "n-$b-$o"); + } + } + + return $RESULTS->getXML(); +} + +?> |