summaryrefslogtreecommitdiffstats
path: root/pts-core/modules
diff options
context:
space:
mode:
authorMichael Larabel <michael@phx-laptop.(none)>2008-09-13 08:27:30 -0400
committerMichael Larabel <michael@phx-laptop.(none)>2008-09-13 08:27:30 -0400
commitfa259497425e4c17e675b7214fe206bed52738dc (patch)
treed42fa1a16746d685937e148b162517fe60595b20 /pts-core/modules
parentc7234634629df80df32c35b1aad7f7f5757175d9 (diff)
downloadphoronix-test-suite-upstream-fa259497425e4c17e675b7214fe206bed52738dc.tar.gz
phoronix-test-suite-upstream-fa259497425e4c17e675b7214fe206bed52738dc.tar.xz
phoronix-test-suite-upstream-fa259497425e4c17e675b7214fe206bed52738dc.zip
timed_screenshot: A module that takes a screenshot while tests are
running at a pre-defined interval
Diffstat (limited to 'pts-core/modules')
-rw-r--r--pts-core/modules/module-variables.txt1
-rw-r--r--pts-core/modules/timed_screenshot.php81
2 files changed, 82 insertions, 0 deletions
diff --git a/pts-core/modules/module-variables.txt b/pts-core/modules/module-variables.txt
index 1a6e930..30cda4a 100644
--- a/pts-core/modules/module-variables.txt
+++ b/pts-core/modules/module-variables.txt
@@ -3,3 +3,4 @@ FORCE_AA=graphics_override
FORCE_AF=graphics_override
HALT_SCREENSAVER=toggle_screensaver
EMAIL_RESULTS_TO=email_results
+SCREENSHOT_INTERVAL=timed_screenshot
diff --git a/pts-core/modules/timed_screenshot.php b/pts-core/modules/timed_screenshot.php
new file mode 100644
index 0000000..2c0874f
--- /dev/null
+++ b/pts-core/modules/timed_screenshot.php
@@ -0,0 +1,81 @@
+<?php
+
+/*
+ Phoronix Test Suite
+ URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
+ Copyright (C) 2008, Phoronix Media
+ Copyright (C) 2004-2008, Michael Larabel
+ timed_screenshot.php: A PTS module that takes a screenshot at a pre-defined interval.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+class timed_screenshot extends pts_module_interface
+{
+ const module_name = "Timed Screenshot";
+ const module_version = "0.1.0";
+ const module_description = "This is a module that will take a screenshot of the system at a pre-defined interval. ImageMagick must be installed onto the system prior to using this module.";
+ const module_author = "Phoronix Media";
+
+ static $screenshot_count = 0;
+ static $screenshot_interval = 15;
+
+ public static function __startup()
+ {
+ pts_module::remove_file("is_running");
+ $PATH = getenv("PATH");
+ $found = false;
+
+ foreach(explode(":", $PATH) as $single_path)
+ if(is_file($single_path . "/import"))
+ $found = true;
+
+ if(!$found)
+ {
+ echo "\nImageMagick must first be installed onto this system!\n";
+ return PTS_MODULE_UNLOAD;
+ }
+
+ if(($interval = getenv("SCREENSHOT_INTERVAL")) > 0 && is_numeric($interval))
+ self::$screenshot_interval = $interval;
+ }
+ public static function __shutdown()
+ {
+ if(self::$screenshot_count > 0)
+ echo "\n" . self::$screenshot_count . " screenshots recorded. They are saved in the " . pts_module::save_dir() . " directory.\n";
+ }
+
+ public static function __pre_run_process()
+ {
+ pts_module::pts_timed_function(self::$screenshot_interval, "take_screenshot");
+ }
+ public static function __pre_test_run()
+ {
+ pts_module::save_file("is_running", "yes");
+ }
+ public static function __post_test_run()
+ {
+ pts_module::remove_file("is_running");
+ }
+ public static function take_screenshot()
+ {
+ if(pts_module::read_file("is_running") == "yes")
+ {
+ shell_exec("import -window root " . pts_module::save_dir() . "screenshot-" . self::$screenshot_count . ".png");
+ self::$screenshot_count++;
+ }
+ }
+}
+
+?>