diff options
-rw-r--r-- | CHANGE-LOG | 6 | ||||
-rwxr-xr-x | phoronix-test-suite | 26 | ||||
-rw-r--r-- | pts-core/functions/pts-functions.php | 16 | ||||
-rw-r--r-- | pts-core/pts-run-cmd.php | 52 |
4 files changed, 93 insertions, 7 deletions
@@ -1,5 +1,11 @@ PHORONIX TEST SUITE CHANGE-LOG +Phoronix Test Suite +- Clean up phoronix-test-suite SH file +- Define PTS_USER_DIR inside the phoronix-test-suite SH file +- Define DOWNLOAD_CACHE directory inside the phoronix-test-suite SH file, with support for user-define DOWNLOAD_CACHE= +- Add make-download-cache option. Running make-download-cache will backup all files downloaded by the Phoronix Test Suite to the DOWNLOAD_CACHE directory, and performs MD5 check-sum comparisons. This is used for easily backing up all your downloaded files so that they can be transfered between test machines + Phoronix Test Suite 0.5.1 May 5, 2008 diff --git a/phoronix-test-suite b/phoronix-test-suite index c755ad0..d77a11e 100755 --- a/phoronix-test-suite +++ b/phoronix-test-suite @@ -9,6 +9,21 @@ # Full path to root directory of the actual Phoronix Test Suite code export PTS_DIR=`pwd` +if [ $PTS_DIR != `pwd` ] +then + cd $PTS_DIR +fi + +# Location to save results, download cache, results viewer, etc. Must have trailing slash. +export PTS_USER_DIR=$HOME'/.phoronix-test-suite/' + +# Set DOWNLOAD_CACHE if it's not set already by the user +if [ "X$DOWNLOAD_CACHE" = "X" ] +then + export DOWNLOAD_CACHE=$PTS_USER_DIR'download-cache/' +fi + +# Determine PHP binary location if [ -x /usr/bin/php5 ] || [ -x /usr/local/bin/php5 ] then export PHP_BIN="php5" @@ -19,6 +34,7 @@ else export PHP_BIN="" fi +# Make sure PHP is installed if [ "X$PHP_BIN" = "X" ] then echo "\n\nPHP5 CLI Must Be Installed To Run The Phoronix Test Suite!" @@ -28,11 +44,6 @@ then echo "For support visit: http://www.phoronix.com/forums/forumdisplay.php?f=49\n\n" fi -if [ $PTS_DIR != `pwd` ] -then - cd $PTS_DIR -fi - case "$1" in "install") $PHP_BIN pts-core/pts-run-cmd.php INSTALL_BENCHMARK $2 @@ -69,6 +80,9 @@ case "$1" in "upload") $PHP_BIN pts-core/pts-run-cmd.php UPLOAD_RESULT $2 ;; +"make-download-cache") + $PHP_BIN pts-core/pts-run-cmd.php MAKE_DOWNLOAD_CACHE + ;; "list-tests") $PHP_BIN pts-core/pts-run-cmd.php LIST_TESTS ;; @@ -110,7 +124,6 @@ case "$1" in echo "Phoronix Test Suite" echo "http://www.phoronix-test-suite.com/" echo "=================================\n" -# echo "gui: Launch The Phoronix Test Suite GUI" echo "install <suite OR test>: Install or Update The Specified Test(s)" echo "install-dependencies <suite OR test>: Install The External (Distribution) Dependencies For Specified Test(s)" echo "run <suite OR test>: Run The Specified Test/Suite" @@ -121,6 +134,7 @@ case "$1" in echo "list-tests: List all Phoronix Test Suite test profiles" echo "list-suites: List all Phoronix Test Suites" echo "list-results: List all saved results" + echo "make-download-cache: Backup all saved files to ~/.phoronix-test-suite/download-cache/" echo "remove-result <Saved File>: Remove this saved result file and associated files" echo "remove-all-results: Removes all saved results and associated files" echo "suite-info: Show tests in a suite and other information about the suite" diff --git a/pts-core/functions/pts-functions.php b/pts-core/functions/pts-functions.php index 5d8b3b1..1829a63 100644 --- a/pts-core/functions/pts-functions.php +++ b/pts-core/functions/pts-functions.php @@ -33,6 +33,19 @@ function pts_directory() return $dir; } +function pts_download_cache() +{ + $dir = getenv("DOWNLOAD_CACHE"); + + if(empty($dir)) + $dir = PTS_USER_DIR . "download-cache/"; + else + if(substr($dir, -1) != '/') + $dir .= '/'; + + return $dir; +} + define("PTS_DIR", pts_directory()); define("PHP_BIN", getenv("PHP_BIN")); @@ -60,7 +73,8 @@ define("SCRIPT_DISTRO_DIR", PTS_DIR . "pts/distro-scripts/"); define("BENCHMARK_RESOURCE_DIR", PTS_DIR . "pts/test-resources/"); define("ETC_DIR", PTS_DIR . "pts/etc/"); define("RESULTS_VIEWER_DIR", PTS_DIR . "pts-core/pts-results-viewer/"); -define("PTS_USER_DIR", pts_find_home("~/.phoronix-test-suite/")); +define("PTS_USER_DIR", getenv("PTS_USER_DIR")); +define("PTS_DOWNLOAD_CACHE_DIR", pts_download_cache()); define("PTS_MONITOR_DIR", PTS_USER_DIR . strtolower(PTS_CODENAME) . '/'); //define("FONT_DIRECTORY" "/usr/share/fonts/"); diff --git a/pts-core/pts-run-cmd.php b/pts-core/pts-run-cmd.php index afb9664..6f3d3eb 100644 --- a/pts-core/pts-run-cmd.php +++ b/pts-core/pts-run-cmd.php @@ -86,6 +86,58 @@ switch($COMMAND) else pts_install_package_on_distribution($ARG_1); break; + case "MAKE_DOWNLOAD_CACHE": + echo pts_string_header("Phoronix Test Suite - Making Cache Of Downloads"); + + if(!is_dir(PTS_DOWNLOAD_CACHE_DIR)) + mkdir(PTS_DOWNLOAD_CACHE_DIR); + + foreach(glob(BENCHMARK_RESOURCE_DIR . "*/downloads.xml") as $downloads_file) + { + $test = substr($downloads_file, strlen(BENCHMARK_RESOURCE_DIR), 0 - 14); + $xml_parser = new tandem_XmlReader(file_get_contents($downloads_file)); + $package_url = $xml_parser->getXMLArrayValues(P_DOWNLOADS_PACKAGE_URL); + $package_md5 = $xml_parser->getXMLArrayValues(P_DOWNLOADS_PACKAGE_MD5); + $package_filename = $xml_parser->getXMLArrayValues(P_DOWNLOADS_PACKAGE_FILENAME); + $download_to = $xml_parser->getXMLArrayValues(P_DOWNLOADS_PACKAGE_DESTINATION); + + echo "\nChecking Downloads For: " . $test . "\n"; + + for($i = 0; $i < count($package_url); $i++) + { + if(empty($package_filename[$i])) + { + $package_filename[$i] = basename($package_url[$i]); + } + + if(is_file(PTS_DOWNLOAD_CACHE_DIR . $package_filename[$i]) && md5_file(PTS_DOWNLOAD_CACHE_DIR . $package_filename[$i]) == $package_md5[$i]) + { + echo "\tPreviously Cached: " . $package_filename[$i] . "\n"; + } + else + { + if(is_file(BENCHMARK_ENV_DIR . $test . "/" . $package_filename[$i]) && $download_to[$i] != "SHARED") + { + if(md5_file(BENCHMARK_ENV_DIR . $test . "/" . $package_filename[$i]) == $package_md5[$i]) + { + echo "\tCaching: " . $package_filename[$i] . "\n"; + copy(BENCHMARK_ENV_DIR . $test . "/" . $package_filename[$i], PTS_DOWNLOAD_CACHE_DIR . $package_filename[$i]); + } + + } + else if(is_file(BENCHMARK_ENV_DIR . "pts-shared/" . $package_filename[$i]) && $download_to[$i] == "SHARED") + { + if(md5_file(BENCHMARK_ENV_DIR . "pts-shared/" . $package_filename[$i]) == $package_md5[$i]) + { + echo "\tCaching: " . $package_filename[$i] . "\n"; + copy(BENCHMARK_ENV_DIR . "pts-shared/" . $package_filename[$i], PTS_DOWNLOAD_CACHE_DIR . $package_filename[$i]); + } + } + } + } + } + echo "\n"; + break; case "LIST_TESTS": echo pts_string_header("Phoronix Test Suite - Tests"); foreach(glob(XML_PROFILE_DIR . "*.xml") as $benchmark_file) |