Compare commits

...

611 Commits

Author SHA1 Message Date
Michael Larabel
1b1f7f191f Phoronix Test Suite 7.0.0 prepping... 2017-03-06 16:30:48 -06:00
Michael Larabel
516b41017a phodevi: Expand GCC version detection when -dumpversion isn't supported (e.g. gcc-snapshot of gcc 7.0.1) 2017-03-06 13:41:42 -06:00
Michael Larabel
0ea2375c87 pts-core: Last testing before 7.0.0 2017-03-04 09:38:37 -06:00
Michael Larabel
be1a4dec8a pts-core: Improve formatting of PDF generation on large result files 2017-03-01 20:35:07 -06:00
Michael Larabel
7aadba1d57 pts-core: Make the AppStream meta data happy 2017-03-01 06:43:45 -06:00
Michael Larabel
7bf6c03113 Phoronix Test Suite 7.0.0 Milestone 5 2017-02-28 19:52:06 -06:00
Michael Larabel
60716494e6 pts-core: Show results in text mode when show-result sub-command is run without DISPLAY 2017-02-28 13:59:15 -06:00
Michael Larabel
51acdc67c7 pts-core: Trivial changes 2017-02-28 11:42:57 -06:00
Michael Larabel
c279b0a3a3 report_test_run_times: new module to report test run times as result graphs 2017-02-23 06:59:01 -06:00
Michael Larabel
bf2e8dcc16 pts-core: There's now a use-case for using microtime() over time() in pts_test_execution (new module next commit) 2017-02-23 06:58:22 -06:00
Michael Larabel
791d82ecdf pts-core: Only preserve the original raw result string if it differs from the final result 2017-02-22 14:59:30 -06:00
Michael Larabel
ed27e1a36f pts-core: Allow bzip2 compression of result file uploads to OpenBenchmarking.org 2017-02-21 18:44:44 -06:00
Fatima Sheremetyeva
da86cd5046 pts-core: Adjustment to previous commit 2017-02-21 09:20:04 -05:00
Fatima Sheremetyeva
78b7da54ef Merge branch 'master' of https://github.com/phoronix-test-suite/phoronix-test-suite 2017-02-21 08:26:17 -05:00
Fatima Sheremetyeva
f8f16f3e87 pts-core: Allow parsing of frame times in format to be used by HITMAN test profile 2017-02-21 08:24:55 -05:00
Michael Larabel
6885629cb7 pts_Graph: Remove rogue debug comment left 2017-02-16 12:03:19 -06:00
Michael Larabel
024189d25d Make it very clear PHP 7 is fully supported since some still seem to be confused... 2017-02-16 08:40:57 -06:00
Michael Larabel
8782fcdaa5 Phoronix Test Suite 7.0 Milestone 4 2017-02-16 08:16:10 -06:00
Michael Larabel
5bbf8a8caf pts_Graph: Improve rendering a bit of results for multi-way comparisons 2017-02-15 19:29:45 -06:00
Michael Larabel
1d21ea4a53 pts-core: Better normalizing for multi-way comparisons by inverting the current behavior 2017-02-15 19:22:04 -06:00
Michael Larabel
ea890b7b8b pts-core: More minor tweaks 2017-02-12 17:44:43 -06:00
Michael Larabel
da2648fec8 pts-core: Color the value rather than the scale on line graph results sent to CLI display 2017-02-09 17:15:48 -06:00
Michael Larabel
767e8641e1 pts_Graph: Make box plot parts more prominent 2017-02-09 16:46:42 -06:00
Michael Larabel
1658bf1e65 pts_Graph: Final optimizations for now.... 2017-02-09 16:42:05 -06:00
Michael Larabel
5245f152a1 pts_Graph: Further optimize the size of the box plot graphs 2017-02-09 16:21:02 -06:00
Michael Larabel
3cae6d56a6 pts_Graph: typo fix 2017-02-09 11:53:36 -06:00
Michael Larabel
22e0a1134a pts-core: Drop some more rounding 2017-02-09 11:51:12 -06:00
Michael Larabel
18f8662c24 pts_Graph: More values that should have been rounded 2017-02-09 11:50:28 -06:00
Michael Larabel
42b9a5b6fd pts-core: Ensure top_end is rounded 2017-02-09 11:48:32 -06:00
Michael Larabel
2e57174e46 pts_Graph: Get rid of some artificial 0.5 +/- 2017-02-09 11:45:05 -06:00
Michael Larabel
39aef2d526 pts_Graph: More optimizations 2017-02-09 11:42:00 -06:00
Michael Larabel
9af4fe7a0e pts_Graph: Some optimizations to compact systems table 2017-02-09 11:17:56 -06:00
Michael Larabel
894364a09c pts_Graph: Various SVG size/efficiency optimizations 2017-02-09 10:48:27 -06:00
Michael Larabel
3bbd06d599 pts_Graph: Various graph tweaks / minor improvements 2017-02-09 09:41:05 -06:00
Michael Larabel
1907838b35 pts_Graph: Slightly increase per_identifier_height size on multi-way comparisons 2017-02-09 08:58:07 -06:00
Michael Larabel
8eda4a5a91 pts-core: Just some trivial updates 2017-02-08 21:00:55 -06:00
Michael Larabel
712de905a4 pts-core: Improve some styling for the 'info' sub-command 2017-02-08 20:41:15 -06:00
Michael Larabel
a1d05a987c pts-core: Improved styling for 'help' sub-command 2017-02-08 20:32:26 -06:00
Michael Larabel
abbe900f13 pts-core: UI improvements for system-sensors and compact systems table 2017-02-08 18:31:53 -06:00
Michael Larabel
5a96db3380 pts_Graph: Refine the multi-way bar height algo 2017-02-08 17:39:53 -06:00
Fatima Sheremetyeva
56ef1a00b6 phodevi: Append LLVM version to OpenGL driver string where relevant 2017-02-08 12:50:27 -05:00
Michael Larabel
e6f19c8988 pts-core: Few text formatting improvements 2017-02-08 11:43:09 -06:00
Michael Larabel
0d768702e0 pts_Graph: Allow more compact multi-way comparison graphs 2017-02-08 08:57:13 -06:00
Michael Larabel
a45895b0ff pts-core: stress-run styling improvements 2017-02-07 12:30:52 -06:00
Michael Larabel
c1a6dcc851 pts_Graph: Continued tweaking of graph UI 2017-02-07 10:52:32 -06:00
Michael Larabel
eafc5b7a7f phodevi: Continued tweaking on the new system information view 2017-02-07 09:25:58 -06:00
Michael Larabel
1c31a919b6 pts-core: OpenSUSE exdep installer should be set to non-interactive 2017-02-07 06:46:36 -06:00
Michael Larabel
5e02c1202c pts-core: OpenSUSE external dependency updates 2017-02-07 06:45:09 -06:00
Michael Larabel
2c9cfa4aa7 Phoronix Test Suite 7.0 M3 2017-02-06 20:30:31 -06:00
Michael Larabel
9b22974ea4 pts-core: Only color-code results when there are more than 1 result to be listed 2017-02-05 20:49:34 -06:00
Michael Larabel
bee7eeb30a pts-core: Some more CLI formatting improvements 2017-02-05 19:46:21 -06:00
Michael Larabel
a7a0a85183 pts-core: Rogue $ at EOF 2017-02-03 07:41:59 -06:00
Michael Larabel
be6ee9b44e pts-core: More coloring improvements 2017-02-03 07:20:16 -06:00
Michael Larabel
98a9f44146 pts-core: Various console coloring improvements 2017-02-02 21:02:40 -06:00
Michael Larabel
9004ab7410 pts-core: Restore setting the OpenBenchmarking.org ID to the ReferenceID field in the result file when cloning from OpenBenchmarking.org 2017-02-02 20:28:52 -06:00
Fatima Sheremetyeva
43e0657d62 pts-core: Add debug-result-parser sub-command as a way to debug test profile result-parser defintions, just scan for old test log files and don't actually execute test 2017-02-02 16:10:14 -05:00
Michael Larabel
639a4739e5 pts-core: Trivial text modifications 2017-02-01 20:20:45 -06:00
Michael Larabel
5d988fb686 pts-core: tweaking text string for test results 2017-02-01 20:01:04 -06:00
Michael Larabel
602ad4bd8e pts-core: Bump core version for clarity 2017-02-01 19:42:35 -06:00
Michael Larabel
7ea7799327 pts-core: Text improvements when using cache share 2017-02-01 19:27:45 -06:00
Michael Larabel
edce918fc2 pts-core: More result handling work 2017-02-01 19:08:32 -06:00
Fatima Sheremetyeva
66966c63bd pts-core: Drop secondary_linked_results handling now that all tests can create multiple result outputs natively, use that code path 2017-02-01 19:42:29 -05:00
Fatima Sheremetyeva
4fdbf3e04d pts-core: Adjustments for piping secondary linked runs over to the new code paths 2017-02-01 19:39:36 -05:00
Michael Larabel
28689112ef pts-core: Allow one test run to generate multiple result outputs (graphs, etc) from multiple result-definition entries 2017-02-01 15:50:54 -06:00
Michael Larabel
bfbd5600bf pts-core: Almost done plumbing for multiple result outputs 2017-02-01 13:23:15 -06:00
Michael Larabel
4ba6342b94 pts-core: big cleanup around active-> handling in test execution 2017-02-01 11:02:08 -06:00
Michael Larabel
d72518f471 pts-core: Add AppendToArgumentsDescription to the results-parser schema for appending a string to the used arguments description string on test execution
pts-core: Add the result-scale to the test profile comparison_hash (NOTE: any external data stores making use of the comparison_hash should thus rebuild their hash indexes)
2017-02-01 09:36:48 -06:00
Michael Larabel
e1340308aa pts-core: Dropping of some deprecated checks 2017-01-31 19:59:05 -06:00
Michael Larabel
e9788b9f35 pts-core: Fix from yesterday's changes causing sensor-based result tests from registering results with the new interfaces 2017-01-31 09:48:15 -06:00
Michael Larabel
3b65a0329e ChangeLog: Cleanup change-log entries, drop pre-4.0 work 2017-01-30 21:01:43 -06:00
Michael Larabel
7c02413dc6 pts-core: Last of the result parser changes for now, probably 2017-01-30 20:47:11 -06:00
Michael Larabel
9a4d519a18 pts-core: More test result parsing debug improvements 2017-01-30 20:26:55 -06:00
Michael Larabel
218f5cfab0 pts-core: add more debugging helpers for test result parsing 2017-01-30 20:24:19 -06:00
Michael Larabel
82389c8e6a pts-core: Streamline the min/max handling in the test result parser 2017-01-30 19:48:05 -06:00
Michael Larabel
fd26da038a pts-core: Introduce parse_result_process_entry to pts_test_result_parser 2017-01-30 19:37:27 -06:00
Michael Larabel
0c84dd460c pts-core: continued pts_test_result_parser restructuring 2017-01-30 19:19:48 -06:00
Michael Larabel
05e5b13b17 pts-core: More cleansing of pts_test_result_parser 2017-01-30 19:00:13 -06:00
Michael Larabel
976a1564c2 pts-core: Streamline PASS/FAIL result handling 2017-01-30 17:01:40 -06:00
Michael Larabel
803e11d274 pts-core: More cleaning in pts_test_result_parser 2017-01-30 16:45:18 -06:00
Michael Larabel
4f60331beb pts-core: Better safeguard against returning bad data in pts_test_result_parser 2017-01-30 16:20:21 -06:00
Michael Larabel
5219e0a08d pts-core: More refactoring of pts_test_execution / pts_test_result_parser 2017-01-30 15:47:15 -06:00
Michael Larabel
c166443a11 pts-core: Move result post-processing from test_run_manager into pts_test_execution... working towards one-run-multi-result parsing support 2017-01-30 15:24:26 -06:00
Michael Larabel
d8d72f6d4e pts-core: Some improved detection of generic external dependency packages 2017-01-28 08:20:19 -06:00
Michael Larabel
4be09f1155 pts-core: Formatting improvements plus add percentages for winners-and-losers 2017-01-28 07:57:29 -06:00
Michael Larabel
c4a82ae8f6 pts-core: Don't pass files greater than ~50MB to the result parser as likely too big to parse and invalid data like lots of warnings/errors from test 2017-01-27 17:33:08 -06:00
Michael Larabel
a19b10d401 pts-core: fix another case of installed_test data potentially being unset 2017-01-26 11:05:34 -06:00
Michael Larabel
5d941004e2 pts-core: Avoid possible case of unset compilerdata 2017-01-26 10:43:25 -06:00
Michael Larabel
c3c47d7829 pts-core: for winners-and-losers ensure each result object has at least two results 2017-01-26 09:48:29 -06:00
Michael Larabel
ec013399f0 pts-core: Add winners-and-losers sub-command for providing some first/last place finish stats 2017-01-25 16:02:51 -06:00
Michael Larabel
60154761b5 phodevi: CPU cache size string 2017-01-23 10:41:49 -06:00
Michael Larabel
afa41dcb8b phodevi: Add 'cpu' 'cache-size' support on macOS 2017-01-23 10:39:18 -06:00
Michael Larabel
200f25160d Phoronix Test Suite 7.0 Milestone 2 2017-01-23 05:27:04 -06:00
Michael Larabel
a21ae0bbc1 phodevi: Add microcode version reporting on Linux 2017-01-22 20:11:06 -06:00
Michael Larabel
ffdd31d273 pts-core: Slight optimization as that string at that point for now is always null 2017-01-22 20:10:48 -06:00
Michael Larabel
460fda86bf pts-core: Small cleanups 2017-01-22 19:48:12 -06:00
Michael Larabel
7607477254 pts-core: Condense list-test-usage lines 2017-01-22 18:57:58 -06:00
Michael Larabel
1bf2f3239a pts-core: Cleanup phoronix-test-suite list-test-usage 2017-01-22 18:54:04 -06:00
Michael Larabel
c569da824c pts-core: Copy paste fail previous commit 2017-01-22 18:44:30 -06:00
Michael Larabel
f3891dc41d pts-core: Cleanup XML usage in pts_installed_test 2017-01-22 18:40:20 -06:00
Michael Larabel
c5908f1979 pts-core: Cleanup XML usage in pts_exdep_generic_parser 2017-01-22 18:32:14 -06:00
Michael Larabel
7b734c9cd9 pts-core: Cleanup XML handling in pts_exdep_platform_parser 2017-01-22 18:23:33 -06:00
Michael Larabel
e1d75936de pts-core: Drop nye_XmlReader abstraction in pts_test_result_parser 2017-01-22 17:50:39 -06:00
Michael Larabel
7d0b809ea9 pts-core: Eliminate pts_parse_results_nye_XmlReader abstraction 2017-01-22 16:42:20 -06:00
Michael Larabel
a71bd2cbf8 pts-core: Eliminate pts_test_downloads_nye_XmlReader 2017-01-22 16:35:15 -06:00
Michael Larabel
8941860e9b phodevi: typo from previous commit 2017-01-17 15:52:54 -06:00
Michael Larabel
a000c0ef20 phodevi: No reason to show thread count if same as core count 2017-01-17 15:52:12 -06:00
Michael Larabel
e4b47aa5a4 pts-core: Drop detailed-system-info sub-command now that system-info is more verbose 2017-01-16 15:26:48 -06:00
Michael Larabel
3b95afe1f0 phodevi: Don't rely upon X.Org DDX driver logic for determining GPU frequency since it's not portable to Wayland or with -modesetting DDX 2017-01-16 15:25:58 -06:00
Michael Larabel
d279629ee4 phodevi: Fix for hanging Windows client when requesting disk mount options 2017-01-16 12:36:57 -06:00
Michael Larabel
a28727598e Merge branch 'master' of github.com:phoronix-test-suite/phoronix-test-suite 2017-01-16 08:49:49 -06:00
Michael Larabel
5f23296e9b pts-core: More system info string improvements 2017-01-16 08:49:29 -06:00
Michael Larabel
09e721cfda pts-core: Add coloring to system_centralized_view section headers 2017-01-16 07:21:48 -06:00
Michael Larabel
a87b8fbad7 Merge pull request #153 from nevion/master
add lapacke and opencl-headers
2017-01-16 06:00:05 -05:00
Jason Newton
2ccaf6eab9 add opencl-headers to opensuse 2017-01-16 03:51:10 -05:00
Jason Newton
5d26bc75ab add lapacke to lapack-development 2017-01-16 03:50:56 -05:00
Michael Larabel
38b813186e pts-core: Few more tweaks for earlier commit 2017-01-15 22:02:50 -06:00
Michael Larabel
f66269971b pts-core: More system_centralized_view improvements 2017-01-15 21:53:02 -06:00
Michael Larabel
b10d6d62bb pts-core: Introduce new view of system software/hardware details on test run and system-info command 2017-01-15 21:34:56 -06:00
Michael Larabel
d2f7ef4d59 pts-core: Indicate HIB/LIB result proportion when dumping results as CSV 2017-01-14 12:04:31 -06:00
Michael Larabel
eaac34ce9b pts-core: OB trivial updates 2017-01-14 12:02:12 -06:00
Michael Larabel
4f3c6d1046 TODO: some test profile updates 2017-01-13 17:28:08 -06:00
Michael Larabel
ee17c558b5 build-package-deb: php5-cli is only dependency needed, php-cli php-xml separation was for PHP7 2017-01-13 13:31:06 -06:00
Michael Larabel
1adc5604d7 pts-core: Check for headers if needed in /usr/include/x86_64-linux-gnu/ during external dependency resolution 2017-01-13 07:23:49 -06:00
Michael Larabel
c5d6fbe9b7 Phoronix Test Suite 7.0 M1 2017-01-12 05:29:52 -06:00
Michael Larabel
c6170880ed pts-core: Add estimate-run-time sub-command for estimating test/suite/result-file run length 2017-01-11 15:48:54 -06:00
Michael Larabel
bba7a462b7 ChangeLog: Add from previous commit 2017-01-07 20:46:55 -06:00
Michael Larabel
a023c9ffb8 phoromatic: Report status updates more often 2017-01-07 20:46:27 -06:00
Michael Larabel
98f536a827 pts_Graph: More color branding changes 2017-01-07 19:12:59 -06:00
Michael Larabel
aec95545da pts_Graph: Add "Pentium" product string to Intel's coloring 2017-01-06 10:05:44 -06:00
Michael Larabel
e10563d25c pts-core: Add apt-file to the Ubuntu external dependencies as it is needed for the reverse dependency handling 2017-01-05 12:55:44 -06:00
Michael Larabel
360b2ea52c 2017 copyright updates for main files 2017-01-04 20:54:31 -06:00
Michael Larabel
d7000da52b pts-core: Cleanup PTS_USER_LOCK / run-lock handling 2017-01-04 19:16:10 -06:00
Michael Larabel
52f97d07fe Bump for Phoronix Test Suite 7.0-Ringsaker early development 2017-01-04 18:44:05 -06:00
Michael Larabel
a469cd9b24 phoromatic: Set by default for SQLite database WAL journal mode / NORMAL synchronous 2017-01-04 18:23:18 -06:00
Michael Larabel
d3c26130d8 phoronix-test-suite: Recommend php7 packages for zypper over php5 2016-12-29 15:57:19 -06:00
Michael Larabel
b6958aea66 pts-core: More external dependency coverage for BSDs 2016-12-21 10:02:51 -06:00
Michael Larabel
cd9f20a553 pts_Graph: Add "Ryzen" product string to AMD's coloring 2016-12-13 15:56:13 -06:00
Michael Larabel
327315004f Phoronix Test Suite 6.8.0-Tana 2016-12-05 18:41:32 -06:00
Michael Larabel
b1cabd5cce Add Phoronix Test Suite 7.x codenames, towns within Hedmark Norway 2016-12-04 20:54:26 -06:00
Michael Larabel
9cf7ecd68c FPDF: update 2016-12-01 17:32:20 -06:00
Michael Larabel
2fd7fd58ca phodevi: Rearrange ATI/AMD graphics checks 2016-11-30 17:15:03 -06:00
Michael Larabel
1939c50960 pts-core: More tweaks 2016-11-29 13:29:49 -06:00
Michael Larabel
2d6953fe67 pts-core: Fix for previous commit 2016-11-29 13:27:42 -06:00
Michael Larabel
7592fd09b1 phoromatic: allow clearing warnings/errors of a system from the systems page 2016-11-29 13:25:35 -06:00
Michael Larabel
c271719825 Phoronix Test Suite 6.8 Milestone 3 2016-11-27 20:48:43 -06:00
Michael Larabel
de63dcd52e devi: vRAM detection change to help AMDGPU-PRO 2016-11-27 18:42:10 -06:00
Michael Larabel
fbb21fcba7 phodevi: Some cleanup 2016-11-22 12:41:28 -06:00
Fatima Sheremetyeva
358e0e019e phodevi: GPU model improvements 2016-11-22 13:37:56 -05:00
Michael Larabel
6e15b68e82 phodevi: Round memory when needed to nearest 128MB 2016-11-22 12:25:57 -06:00
Michael Larabel
6347c3f982 log_exporter: fix for older versions of PHP 2016-11-22 05:09:34 -06:00
Michael Larabel
d152ee6166 phodevi: Memory string fix to help Kingston DIMMs that otherwise get ruled out 2016-11-21 20:51:26 -06:00
Michael Larabel
f28d8eff3d Phodevi: strip Mesa DRI when querying GLX renderer 2016-11-21 20:40:07 -06:00
Michael Larabel
4049811246 phodevi: Improved video RAM detection via GLX_MESA_query_renderer 2016-11-21 20:36:32 -06:00
Michael Larabel
7b2446ee52 pts-core: Ubuntu external dependency script fix 2016-11-21 18:00:08 -06:00
Michael Larabel
e30f391520 Phoronix Test Suite 6.8 Milestone 2 2016-11-15 08:31:35 -06:00
Michael Larabel
32073ad075 log_exporter: Allow easily exporting test run and system logs via COPY_TEST_RUN_LOGS_TO and COPY_SYSTEM_LOGS_TO env vars 2016-11-15 08:29:32 -06:00
Michael Larabel
5b1da20a39 pts-core: Add new module hooks for __test_log_output() and __post_test_run_system_logs() 2016-11-15 08:09:26 -06:00
Michael Larabel
01b3030ef8 phodevi: Don't load Phodevi sensors prior to PHP 5.3 due to compatibility issues 2016-11-10 11:06:50 -06:00
Michael Larabel
d35d61ed7a pts_Graph: Add Intel color highlighting for "Celeron" too 2016-11-09 07:15:27 -06:00
Michael Larabel
86ccf1f872 pts-core: Add PHP GD check as first thing when attempting to use result-file-to-pdf 2016-11-08 09:46:54 -06:00
Michael Larabel
7277d957d2 pts-core: Add new remove_inactive_systems option on systems page 2016-11-03 17:03:43 -05:00
Michael Larabel
3742302f6a Merge pull request #137 from sunnyflunk/master
pts-core: Update latest Solus dependency libs
2016-11-03 06:00:30 -04:00
Michael Larabel
04e0bb96ed results_custom_export: Example module for dumping PTS test results in custom formats 2016-10-31 11:27:00 -05:00
Michael Larabel
6f9e7feb1f pts_Graph: Just add a TODO comment 2016-10-31 11:26:28 -05:00
Michael Larabel
60ce0b5727 flamegrapher: Experimental new module to generate Linux perf / FlameGraph graphs for each test being executed when active 2016-10-31 11:05:13 -04:00
Michael Larabel
c6da014d03 Prep changes for next commit 2016-10-31 11:03:28 -04:00
Michael Larabel
dcd5b41ae7 pts-core: Fix malforming graphs when feeding many line graph results that are in a tracking-like manner that should be compacted to box plot 2016-10-27 07:59:45 -05:00
Michael Larabel
bdc952bd0c Phoronix Test Suite 6.8.0 Milestone 1 (Tana) 2016-10-27 07:15:40 -05:00
Michael Larabel
f823d6475f pts-Graph: Warning fix 2016-10-24 16:27:35 -05:00
Peter O'Connor
3c5e61286b pts-core: Update latest Solus dependency libs 2016-10-24 14:31:09 +11:00
Michael Larabel
63bc93c74c pts-core: Proper handling for when PHP ctype functions are not present 2016-10-17 09:29:59 -05:00
Michael Larabel
f3575e663a pts-core: Strip http/https from proxy address if needed 2016-10-17 07:12:28 -05:00
Michael Larabel
fefc17b87c phodevi: Also look for Vulkan ICDs at /usr/share/vulkan/icd.d/*.json 2016-10-06 15:14:30 -05:00
Michael Larabel
a26f2f5223 pts-core: Add PHOROMATIC_HTTP_PORT environment variable for overriding Phoromatic Server HTTP port on starting it 2016-10-06 06:21:18 -05:00
Michael Larabel
81dc40f174 Merge pull request #130 from sunnyflunk/Solus
pts-core: Update Solus external dependency handling
2016-09-30 06:01:23 -04:00
Peter O'Connor
283ea3f704 pts-core: Update Solus external dependency handling 2016-09-30 16:34:38 +10:00
Michael Larabel
97619f5014 pts-core: Don't preserve really large system logs (~1MB or greater) 2016-09-29 16:45:02 -05:00
Michael Larabel
bf934fb90b Phoronix Test Suite 6.6.1 2016-09-29 12:23:56 -05:00
Michael Larabel
f497023529 pts-core: Change file check for python-sklearn 2016-09-28 15:23:44 -05:00
Michael Larabel
6ee8cb107d pts-core: Add python-scipy and python-sklearn external dependencies 2016-09-28 08:37:37 -05:00
Michael Larabel
7330df29ae phoromatic: Fix "Password" text in the login page 2016-09-27 12:29:05 -05:00
Michael Larabel
a314034df7 pts-core: Add a note about the Linux RAM speed change 2016-09-26 19:38:25 -05:00
Michael Larabel
e78beb7e8a phodevi: Support for reporting memory frequency when overclocked if reported via "Configured Clock Speed" in dmidecode for RAM 2016-09-26 19:29:01 -05:00
Michael Larabel
4628e1cbb3 pts-core: Add list-not-installed-tests command (alias: list-uninstalled-tests) 2016-09-26 16:41:56 -05:00
Michael Larabel
0b8fdfc13f pts-core: Add list-uninstalled-tests command 2016-09-26 16:32:58 -05:00
Michael Larabel
dd0b6056a6 pts-core: Drop LIMIT_STRESS debug message 2016-09-22 14:21:38 -05:00
Michael Larabel
b9d5108479 pts-core: Don't pass test by reference 2016-09-22 14:05:54 -05:00
Michael Larabel
566ae6d648 pts-core: Introduce skip_test_check in pts_stress_run_manager 2016-09-22 10:22:39 -05:00
Michael Larabel
fdd0f5c6d1 pts-core: Add debug message on stress-run skipping over env var 2016-09-20 09:35:17 -05:00
Michael Larabel
f4435c54f6 pts-core: Add LIMIT_STRESS_*_TEST_COUNTS env var option 2016-09-09 11:44:56 -05:00
Michael Larabel
5c765b0b86 Documentation rebuild for previous commit 2016-09-08 13:46:19 -05:00
Michael Larabel
01efc7eeb7 pts-core: Add "phoronix-test-suite php-conf" sub-command to dump more useful PHP information for debugging 2016-09-08 13:44:19 -05:00
Michael Larabel
8b01a910f6 phoronix-test-suite: Move PHP7 binary detection to higher priority than PHP5 2016-09-07 10:56:13 -05:00
Michael Larabel
22a966553b pts-core: Detection for qupzilla browser when no alternative exists 2016-09-07 10:11:03 -05:00
Michael Larabel
8bc6d4ab3c pts-core: Cleanups for dragonflybsd external dependency handling 2016-09-06 17:20:17 -05:00
Michael Larabel
e28ab9feaf pts-core: Silly typo for previous commit 2016-09-06 17:16:31 -05:00
Michael Larabel
916bf5ef25 pts-core: Add check for ctype_alnum safeguard 2016-09-06 17:15:52 -05:00
Michael Larabel
9dea655699 phoronix-test-suite: Update pkg helper references to php70 rather than php5 2016-09-06 16:56:31 -05:00
Michael Larabel
160210de1f Phoronix Test Suite 6.6.0-Loppa 2016-09-06 10:01:12 -05:00
Michael Larabel
85b8fa1561 pts_Graph: On multi-way comparisons, always condense line graphs to modified box plots 2016-08-30 10:22:04 -05:00
Michael Larabel
390552847f Phoronix Test Suite 6.6.0 M3 2016-08-26 11:09:05 -05:00
Michael Larabel
041a10ab71 pts-core: Add a SVG DOM HTML back-end for lowering common SVG into pure HTML for cases like email clients where no SVG is supported 2016-08-24 19:07:21 -05:00
Michael Larabel
a6f0208080 pts-core: After running tests, if no browser/display is available, offer to show results via CLI graph/text rendering 2016-08-22 19:04:50 -05:00
Michael Larabel
afc3319808 pts-core: Another mail PDF sending tweak 2016-08-18 20:11:52 -05:00
Michael Larabel
04e34a9785 pts-core: Fix for previous commit 2016-08-18 19:49:18 -05:00
Michael Larabel
669d64fccd pts-core: Add PDF attachment to html_results_export email 2016-08-18 14:37:21 -05:00
Michael Larabel
d34da778eb system_monitor: Improve formatting when no sensors end up being used 2016-08-15 21:06:56 -05:00
Michael Larabel
2e7f7004bc pts-core: Make some objects easier to follow during the test execution result phase 2016-08-15 19:38:59 -05:00
Michael Larabel
924b3f1ebf pts-core: Don't actually need to return the active result buffer from pts_test_execution::run_test(), the output isn't really used 2016-08-15 19:33:57 -05:00
Michael Larabel
6bee435df4 pts-core: Add OpenMandriva/urpmi PHP dependency helper to launcher 2016-08-15 17:31:18 -05:00
Michael Larabel
914a1632dd html_results_export: New module exposed via EXPORT_RESULTS_HTML_EMAIL_TO and EXPORT_RESULTS_HTML_FILE_TO env vars for exporting HTML results 2016-08-15 16:39:16 -05:00
Michael Larabel
3a68779c1b pts-core: Update ubuntu-packages.xml 2016-08-15 16:39:04 -05:00
Michael Larabel
6e1a5fe51f pts-core: Add additional font paths in pts_svg_dom_gd 2016-08-09 12:26:13 -05:00
Michael Larabel
a63d7ccbe4 pts_Graph: When highlighting graph values, darken the color rather than use static color 2016-08-09 11:04:33 -05:00
Michael Larabel
2c05f1a225 phoromatic: Adjust function 2016-08-08 07:06:39 -05:00
Michael Larabel
f1866f7675 pts-core: color detection improvement 2016-08-07 10:00:50 -05:00
Michael Larabel
47bab9f402 Phoronix Test Suite 6.6 Milestone 2 2016-08-07 07:30:36 -05:00
Michael Larabel
131812eb54 pts-core: Another color tweak 2016-08-06 18:46:42 -05:00
Michael Larabel
d22ab87bd3 pts-core: More colored CLI text work 2016-08-06 18:38:48 -05:00
Michael Larabel
5172376256 pts-core: Initial work on CLI terminal colored text output 2016-08-06 18:34:09 -05:00
Michael Larabel
4a48da0cf4 Merge branch 'master' of github.com:phoronix-test-suite/phoronix-test-suite 2016-08-06 16:54:17 -05:00
Michael Larabel
372e3102bd pts-core: Fix notice in graphics_event_checker on FreeBSD 2016-08-06 16:54:03 -05:00
Fatima Sheremetyeva
b6a42d4fae Merge pull request #123 from fatima-sheremetyeva/master
phoromatic: Additional UI tweaks
2016-08-06 14:39:05 -05:00
Fatima Sheremetyeva
c42e629d12 phoromatic: Additional UI tweaks 2016-08-06 14:37:22 -05:00
Michael Larabel
eb241892bb pts-core: Restructure bash on windows check 2016-08-06 13:02:29 -05:00
Michael Larabel
ea65b2f735 pts-core: Ensure DragonFlyBSD pkg installation is done automatically 2016-08-06 12:16:28 -05:00
Michael Larabel
84de65a0b2 Merge pull request #122 from fatima-sheremetyeva/master
phoromatic: More UI work
2016-08-06 12:23:18 -04:00
Michael Larabel
a9e05b8296 phodevi: Show mdstat RAID Details when available 2016-08-06 09:07:09 -05:00
Michael Larabel
db31e1536d pts_Graph: Show extra disk details on system graph 2016-08-06 08:55:51 -05:00
Michael Larabel
1536c6160d pts-core: Show local suites in list-suites 2016-08-03 19:10:14 -05:00
Michael Larabel
f1a480380a pts-core: Introduce pts_tests::local_tests() 2016-08-03 19:06:23 -05:00
Michael Larabel
edbde811fc pts-core: Fix for upload-test-suite (on OpenBenchmarking.org side too) 2016-08-01 15:31:51 -05:00
Michael Larabel
e38d5bedc2 Merge pull request #121 from iuno/master
pts-core: prevent reinstall of present packages
2016-07-24 07:58:34 -04:00
iuno
5ee3eb0a29 pts-core: prevent reinstall of present packages 2016-07-24 13:50:11 +02:00
Michael Larabel
12f25faebe pts-core: Tweak to CSV 2016-07-18 19:42:05 -05:00
Michael Larabel
506d650e9e pts-core: Use identifier rather than test title on CSV output 2016-07-18 12:12:27 -05:00
Michael Larabel
0229f0a924 pts-core: Better parsing of time 2016-07-11 07:43:02 -05:00
Fatima Sheremetyeva
88c627b624 phoromatic: More UI work 2016-07-08 10:47:02 -05:00
Michael Larabel
f6d4ddd838 deploy: Update Debian packaging script 2016-07-06 20:20:22 -05:00
Michael Larabel
7bb2550573 Phoronix Test Suite 6.6 Loppa Milestone 1 2016-07-06 08:05:21 -05:00
Michael Larabel
bbb5009e80 pts-core: Disable stress-run messages about testing indefinitely 2016-07-01 15:42:29 -05:00
Michael Larabel
1ca04b1f70 pts-core: Disable test cache share when run in stress-run mode 2016-07-01 15:36:00 -05:00
Michael Larabel
dff1263dab Merge branch 'master' of github.com:phoronix-test-suite/phoronix-test-suite 2016-06-27 10:21:08 -05:00
Michael Larabel
f50fd289ed pts-core: Fix 2016-06-27 10:20:52 -05:00
Michael Larabel
2cc521ee61 pts_Graph: Color string tweaks 2016-06-26 08:01:43 -05:00
Michael Larabel
7c87cbcf35 phodevi: Fix to allow GPU temperature sensor to work with AMDGPU-PRO driver stack 2016-06-25 12:17:29 -05:00
Michael Larabel
a5e4944c0f pts-core: add sys/xattr.h check to attr generic package check 2016-06-22 13:59:46 -05:00
Fatima Sheremetyeva
59b63bc26d pts-core: Add Solus external dependency handling 2016-06-22 13:51:20 -05:00
Michael Larabel
c364e89793 pts-core: Add OpenCV to external dependencies list 2016-06-20 09:23:52 -05:00
Michael Larabel
3a88d83254 phoromatic: Allow custom versions to be manually specified on test suite web UI page 2016-06-19 16:40:17 -05:00
Michael Larabel
0015567d24 pts_Graph: Show min/max results on multi-way comparisons 2016-06-18 07:27:00 -05:00
Michael Larabel
30d79511bf pts-core: Ensure "none" isn't part of a word when stripping it from Phodevi interfaces 2016-06-03 11:20:31 -05:00
Michael Larabel
e6a12eceb4 pts-core: Fix previous commit 2016-06-03 09:33:24 -05:00
Michael Larabel
b05ca034c9 pts-core: Update possible merge combinations 2016-06-03 09:32:53 -05:00
Michael Larabel
b9da25a040 Phoronix Test Suite 6.4.0 2016-06-02 06:23:35 -05:00
Michael Larabel
f23f336477 pts-core: Update the update checker 2016-06-01 18:41:27 -05:00
Michael Larabel
41168d7dd5 system_monitor: Protect against potential problem if a test is locked 2016-06-01 18:00:18 -05:00
Michael Larabel
493ebd2b41 phoromatic: Sort tests on local suite page by title ASC 2016-06-01 15:56:42 -05:00
Michael Larabel
a351cdd3ba pts-core: Check to ensure this define call doesn't get hit multiple times to avoid a NOTICE 2016-06-01 07:59:09 -05:00
Michael Larabel
e1e10bbd75 deploy: Remove 'php5' references from the Debian package build script 2016-05-31 18:00:17 -05:00
Michael Larabel
88a7740dfb Phoronix Test Suite 6.4 Milestone 4 2016-05-31 13:01:51 -05:00
Michael Larabel
b318833d1d phoromatic: Support editing and deleting tests in local suites from the Phoromatic Server UI 2016-05-31 12:41:49 -05:00
Michael Larabel
296485afac pts-core: Remove pts_test_suite_writer now that it's no longer used due to new pts_test_suite API replacing it 2016-05-31 11:49:49 -05:00
Michael Larabel
d280772507 pts-core: Finish porting from pts_test_suite_writer to pts_test_suite API new 2016-05-31 11:48:57 -05:00
Michael Larabel
29fcf362a1 pts-core: Port result-file-to-suite to new pts_test_suite API 2016-05-31 11:36:56 -05:00
Michael Larabel
28710178d5 pts-core: Finish new pts_test_suite API, port build-suite to it 2016-05-31 11:18:21 -05:00
Michael Larabel
b20f9c7e29 pts-core: Fix for IE not scaling SVGs in the results viewer 2016-05-31 09:22:43 -05:00
Michael Larabel
dfe945e04c pts-core: Change the color ordering on pts_Graph_passfail 2016-05-31 08:47:24 -05:00
Michael Larabel
ed1455e68f pts-core: Fix get_estimated_run_time() from previous commit 2016-05-30 17:37:08 -05:00
Michael Larabel
2ecb8426c8 pts-core: Prevent duplicate tests/setting combinations from entering the same test run manager queue 2016-05-29 12:47:33 -05:00
Michael Larabel
a92ac2c2c6 pts-core: Update for perl-digest-md5 2016-05-28 18:02:04 -05:00
Michael Larabel
165e824630 pts-core: Fixes for Ubuntu's MD5 PERL digest dependenct 2016-05-28 17:46:34 -05:00
Michael Larabel
24128fc243 pts-core: Add perl-digest-md5 to external dependencies list 2016-05-28 17:39:49 -05:00
Michael Larabel
e2942f164c pts-core: Don't load empty tests on finish-run command 2016-05-28 17:27:07 -05:00
Michael Larabel
d8189a32ec phodevi: More detection improvements for NVMe devices on Linux 2016-05-28 16:48:31 -05:00
Michael Larabel
744d380253 pts-core: Get rid of debug print from previous message 2016-05-26 18:51:36 -05:00
Michael Larabel
ad9aace274 pts-core: Automatically add used extra OpenBenchmarking.org repositories to the linked list 2016-05-26 18:51:09 -05:00
Michael Larabel
42cac172f3 Phoronix Test Suite 6.4 Milestone 3 2016-05-26 08:21:07 -05:00
Michael Larabel
89d094f990 pts-core: Add note 2016-05-26 08:19:50 -05:00
Michael Larabel
f2b8d5406e pts-core: API Additions for pts_test_suite 2016-05-20 11:17:05 -05:00
Michael Larabel
4e3de6da21 pts-core: Some sleeps in pts_test_execution to try to settle down a bit between tests 2016-05-19 16:59:08 -05:00
Michael Larabel
8242022047 Bump core version to rebuild cache to find new module 2016-05-19 16:31:00 -05:00
Michael Larabel
d582c84f5a watchdog: New PTS module 2016-05-19 16:30:01 -05:00
Michael Larabel
73abf2bda8 pts-core: Fix for test suite when collapsing pts_test_suite_parser into pts_test_suite 2016-05-19 11:56:44 -05:00
Michael Larabel
d58fe95958 pts-core: Skip most of pts_test_suite initialization when identifier is null 2016-05-19 11:54:54 -05:00
Michael Larabel
8257565f1e pts-core: Step 2 of pts_test_suite rewrite 2016-05-19 11:36:18 -05:00
Michael Larabel
8bc425049e pts_Graph: Take care of possible divide by zero in pts_graph_lines 2016-05-19 11:00:35 -05:00
Michael Larabel
502ef8ee6d pts-core: Should be safe wiping this 2016-05-19 10:49:39 -05:00
Michael Larabel
934a1334d4 pts-core: Step 1 of the pts_test_suite rewrite 2016-05-19 10:49:05 -05:00
Michael Larabel
999fc361d1 pts-core: Test patch for adding fallback to result parser on funky data (spacing issue) workaround reported by Vlado Djerk 2016-05-19 09:13:37 -05:00
Michael Larabel
1aa0cd3020 phoromatic: Fix for testing ticket listing 2016-05-18 17:17:19 -05:00
Michael Larabel
ab9a509ded phoromatic: Add tickets to Testing page 2016-05-18 17:15:42 -05:00
Michael Larabel
1569432b97 phoromatic: Add generalized "Testing" page to Phoromatic Server 2016-05-18 16:43:06 -05:00
Michael Larabel
44c73e0bb0 pts-core: Changelog update 2016-05-18 11:46:04 -05:00
Michael Larabel
d719cb2a40 pts-core: On stress-run don't show empty brackets 2016-05-18 11:45:24 -05:00
Michael Larabel
650056633f pts-core: Actively work to make sure no zombies get queued up in stress-run manager 2016-05-18 11:42:08 -05:00
Michael Larabel
326cfa2025 pts-core: Only disable XML formatting when on Openbenchmarking.org or forced to 2016-05-18 11:05:48 -05:00
Michael Larabel
42498edb51 phodevi: Support for reading AMDGPU OverDrive overclock offset 2016-05-15 11:18:56 -05:00
Michael Larabel
6ee7341e31 pts-core: Exit 0 with stress-run 2016-05-15 11:18:37 -05:00
Michael Larabel
92343153de phoronix-test-suite: Update some helper scripts around PHP7 2016-05-09 09:15:41 -05:00
Michael Larabel
09dda94575 Phoronix Test Sutie 6.4 Milestone 2 2016-05-06 07:25:53 -05:00
Michael Larabel
6c594d4266 phodevi: Add ambient.temp sensor for reporting ambient temperature, currently supports temperv14 USB sensors 2016-05-05 09:04:02 -05:00
Michael Larabel
64dbfad097 phodevi: Add ambient.temp sensor for reporting ambient temperature, currently supports temperv14 USB sensors 2016-05-05 09:03:31 -05:00
Michael Larabel
092d4eacad pts-core: Bump PTS_CORE_VERSIOn to 6311 2016-05-05 07:06:08 -05:00
Michael Larabel
2f51c1cea7 pts-core: Don't show starting/ending test messages in log when in stress-run mode, but still show for CLI 2016-05-05 07:05:20 -05:00
Michael Larabel
f4627c0119 pts-core: Allow up to 8GB as memory_limit during stress-run testing 2016-05-05 06:54:55 -05:00
Michael Larabel
a5bce454bc phoromatic: Don't show title and description on result page when merging multiple results 2016-05-03 11:52:07 -05:00
Michael Larabel
2ac16b4feb phoromatic: Make logic on previous commit more clear 2016-05-03 11:02:31 -05:00
Michael Larabel
0462cbbcc8 phoromatic: Don't unconditionally set title to "Phoromatic Results" on page 2016-05-03 10:59:57 -05:00
Michael Larabel
d3a4bc7c5d pts-core: Ensure title gets set on merge if empty on original result file 2016-05-03 10:54:50 -05:00
Michael Larabel
87b6be4094 pts-core: Set description on result merge if original pts_result_file description is null 2016-05-03 10:46:05 -05:00
Michael Larabel
964155f6f6 phoromatic: Ensure description is set on the Phoromatic Server result page 2016-05-03 10:21:12 -05:00
Michael Larabel
389be3a5af pts-core: More tweaking of the points_of_possible_interest() algo 2016-05-01 07:41:33 -05:00
Michael Larabel
3a513f7741 Merge branch 'master' of github.com:phoronix-test-suite/phoronix-test-suite 2016-05-01 07:41:24 -05:00
Michael Larabel
4762cba5b8 pts-core: Statically set dynamic_run_count_on_length_or_less to 60 2016-05-01 07:40:26 -05:00
Michael Larabel
58f06fec29 phoromatic: Add PTS_NO_REBOOT_ON_NETWORK_FAILURE environment variable for clients where if network failure occurs, Phoromatic clients will not reboot 2016-04-30 19:13:13 -05:00
Fatima Sheremetyeva
d8ec55f206 phoromatic: Make CSS mobile improvements to exported results viewer 2016-04-28 15:44:47 -05:00
Michael Larabel
1c21aecdcb phoromatic: Ensure when removing results and suites everything is properly deleted 2016-04-28 15:32:16 -05:00
Michael Larabel
4db83fd42b pts-core: Print more helpful environment variable messages when using stress-run 2016-04-28 15:17:49 -05:00
Michael Larabel
a177e0865c phoromatic: Cleanup for suite deletions 2016-04-28 14:49:52 -05:00
Michael Larabel
c20fd451a8 Typo of previous commit 2016-04-28 14:48:06 -05:00
Michael Larabel
15949b11d8 phoromatic: Add basic support for deleting "local suites" from Phoromatic web UI 2016-04-28 14:47:22 -05:00
Michael Larabel
3048d6753a phoromatic: Do hard deletes when deleting results from admin area or results page 2016-04-28 14:43:36 -05:00
Michael Larabel
7fc086e792 pts-core: Add "redis-server" as a potential external dependency for providing Redis 2016-04-28 11:12:59 -05:00
Michael Larabel
3046b4d707 pts-core: Fix https://github.com/phoronix-test-suite/phoronix-test-suite/issues/117 2016-04-28 10:59:51 -05:00
Michael Larabel
4d388174a5 phoromatic: Report build/runtime errors to users when notifying of email regressions 2016-04-28 10:05:33 -05:00
Michael Larabel
bda8ebc88d phoromatic: Only export a month's worth of errors 2016-04-28 09:09:52 -05:00
Michael Larabel
ae90e14b49 phoromatic: Increase memory limit when generating result export dump 2016-04-28 09:06:41 -05:00
Michael Larabel
55f5eefb3f phoromatic: Tweak 2016-04-28 09:03:48 -05:00
Michael Larabel
3ddc3f1f53 phoromatic: Allow exporting system test run/build errors to the exported public results viewer 2016-04-28 08:58:54 -05:00
Michael Larabel
080a3574e9 pts-core: Adaptively increase regression threshold level in points_of_possible_interest() when too many results are being flagged 2016-04-28 08:28:16 -05:00
Michael Larabel
50fd4f6c3b pts_Graph: Clean up system table for Phoromatic / multi-way system comparisons 2016-04-28 08:05:16 -05:00
Michael Larabel
676373d32a phoromatic: Add arguments description on regression notification emails 2016-04-28 07:49:10 -05:00
Michael Larabel
e68f0c1ad0 phoromatic: In the export result viewer allow passing regression_threshold environment variable to override threshold value 2016-04-28 07:47:06 -05:00
Michael Larabel
d4bbd9569f phoromatic: Fix selecting the same test itself on the "build suite" page 2016-04-26 11:49:17 -05:00
Michael Larabel
db6856ef47 pts-core: Remove infinite string in summary report of stress-run 2016-04-26 11:43:51 -05:00
Michael Larabel
7fa2427eb7 pts-core: Don't show lines of empty args in stress-run 2016-04-26 11:35:47 -05:00
Michael Larabel
2d889bca8b pts-core: Fix typo from previous commit of getting arguments description 2016-04-26 11:29:37 -05:00
Michael Larabel
6f8d84dbc3 pts-core: Fix warning on stress_print_and_log() when not in Phoromatic mode 2016-04-26 11:28:44 -05:00
Michael Larabel
045be30ab5 pts-core: Fix TOTAL_LOOP_TIME set string being divided incorrectly 2016-04-26 11:27:30 -05:00
Michael Larabel
153f7fed30 pts-core: Reformat stress-run log messages 2016-04-26 11:24:28 -05:00
Michael Larabel
5d71f521a1 pts-core: Allow XML formatting from the Phoromatic Server web interface 2016-04-25 14:09:16 -05:00
Michael Larabel
2a74fb3cdc Phoronix Test Suite 6.4 Milestone 1 2016-04-25 06:45:25 -05:00
Michael Larabel
18498c11ea phoromatic: Don't reset fields when building suite and adding additional tests 2016-04-19 10:38:25 -05:00
Michael Larabel
ca12daceac pts-core: Drop USE_HOME_DIR 2016-04-19 10:32:49 -05:00
Michael Larabel
a2e8b3ffb4 pts-core: Fix for previous commit 2016-04-19 10:32:03 -05:00
Michael Larabel
6a4489701c phoromatic: Reduce width on local suite showing 2016-04-19 10:29:41 -05:00
Michael Larabel
c26817bfbd phoromatic: Font weight 800 2016-04-18 19:49:03 -05:00
Michael Larabel
402bd85cc9 phoromatic: Polish up group listing 2016-04-18 19:48:18 -05:00
Michael Larabel
c4da765b71 phoromatic: Fix account ID handling in previous commit 2016-04-18 19:47:27 -05:00
Michael Larabel
0c0d9ad583 phoromatic: Show systems in groups on benchmark ticketing page 2016-04-18 19:46:06 -05:00
Michael Larabel
29afd4c7fb phoromatic: Only run tests once each time called upon in stress-run mode 2016-04-18 19:31:28 -05:00
Michael Larabel
415e2e4038 Merge pull request #116 from gogoxiaoxiao/phoromatic
phoromatic: Fix post run context script
2016-04-18 07:07:49 -04:00
Haishuang Yan
f466eb0775 phoromatic: Fix post run context script 2016-04-18 15:43:25 +08:00
Michael Larabel
9afcd28ee6 phoromatic: Clear benchmark ticket ID after stress run 2016-04-15 15:14:19 -05:00
Michael Larabel
f81c3fcc57 phoromatic: Link directly to logs from links just added for benchmark tickets 2016-04-15 14:48:22 -05:00
Michael Larabel
157fc269a3 phoromatic: Update few strings 2016-04-15 14:44:39 -05:00
Michael Larabel
4f5390a40d phoromatic: Add links to schedules/tickets from dashboard and system pages for active schedule/ticket on that system at the moment 2016-04-15 14:32:59 -05:00
Michael Larabel
7899b11cb1 pts-core: Supply benchmark ticket IDs (when available) in the phoromatic update_system_status communications 2016-04-15 14:17:45 -05:00
Michael Larabel
669990ddd1 phoromatic: Say "Stress Testing - XXX" as Phoromatic status messages when in stress-run mode 2016-04-15 14:06:46 -05:00
Michael Larabel
e4f0c5f788 pts-core: Append date to phoronix-test-suite-stress-XXX.log when running stress-run 2016-04-15 13:59:30 -05:00
Michael Larabel
6820316a92 phoromatic: A few more tweaks to the export viewer 2016-04-14 19:37:44 -05:00
Michael Larabel
20f6e77a72 phoromatic: Add first result time to export viewer 2016-04-14 19:34:36 -05:00
Michael Larabel
2cee8b9ed7 phoromatic: Add basic email notification support to the Phoromatic export results viewer 2016-04-13 18:24:05 -05:00
Michael Larabel
ba4f9cc7be phoromatic
: Add last_result_time to JSON of export dumps of Phoromatic data
2016-04-13 10:50:06 -05:00
Michael Larabel
4d9515ea7c pts-core: Bump CORE version to 6301 2016-04-12 18:12:33 -05:00
Michael Larabel
9758c83067 pts-core: Additional fallback for locating if running PTS as a user from their home directory 2016-04-12 18:10:35 -05:00
Michael Larabel
31ec58a747 pts-core: Drop day of week from logger date prefix 2016-04-12 14:50:26 -05:00
Michael Larabel
2c4a2aa320 phoromatic: Allow "repeat ticket" to work for stress runs on benchmark tickets 2016-04-12 14:44:36 -05:00
Michael Larabel
e4c69e609b pts-core: Stress run log add a line break at first 2016-04-12 14:32:29 -05:00
Michael Larabel
e007f901f8 phoromatic: Provide some basic highlighting in stress-log fil 2016-04-12 14:31:59 -05:00
Michael Larabel
0943b37e69 pts-core: More phoromatic stress-run client side work 2016-04-12 14:21:49 -05:00
Michael Larabel
d65daf9f8f pts-core: Phoromatic stress-run fixes 2016-04-12 14:13:52 -05:00
Michael Larabel
fd7c47bb91 pts-core: Fix for previous commit 2016-04-12 14:08:23 -05:00
Michael Larabel
4470c5fec8 phoromatic: Initial client-side implementation of new stress-run support 2016-04-12 14:07:14 -05:00
Michael Larabel
081e03ddc0 phoromatic: Initial server-side implementation of new stress-run support via Phoromatic Server when going to "Run A Benchmark" and opting for stress mode 2016-04-12 13:18:51 -05:00
Michael Larabel
c4b5638538 pts-core: Add test start/end to phoronix-test-suite-stress.log 2016-04-12 11:26:38 -05:00
Michael Larabel
c2825d0346 pts-core: Add default logging support while running stress-run using phoronix-test-suite-stress.log filename 2016-04-12 11:17:42 -05:00
Michael Larabel
130da0b0b0 pts-core: Add hostname to summary reports on stress-run 2016-04-12 08:25:56 -05:00
Michael Larabel
7fcd9e553a pts-core: Fix for system-sensors not printing some supported sensors 2016-04-11 13:54:05 -05:00
Michael Larabel
8ecf60f515 pts-core: Switch to timezone abbreviation for previous commit 2016-04-11 08:51:53 -05:00
Michael Larabel
3b48647c21 pts-core: Add timezone on stress-run 2016-04-11 08:49:46 -05:00
Michael Larabel
09ed6afa51 pts-core: capitalize time 2016-04-11 08:49:25 -05:00
Michael Larabel
3ae1b271ed pts-core: Stress-run stuff 2016-04-11 08:40:49 -05:00
Michael Larabel
5fdaf18860 pts-core: Add system info to summary report on stress log 2016-04-11 08:36:17 -05:00
Michael Larabel
95982a1c3c Update documentation in respective sources based upon changes made in 65d9d3deb7 2016-04-11 06:38:00 -05:00
Michael Larabel
3602260228 pts-core: Update headers in stress-run 2016-04-10 11:22:06 -05:00
Michael Larabel
753edc4e1c pts-core: Few more tweaks to stress-run text 2016-04-10 11:11:03 -05:00
Michael Larabel
b6ba411800 pts-core: Work on timer 2016-04-10 10:42:59 -05:00
Michael Larabel
084914dfdf pts-core: enough work during stress-run is going on for master thread that there's no reason to sleep anymore 2016-04-10 10:34:01 -05:00
Michael Larabel
4972815427 pts-core: Don't print reports on child threads in stress-run 2016-04-10 10:32:40 -05:00
Michael Larabel
e6671137cd pts-core: Add basic signo handling work with stress-run 2016-04-10 10:29:28 -05:00
Michael Larabel
16164afac9 pts-core: More stress-run toying 2016-04-10 10:22:10 -05:00
Michael Larabel
918ac8834a pts-core: Clean up stress_run_manager code 2016-04-10 10:11:43 -05:00
Michael Larabel
03b83fb293 pts-core: Report number of tests executed and times occurred 2016-04-10 09:50:56 -05:00
Michael Larabel
2e943c8a1d pts-core: FIx 2016-04-10 09:40:39 -05:00
Michael Larabel
2ca8dcc896 pts-core: More stress-run fun 2016-04-10 09:39:56 -05:00
Michael Larabel
84f73d952b pts-core: Typo fix :) 2016-04-10 09:33:05 -05:00
Michael Larabel
111bab9c27 pts-core: Use pts_math::set_precision() rather than round(x, 2); 2016-04-10 09:32:32 -05:00
Michael Larabel
547738f354 pts-core: Adjust display_table_text extra width 2016-04-10 09:29:29 -05:00
Michael Larabel
f95218a616 pts-core: More text table work in stress-run 2016-04-10 09:23:38 -05:00
Michael Larabel
1c7849239c pts-core: Better format text in stress-run 2016-04-10 09:09:30 -05:00
Michael Larabel
1f09021a4a pts-core: Split the stress-run code in pts_test_run_manager into pts_stress_run_manager 2016-04-10 08:59:14 -05:00
Michael Larabel
caa4594972 pts-core: Start working on BASH_FOR_WINDOWS 2016-04-10 07:31:16 -05:00
Michael Larabel
b6dd727ea3 pts-core: Add sensor monitoring overview reporting to stress-run 2016-04-09 18:37:21 -05:00
Michael Larabel
9876d4b554 pts-core: Remove unneeded line 2016-04-09 15:03:19 -05:00
Michael Larabel
f6b1ea4990 pts-core: Typo fix :) 2016-04-09 15:02:48 -05:00
Michael Larabel
3a29cf1d63 pts-core: More efficient system monitoring on stress-run 2016-04-09 15:02:05 -05:00
Michael Larabel
f61e10589e pts-core: Add "Current" to clear up system sensors in stress-run 2016-04-09 14:04:44 -05:00
Michael Larabel
14c4658425 pts-core: Initial stab at sensor monitoring while stress-run 2016-04-09 14:01:39 -05:00
Michael Larabel
82da68b23e pts-core: align PID size 2016-04-08 16:08:44 -05:00
Michael Larabel
404b804616 pts-core: More stress-run text formatting work 2016-04-08 16:06:08 -05:00
Michael Larabel
9c6b50367d pts-core: Fix typo of previous commit 2016-04-08 15:48:43 -05:00
Michael Larabel
2234680bf6 pts-core: Add ELAPSED TIME and TIME REMAINING outputs on stress-run 2016-04-08 15:48:02 -05:00
Michael Larabel
5029fc62e7 pts-core: Don't print "Started Run X" verbage in short display mode 2016-04-08 15:44:11 -05:00
Michael Larabel
2cf8eed156 pts-core: Add alternate CSV information output hidden behind PTS_CSV_ALTERNATE_DESCRIPTION=1 environment variable 2016-04-08 12:54:33 -05:00
Michael Larabel
ab84278515 pts-core: Stress-run infinite fix 2016-04-08 11:48:16 -05:00
Michael Larabel
c318e1c07f pts-core: Extra line break here on stress-run 2016-04-08 11:44:28 -05:00
Michael Larabel
9aadf99d39 pts-core: This should fix up the stress-run behavior regarding testing 2016-04-08 11:38:22 -05:00
Michael Larabel
bc9e566e38 pts-core: Push a halt-testing flag to interrupt tests earlier in stress-run 2016-04-08 10:53:19 -05:00
Michael Larabel
7ec6c6f214 pts-core: Remove earlier debug statements in stress-run 2016-04-06 16:22:46 -05:00
Michael Larabel
d2a33177a7 pts-core: typo fix 2016-04-06 15:22:33 -05:00
Michael Larabel
7918bd4cc4 pts-core: Another temporary debugging tweak 2016-04-06 14:27:30 -05:00
Michael Larabel
a89ce4375b pts-core: More stress-run debug temporary 2016-04-06 14:26:00 -05:00
Michael Larabel
553f5d16cf pts-core: temporary debugging info on stress-run path 2016-04-06 12:02:33 -05:00
Michael Larabel
420c570b09 pts-core: Add extra stress-run message 2016-04-06 08:03:54 -05:00
Michael Larabel
d99e57fb68 pts-core: Add some debug comments to stress-run 2016-04-06 07:53:02 -05:00
Michael Larabel
9aec757040 Rebuild documentation for Hasvik 2016-04-04 16:28:04 -05:00
Michael Larabel
7cbf772db5 Merge branch 'master' of github.com:phoronix-test-suite/phoronix-test-suite 2016-04-04 16:27:10 -05:00
Michael Larabel
70e6bc7825 pts-core: Mark as 6.4.0m0 Hasvik for new development series now that it's strayed enough from Hasvik 2016-04-04 16:26:39 -05:00
phoronix
63d1401f0e pts-core: More stress-run work 2016-04-04 17:05:33 -04:00
phoronix
3908736fd9 pts-core: Fixes for stress-run 2016-04-04 16:17:27 -04:00
Michael Larabel
e7a5b8b6ec pts-core: More stress-run testing 2016-04-04 10:29:07 -05:00
Michael Larabel
4628a69c1d pts-core: Sleep 2 on stress-run 2016-04-04 10:13:51 -05:00
Michael Larabel
e45b81b8a2 pts-core: Stress-run debug 2016-04-04 10:01:55 -05:00
Michael Larabel
ef7be984ac pts-core: More stress-run work 2016-04-04 09:57:14 -05:00
Michael Larabel
290f28394c pts-core: Add basic report counter to stress-run for helping debug/analyze situation 2016-04-04 09:38:47 -05:00
Michael Larabel
d0cbc9c46a pts-core: Add Midori to supported browser list 2016-03-25 13:22:17 -05:00
Michael Larabel
4db4ce29b3 pts-core: Arch packaging tweak 2016-03-25 11:23:50 -05:00
Michael Larabel
daee43f7a1 pts_Graph: Tweak the color pallet 2016-03-22 13:02:10 -05:00
Michael Larabel
c82e6509d6 Phoronix Test Suite 6.2.2 commit from last week 2016-03-14 12:56:47 -05:00
Michael Larabel
d21d59fdee pts-core: Few tweaks for Alpine Linux 2016-03-07 08:40:43 -06:00
Michael Larabel
14d9bc8d81 pts-core: Alpine Linux (APK) external dependency support 2016-03-06 20:06:53 -06:00
Michael Larabel
c3d8bc31e9 phoronix-test-suite: Add Zenwalk/Slackware package helper to launcher 2016-03-06 09:22:38 -06:00
Michael Larabel
61d0555fe5 pts-core: Add more launcher helpers 2016-03-05 20:17:25 -06:00
Fatima Sheremetyeva
106d565ffd void-packages: Few more tweaks 2016-03-05 19:21:58 +00:00
Fatima Sheremetyeva
716a2635eb id-packages: Few more Void Linux packaging tweaks 2016-03-05 19:14:03 +00:00
Fatima Sheremetyeva
5d2f5ac6eb pts-core: Fix typo in code comment :) 2016-03-05 19:11:06 +00:00
Fatima Sheremetyeva
c2193e9844 pts-core: Add Void Linux external dependency handling support 2016-03-05 19:10:04 +00:00
Michael Larabel
c501adc0f9 pts-core: For the new result viewer, add Epiphany to the web browser list 2016-03-04 19:10:58 -06:00
Fatima Sheremetyeva
7954f94868 pts-core: Add OpenSUSE dependency handlery 2016-03-04 19:47:35 -05:00
Michael Larabel
3fad54cefe pts-core: Fix for stress-run 2016-03-03 11:07:13 -06:00
Michael Larabel
54e667ed2b Merge pull request #112 from atom-symbol/master
Remove superfluous quote from phoromatic.css
2016-02-28 07:49:53 -06:00
Jan Ziak (⚛)
ce1acaa6fb Remove superfluous quote from phoromatic.css 2016-02-28 14:43:52 +01:00
Michael Larabel
2a730dc94a phoromatic: Don't use a proxy (if available) when trying to connect from Phoromatic client to server 2016-02-25 10:56:07 -06:00
Michael Larabel
c1f92941cb Phoronix Test Suite 6.2.1 2016-02-22 20:13:19 -06:00
Michael Larabel
a2b0ff2c76 pts_Graph: Add some more product series to the color lookup table 2016-02-22 15:10:21 -06:00
Michael Larabel
70834b9d0a perf_per_dollar: Another fix for module 2016-02-22 13:54:44 -06:00
Michael Larabel
4d1413e5d5 perf_per_dollar: Fix for uninitialized test_result object 2016-02-22 13:48:47 -06:00
Michael Larabel
678b3d95b9 phodevi: Add OpenCL version reporting to system software string 2016-02-21 18:23:17 -06:00
Michael Larabel
33cab40573 deploy: Use DRI3 by default in farm system scripts 2016-02-21 17:06:28 -06:00
Michael Larabel
0cf46fd198 pts-core: Update copyright on the local results viewer 2016-02-21 12:56:43 -06:00
Michael Larabel
cea88fe829 phodevi: Extra Vulkan information reportingphodevi: Extra Vulkan information reporting 2016-02-17 08:02:23 -06:00
Michael Larabel
2b3246f88b pts-core: Bump version for release 2016-02-15 19:07:56 -06:00
Michael Larabel
fe7563d3ad module: Some version bumps, prepping for release 2016-02-15 19:06:34 -06:00
Michael Larabel
cbbcb0cb9a ChangeLog: Prep 2016-02-15 19:05:38 -06:00
Michael Larabel
8bd52e82f0 documentation: rebuild 2016-02-15 19:04:32 -06:00
Michael Larabel
480cf94d0c phodevi: Missing copyright updates 2016-02-15 19:03:06 -06:00
Michael Larabel
5748a84a88 Begin prepping for Gamvik final 2016-02-15 12:20:33 -06:00
Michael Larabel
7e05c67dde pts_Graph: Support for branded colors on more graphs 2016-02-15 12:20:09 -06:00
Michael Larabel
4a87fb301e phodevi: plumbing v 2016-02-15 12:19:02 -06:00
Michael Larabel
472fdeea03 Merge pull request #109 from numerant/sensors
Monitoring and MATISK fixes
2016-02-15 08:30:08 -06:00
Jakub Maleszewski
d7186a11ac pts-core: monitoring results are now properly distinguished between both normal and MATISK test runs 2016-02-13 18:17:23 +01:00
Jakub Maleszewski
9896d0a1d5 pts-core: fix missing "self::" in MATISK 2016-02-13 15:10:09 +01:00
Jakub Maleszewski
1887b4431d pts-core: update environmental variables in system_monitor 2016-02-13 14:51:01 +01:00
Michael Larabel
fa006e04f6 pts_Graph: Compact to scalar of line graphs at 8 rather than 10 2016-02-12 14:02:03 -06:00
Michael Larabel
dc18aa5b0c system_monitor: Don't append test X string to the description 2016-02-12 12:51:32 -06:00
Michael Larabel
470f2dbd80 pts_Graphs: Some tweaks 2016-02-10 09:31:31 -06:00
Michael Larabel
b026cb1ada pts_Graph: Add make_identifiers_web_links hook to horizontal bar graph 2016-02-09 16:05:41 -06:00
Michael Larabel
ab1adb6276 pts-core: Fix pts_test_profile_parser() failing to open test profile ZIP files 2016-02-09 10:21:08 -06:00
Michael Larabel
2755eff0ac Phoronix Test Suite 6.2 Milestone 5 2016-02-05 09:26:44 -06:00
Michael Larabel
a29af9da51 ChangeLog: Drop pre-3.0 changes from the shipped ChangeLog 2016-02-05 09:07:40 -06:00
Michael Larabel
3673eaf57d system_monitor: Typo from copy paste of previous commit :) 2016-02-03 15:14:51 -06:00
Michael Larabel
2b698d630c system_monitor: Handling for posix_kill absence in code 2016-02-03 15:03:29 -06:00
Michael Larabel
47417cc126 phodevi: Sensor clean-up and fixes (Jakub Maleszewski) 2016-02-03 14:46:08 -06:00
Michael Larabel
8fac5c73b0 Merge pull request #94 from numerant/sensors
Sensor monitoring - cleanup and bugfixes
2016-02-03 14:45:07 -06:00
Michael Larabel
ee99fb31b3 pts-core: Add golang as possible external dependency 2016-02-02 15:34:34 -06:00
Michael Larabel
08ae7da2a2 changelog: Restore MATISK module 2016-02-02 06:53:08 -06:00
Michael Larabel
d565f79c05 Merge pull request #108 from numerant/matisk
MATISK module restored and updated for PTS 6
2016-02-02 06:52:18 -06:00
Jakub Maleszewski
7085e4b2cf pts-core: fixed MATISK's incompatibility with PTS 6 2016-02-02 13:39:34 +01:00
Jakub Maleszewski
c41e7b3460 pts-core: re-added MATISK module (version from 25afbd5 commit) 2016-02-02 13:35:04 +01:00
Jakub Maleszewski
7038cad520 pts-core: introduced support for NVMe and MMC in HDD sensors; replaced problematic preg_grep with globbing 2016-02-02 11:26:35 +01:00
Michael Larabel
ea9df9424f phodevi: Mention Jakub Maleszewski for the recent Phodevi sensor work 2016-02-01 16:17:06 -06:00
Michael Larabel
b580e615cf pts-core: Use http://openbenchmarking.org/PTS for connectivity check now that OB is on a better server 2016-02-01 09:43:22 -06:00
Michael Larabel
8910c2fb9a phoromatic: Also add whether power off signaling is allowed next to WoL details on maintenance page 2016-01-30 20:07:07 -06:00
Michael Larabel
070b2ed512 phoromatic: Add Wake On LAN details to the Phoromatic maintenace table page 2016-01-30 20:05:57 -06:00
Michael Larabel
a280b288ff pts_Graph: Fix warning from earlier commit 2016-01-29 15:09:55 -06:00
Michael Larabel
e792c7bef2 pts-graph: Few improvements driven by new OpenBenchmarking.org code paths 2016-01-28 10:47:08 -06:00
Michael Larabel
2ca57c5d8c pts-core: Some README.md tweaks based upon Pull request #105 2016-01-27 06:36:36 -06:00
Michael Larabel
fad2cd4e5d Merge pull request #104 from atom-symbol/master
Run graphics detection only if required
2016-01-27 06:32:44 -06:00
Jan Ziak (⚛)
0bc981e517 Run graphics detection only if required
This improves performance of "./phoronix-test-suite help" for example.
2016-01-27 11:01:24 +01:00
Michael Larabel
852fb9378b Finish of Phoronix Test Suite 6.2 M4 commit 2016-01-26 17:49:44 -06:00
Michael Larabel
db6037dd7b Merge branch 'master' of github.com:phoronix-test-suite/phoronix-test-suite 2016-01-26 17:48:37 -06:00
Michael Larabel
ac289cc8ff Phoronix Test Suite 6.2 Milestone 4 2016-01-26 17:48:02 -06:00
Michael Larabel
c61b7a09c0 pts_Graph: Fix for graphs sometime not rendering correctly on multi-way comparisons 2016-01-26 17:46:26 -06:00
Fatima Sheremetyeva
6c2f939266 pts-core: Fix regression of multi-way comparison graphs caused by 120638b8ff 2016-01-26 18:30:17 -05:00
Michael Larabel
64b0483248 pts-core: More tweaks pertaining to the PDF rendering and pretty XML printing 2016-01-24 20:05:11 -06:00
Michael Larabel
8765e26c5e pts-core: Rework PDF generation of test results 2016-01-24 18:19:10 -06:00
Michael Larabel
5f093b7919 pts-core: More PDF work 2016-01-24 17:18:55 -06:00
Michael Larabel
4a51138f02 pts-core: Introduce pts_result_file_output::result_file_to_pdf() 2016-01-24 17:10:20 -06:00
Michael Larabel
b2e6aa8bac pts-core: in the OB result schema allow a title of 1 char 2016-01-23 17:26:41 -06:00
Michael Larabel
077f9dd659 pts_Graph: Switch PNG for SVG logo on table 2016-01-23 15:47:00 -06:00
Michael Larabel
17ccadb307 pts-core: PTS_NO_COMPILER_MASK 2016-01-21 12:40:01 -06:00
Michael Larabel
79f0b2b535 phoromatic: Add option to result viewer for exposing possible points of interest\ 2016-01-20 19:30:22 -06:00
Michael Larabel
658d624f32 pts-core: Safeguards against API change from previous commit if in future the new options are enabled along these other code-paths 2016-01-20 15:45:27 -06:00
Michael Larabel
34c86410c2 pts-core: Add function for optionally removing unchanged results
pts-core: Add function for optionally removing noisy results
2016-01-20 15:32:45 -06:00
Michael Larabel
bc81c03158 phoromatic: UI tweaks to the export public results viewer 2016-01-20 11:00:41 -06:00
Michael Larabel
d3d8942cb6 pts-core: Allow reversing a sorted a buffer of results 2016-01-19 08:10:02 -06:00
Michael Larabel
bb5ac80ee7 pts-core: Other part of fix 2016-01-18 15:53:30 -06:00
Michael Larabel
15ab3d3434 perf_per_dollar: Fix for commit 2016-01-18 15:52:49 -06:00
Michael Larabel
a2ce8583de pts-core: Cleanups 2016-01-18 14:19:35 -06:00
Jakub Maleszewski
33a15ca53f pts-core: replace array_push() with $array[] in system_monitor 2016-01-17 14:12:17 +01:00
Jakub Maleszewski
22ea9587bb Merge branch 'sensors' 2016-01-17 14:09:32 +01:00
Jakub Maleszewski
06e7f695be Merge remote-tracking branch 'upstream/master' 2016-01-17 13:51:57 +01:00
Jakub Maleszewski
432def01d2 pts-core: per-test-try monitoring fixes 2016-01-17 13:49:34 +01:00
Jakub Maleszewski
9d677ef936 pts-core: make monitoring results distinguishable between MATISK runs 2016-01-17 11:33:17 +01:00
Michael Larabel
e428d3781b phoromatic: Report the web server 2016-01-13 10:45:51 -06:00
Michael Larabel
25fcf9f3be phoromatic: Add secret PHOROMATIC_WANTS_APACHE option 2016-01-12 18:33:04 -06:00
Michael Larabel
73fb1b3ace pts_Graph: Add bsd color for bar graphs 2016-01-12 16:40:50 -06:00
Michael Larabel
33be563142 pts-core: Add OpenBSD helper for pkg_add 2016-01-12 11:27:45 -06:00
Michael Larabel
69b1b5dc1a pts-core: Another skip for ctype_alnum 2016-01-12 09:56:52 -06:00
Michael Larabel
960245ac7b pts-core: Typo from previous commit 2016-01-12 09:56:19 -06:00
Michael Larabel
f2495baadb pts-core: Fix for ctype_alnum not showing up on dfly bsd 2016-01-12 09:54:23 -06:00
Michael Larabel
7dbde7e982 pts_Graph: Fix from earlier commit 2016-01-11 14:03:58 -06:00
Michael Larabel
849fa769e4 pts_Graph: Comment out the incomplete noisy result detection code from previous commit 2016-01-11 12:02:49 -06:00
Michael Larabel
fa34e629de pts_Graph: Add FirePro/Quadro color coding to horizontal bar too 2016-01-11 12:00:17 -06:00
Michael Larabel
99ed71c045 phoromatic: Add view_results_since support to the export results viewer 2016-01-09 17:50:01 -06:00
Michael Larabel
4fc9b5046f pts-core: Similar fix for virtual test suites 2016-01-09 07:33:05 -06:00
Michael Larabel
2276ea9611 pts-core: Fix for some test profiles not showing up in list-tests sub-command 2016-01-09 07:31:10 -06:00
Michael Larabel
7718da8d06 Merge branch 'master' of github.com:phoronix-test-suite/phoronix-test-suite 2016-01-07 20:18:42 -06:00
Michael Larabel
b5c58544d1 bump to 6131 2016-01-07 20:18:31 -06:00
Fatima Sheremetyeva
92c5a89757 Revert "phodevi: Change array pushing"
This reverts commit 6c98586662.
2016-01-07 20:54:18 -05:00
Michael Larabel
a5639a25b1 phoromatic: When in limited network mode, reset from ping at different times 2016-01-07 18:19:06 -06:00
Michael Larabel
798a3e6fba phoromatic: Add an extra sleep on start-up when doing limited network communication 2016-01-07 18:15:01 -06:00
Michael Larabel
e2fac00203 phoromatic: Expand the random time element slightly 2016-01-07 18:11:53 -06:00
Michael Larabel
d6d64bdd13 Phoronix Test Suite 6.2 Milestone 3 2016-01-07 18:08:31 -06:00
Michael Larabel
e65f6e913f phoromatic: Add LimitNetworkCommunication option 2016-01-07 18:06:40 -06:00
Michael Larabel
0e62d0c4c1 pts-core: Add midori to browser list 2016-01-06 18:57:42 -06:00
Michael Larabel
367b8e680f pts-core: Finish most of removal of array_push() 2016-01-06 17:54:16 -06:00
Michael Larabel
6c98586662 phodevi: Change array pushing 2016-01-06 17:33:40 -06:00
Jakub Maleszewski
f17a504909 pts-core: children processes are now killed after processing results, cgroup name insertion fixed
pts_arrays::unique_push
2016-01-06 22:25:45 +01:00
Michael Larabel
835d06be2d pts-core: Add httpd as a possible external dependency 2016-01-06 09:41:58 -06:00
Michael Larabel
c1262c4476 pts-core: Optimize array usage along hot paths 2016-01-06 08:36:48 -06:00
Michael Larabel
81b2145f2a pts-core: Drop array_push usage in client objects 2016-01-06 08:24:15 -06:00
Michael Larabel
a97b5fbff8 pts-core: More array conversion 2016-01-06 08:02:50 -06:00
Michael Larabel
414098f601 pts-coreL Fix for previous commit 2016-01-06 07:55:50 -06:00
Michael Larabel
11b8283843 pts-core: More array push conversion 2016-01-06 07:54:19 -06:00
Michael Larabel
7d81b9224c pts-core: Optimize some more arrays 2016-01-06 07:28:27 -06:00
Michael Larabel
673e37a22b pts_Graph: Drop array_push usage 2016-01-06 07:21:52 -06:00
Fatima Sheremetyeva
6f8f6150a1 pts-core: Add pts-footnote support 2016-01-05 17:53:08 -05:00
Michael Larabel
1698818efb Merge branch 'master' of github.com:phoronix-test-suite/phoronix-test-suite 2016-01-05 16:10:08 -06:00
Michael Larabel
297bc4206d phoromatic: Fix in listing tests on schedules page when dealing with cache mismatch 2016-01-05 16:09:45 -06:00
Michael Larabel
79bee6a042 pts-core: Some copyright updates forgot to do from previous commits 2016-01-05 13:20:58 -06:00
Michael Larabel
6b6c70b649 Merge pull request #102 from juju-solutions/charms.benchmark
Charms.benchmark
2016-01-05 13:19:59 -06:00
Adam Israel
142e2f92c1 Deprecate chlp in favor of charms.benchmark 2016-01-05 11:06:27 -05:00
Michael Larabel
120638b8ff pts_Graph: rendering fix on collision of result identifiers 2016-01-04 10:55:16 -06:00
Michael Larabel
23c7f8ad8c pts-core: Add a few more safety checks 2016-01-04 10:46:48 -06:00
Adam Israel
eb6d354c94 Merge remote-tracking branch 'phoronix-test-suite/master' 2016-01-04 10:28:04 -05:00
Michael Larabel
94ace3c885 pts-core: Add system to default list of repositories 2016-01-04 07:04:28 -06:00
Michael Larabel
4a544ffb56 Phoronix Test Suite 6.2 M2 appears all good 2016-01-02 06:43:11 -06:00
Michael Larabel
54898f7377 Phoronix Test Suite 6.2 Milestone 2 2016-01-01 10:44:28 -06:00
Michael Larabel
0f51b6b3a2 pts-core: Add MinimalTestTime user configuration option 2016-01-01 08:10:19 -06:00
Michael Larabel
faf1b27b2c Merge pull request #101 from ptzafrir/timeout
set minimal test timeout by configuration variable
2016-01-01 08:09:31 -06:00
Tzafrir Poupko
610fb640ad move minimalTestTime to options/TestResultValidation 2016-01-01 16:06:14 +02:00
Tzafrir Poupko
e31385f604 set minimal test time by configuration variable 2016-01-01 15:42:45 +02:00
Michael Larabel
a3f2256336 pts-core: Add FullOutput to pts_config 2015-12-29 12:20:11 -06:00
Michael Larabel
e4b7e7f2d9 Merge branch 'master' of github.com:phoronix-test-suite/phoronix-test-suite 2015-12-29 12:18:53 -06:00
Michael Larabel
bf78f2db13 pts-core: Add FullOutput to the default user config 2015-12-29 12:18:33 -06:00
Michael Larabel
ebb76e4752 Merge pull request #99 from ptzafrir/output
Add configuration option to print all test steps
2015-12-29 12:17:51 -06:00
Tzafrir
5fe117b776 Add configuration option to print all test steps
This address issue #95 - FullOutput configuration option is added
If set the output of pre/test/interim/post is dumped to stdout
2015-12-28 15:44:19 +02:00
Michael Larabel
1ec700cee9 phoromatic: Export viewer tweaks 2015-12-28 06:25:26 -06:00
Michael Larabel
2bab1bda45 phodevi: Fixes for the landing of PTS_NPROC 2015-12-28 06:23:41 -06:00
Michael Larabel
036b735a69 Merge pull request #97 from ptzafrir/nproc
Add support for nproc environment variable
2015-12-28 06:21:44 -06:00
Tzafrir
ab2c13b82e use std_caching 2015-12-27 16:51:59 +02:00
Tzafrir
fa148e7553 fix compile error 2015-12-27 16:24:04 +02:00
Tzafrir
8ec8eab7cb use num cpu cores in phodevi.php 2015-12-27 16:21:23 +02:00
Michael Larabel
03a122e87a Merge pull request #98 from ptzafrir/pre-post
Check pre/post scripts exit status
2015-12-27 06:17:31 -06:00
Tzafrir
5102ccd9a7 Check pre/post scripts exit status
And fail the test if the script failed
2015-12-27 13:45:36 +02:00
Tzafrir
4f14e3314c Add support for nproc environment variable
This allows to change the cpu count for multiple tests
to test performance under variable number of cpu cores used
2015-12-27 12:47:31 +02:00
Michael Larabel
3806120ef7 phoromatic: Adjust export dump rule 2015-12-20 18:39:00 -06:00
Michael Larabel
4097daeeb7 phodevi: Software string detection improvements 2015-12-16 15:04:43 -06:00
Michael Larabel
9aabbab6e5 pts-core: Use bash when available in the pts_tests call script 2015-12-16 13:27:54 -06:00
Michael Larabel
7cc0abd595 Phoronix Test Suite 6.2 Milestone 1 2015-12-15 11:18:00 -06:00
Michael Larabel
14ad1180a4 pts-core: Don't include the Extends of tests on upload-test-profile 2015-12-14 10:48:46 -06:00
Michael Larabel
5eaa004c70 pts-core: Fix for possible OB login failure 2015-12-14 10:11:06 -06:00
Michael Larabel
6b687e75f8 phodevi: Support sys.power sensor monitoring fallback on BAT1 2015-12-10 07:25:57 -06:00
Michael Larabel
597ef4c764 pts-core: Allow the SupportedPlatforms and SoftwareType to be optional (when using CTP extends) 2015-12-08 12:13:52 -06:00
Michael Larabel
48fa67f007 Time to bump the version for 6.2 Gamvik development 2015-12-08 11:57:12 -06:00
Fatima Sheremetyeva
a8fb00a7d6 pts-core: Allow Cascading Test Profiles / Extends to inherit the results-definition.xml 2015-12-08 12:56:05 -05:00
Fatima Sheremetyeva
b002052840 pts-core: Add basic Arch dependency handler using pkgfile 2015-12-08 11:30:17 -06:00
Michael Larabel
7e61625fa5 pts-core: Basic implementation of SystemDependencies for dynamically resolving system/external dependencies based on file name 2015-12-08 11:18:22 -06:00
Michael Larabel
9a5f42e0c9 pts-core: Add new TestProfile/SystemDependencies field to test profile specification, to be implemented 2015-12-08 10:23:24 -06:00
Fatima Sheremetyeva
a17e271dad pts-core: Add ubuntu dependency handler 2015-12-08 11:07:47 -05:00
Michael Larabel
d71296dd0b pts-core: Begin work on dynamic dependency handler infrastructure 2015-12-03 07:50:44 -06:00
Michael Larabel
8838244dc0 phoromatic: Allow public listing of download cache files when navigating in browser to /download-cache.php 2015-11-29 18:41:43 -06:00
Jakub Maleszewski
0208723886 pts-core: remove var_dump from system_monitor 2015-11-29 21:27:58 +01:00
Jakub Maleszewski
db92ec4195 pts-core: fix off-by-one bug in system_monitor's offset saving 2015-11-29 21:26:12 +01:00
Michael Larabel
14589143da phodevi: Assume Windows is x86_64 when PROCESSOR_ARCHITEW6432 is missing 2015-11-24 05:52:35 -06:00
Jakub Maleszewski
db4f94fdee pts-core: replaced ugly shell_exec grepping with native PHP code in HDD sensors 2015-11-22 22:03:47 +01:00
Jakub Maleszewski
95b3e69384 pts-core: formatting fixes 2015-11-22 21:47:57 +01:00
Michael Larabel
349a2a0d1a documentation rebuild 2015-11-20 09:46:01 -06:00
241 changed files with 10740 additions and 5903 deletions

View File

@@ -1,4 +1,4 @@
Copyright 2008 - 2015 by Phoronix Media.
Copyright 2008 - 2017 by Phoronix Media.
Lead Architects:

3332
ChangeLog

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,8 @@
# Phoronix Test Suite 6.0.0
# Phoronix Test Suite 7.0.0
http://www.phoronix-test-suite.com/
The **Phoronix Test Suite** is the most comprehensive testing and benchmarking
platform available for Linux, Solaris, Mac OS X, and BSD operating systems. The
platform available for Linux, Solaris, OS X, and BSD operating systems. The
Phoronix Test Suite allows for carrying out tests in a fully automated manner
from test installation to execution and reporting. All tests are meant to be
easily reproducible, easy-to-use, and support fully automated execution. The
@@ -27,7 +27,7 @@ able to upload their test results, profiles, and suites to OpenBenchmarking.org.
A test profile is a single test that can be executed by the Phoronix Test Suite
-- with a series of options possible within every test -- and a test suite is a
seamless collection of test profiles and/or additional test suites. A test
profile consists of a set of bash/shell scripts and XML files while a test suite
profile consists of a set of Bash/shell scripts and XML files while a test suite
is a single XML file.
[OpenBenchmarking.org](http://www.openbenchmarking.org/) also allows for
@@ -46,9 +46,9 @@ Phoromatic, and OpenBenchmarking.org is available by contacting
Full details on the Phoronix Test Suite setup and usage is available from the
included HTML/PDF documentation within the phoronix-test-suite package and from
the Phoronix Test Suite web-site.
the Phoronix Test Suite website.
## INSTALLATION & SETUP:
## Installation & Setup
The Phoronix Test Suite is supported on Linux, *BSD, Solaris, Mac OS X, and
Windows systems. However, the most full-featured and well supported operating
@@ -61,11 +61,11 @@ architectures.
The Phoronix Test Suite can be installed for system-wide usage or run locally
without installation from the extracted tar.gz/zip package. The only hard
dependency on the Phoronix Test Suite is having command-line support for PHP
(PHP 5.3+) installed. A complete PHP stack (e.g. with web-server) is NOT needed,
but merely the PHP command-line support, which is widely available from
(PHP 5.3+) installed. A complete PHP stack (e.g. with web server) is **not**
needed, but merely the PHP command-line support, which is widely available from
operating system package managers under the name `php`, `php5-cli`, or `php5`.
## USAGE:
## Usage
The process to download, install/setup, execute, and report the results of a
benchmark can be as simple as a command such as `phoronix-test-suite benchmark
@@ -84,7 +84,7 @@ running, for example, `phoronix-test-suite benchmark 1204293-BY-PHORONIX357` if
wishing to compare the results of the
`http://openbenchmarking.org/result/1204293-BY-PHORONIX357` result file.
Additional information is available from the Phoronix Test Suite web-site
Additional information is available from the Phoronix Test Suite website
<http://www.phoronix-test-suite.com/> and the material bundled within the
`phoronix-test-suite/documentation/` directory. A man page is also bundled with
the phoronix-test-suite software.

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2008 - 2015, Phoronix Media
Copyright (C) 2008 - 2015, Michael Larabel
Copyright (C) 2008 - 2016, Phoronix Media
Copyright (C) 2008 - 2016, Michael Larabel
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
@@ -23,7 +23,7 @@
if(!is_executable("phoronix-test-suite") || !is_dir("pts-core/"))
{
echo "\nYou must run this script from the root directory of the phoronix-test-suite/ folder!\n";
echo "Example: php5 deploy/deb-package/build-package-deb.php\n";
echo "Example: php deploy/deb-package/build-package-deb.php\n";
exit(0);
}
if(!is_executable('/usr/bin/dpkg'))
@@ -63,8 +63,8 @@ $control_file .= "Section: Utilities\n";
$control_file .= "Installed-Size: " . shell_exec("cd /tmp/pts-deb-builder/; du -s | cut -f 1");
$control_file .= "Priority: optional\n";
$control_file .= "Architecture: all\n";
$control_file .= "Depends: php5-cli, php5-gd, php5-json\n";
$control_file .= "Recommends: build-essential\n";
$control_file .= "Depends: php-cli|php5-cli,php5-cli|php-xml\n";
$control_file .= "Recommends: build-essential, php-gd|php5-gd\n";
$control_file .= "Maintainer: Phoronix Media <trondheim-pts@phoronix-test-suite.com>\n";
$control_file .= "Description: An Automated, Open-Source Testing Framework\n " . @str_replace("\n", " ", file_get_contents('pts-core/static/short-description.txt')) . "\n";
$control_file .= "Homepage: http://www.phoronix-test-suite.com/ \n";

View File

@@ -12,6 +12,7 @@ Section "Device"
Option "Virtualheads" "1"
Option "Vsync" "0"
Option "SwapbuffersWait" "0"
Option "DRI" "3"
EndSection
Section "Screen"

View File

@@ -2,6 +2,7 @@ Section "Device"
Identifier "Device0"
Driver "radeon"
Option "SwapBuffersWait" "0"
Option "DRI "3"
EndSection
Section "Monitor"

View File

@@ -3,8 +3,6 @@
set -e
run_benchmark() {
chlp benchmark-start || true
params="$@"
mkdir -p /opt/pts/results
@@ -20,9 +18,10 @@ run_benchmark() {
phoronix-test-suite batch-install $params > /dev/null 2>&1
benchmark-start || true
phoronix-test-suite batch-run $params
benchmark-finish || true
rsync -aqz /root/.phoronix-test-suite /opt/pts/results/$run
scripts/parse /opt/pts/results/$run/.phoronix-test-suite/test-results/$(date +%Y)-*/test-1.xml
chlp benchmark-finish || true
}

View File

@@ -110,6 +110,9 @@ install_phoronix() {
apt-get install -qqy unzip build-essential default-jre-headless mesa-utils
apt-get install -qqy phoronix-test-suite
apt-get install -qqy python python-pip
pip install --upgrade charms.benchmark
# puppet helper to distribute facts between scripts
apt-get install -qqy facter-customfacts-plugin

View File

@@ -10,10 +10,15 @@ PHORONIX TEST SUITE PUBLIC TODO LIST:
- Possibly restore "weighted suites" [http://phorogit.com/index.php?p=phoronix-test-suite.git&a=commitdiff&h=548e5c073cc90d92ac3f382ca4933d5f556e78c6&hb=444441f9be866f51920e0ad8ca3909951b4d90c5]
- Integrate finish-run command into the run command, auto-detect if the result file was a partial save and then ask if to perform run recovery'
- Multi-threaded downloading of test files
- Numerous pts_render improvements [see in-line code comments]
- Optimus / DRI_PRIME=1 / xrandr --listproviders better GPU detection
- NVIDIA make use of UsedDedicatedGPUMemory as new GPU sensor
- Clean up all the WebSocket code and make it fit to spec
- Incremental result uploads support
- Check with Phodevi's parsers what other tools support JSON outputs - e.g. http://karelzak.blogspot.com/2015/06/json-output-for-basic-tools.html for cleaner parsing
- Figure out why TestClientVersion in result file XML is missing after adding multiple systems, the previous ones are then blank
- Restore the ReferenceID support in the results XML
- Improve titles on tables like in: http://openbenchmarking.org/result/1603172-GA-AMDTONGA973
### PTS-GRAPH ###
@@ -23,9 +28,8 @@ PHORONIX TEST SUITE PUBLIC TODO LIST:
- Shorten long change-logs on test profile pages - e.g. http://openbenchmarking.org/test/pts/hpcc
### NEW TEST PROFILES ###
### POSSIBLE NEW TEST PROFILES ###
- Python-libmemcached [http://code.google.com/p/python-libmemcached/]
- Intel HiBench [https://github.com/intel-hadoop/HiBench]
- Hadoop Benchmarks / TeraSort
- LATT Latency Tests [git://git.kernel.dk/latt.git]
@@ -58,8 +62,18 @@ PHORONIX TEST SUITE PUBLIC TODO LIST:
- https://openfoamwiki.net/index.php/Benchmarks_standard_v1
- Cassandra 1.2 stress - http://docs.datastax.com/en/cassandra/1.2/cassandra/tools/toolsCStress_t.html
- http://gcc.opensuse.org/c++bench-frescobaldi/
- https://github.com/GoogleCloudPlatform/PerfKitBenchmarker
- https://gooseberry.blender.org/gooseberry-production-benchmark-file/
- https://github.com/hhvm/oss-performance
- https://github.com/gormanm/mmtests
- https://github.com/pandegroup/fahbench
- https://github.com/STH-Dev/linux-bench
- http://anzwix.com/a/FFmpeg/CryptobenchAddSupportForBlowfish
- https://wiki.mikejung.biz/Benchmarking
- http://dacapobench.org/
- https://github.com/soumith/convnet-benchmarks
- https://github.com/cavazos-lab/FinanceBench
- https://svail.github.io/DeepBench/
### WEB SOCKET / HTML5 USER INTERFACE WORK ###

View File

@@ -1,4 +1,4 @@
.TH phoronix-test-suite 1 "www.phoronix-test-suite.com" "6.0.0"
.TH phoronix-test-suite 1 "www.phoronix-test-suite.com" "7.0.0"
.SH NAME
phoronix-test-suite \- The Phoronix Test Suite is an extensible open-source platform for performing testing and performance evaluation.
.SH SYNOPSIS
@@ -6,14 +6,14 @@ phoronix-test-suite \- The Phoronix Test Suite is an extensible open-source plat
.br
.B phoronix-test-suite benchmark [test | suite]
.SH DESCRIPTION
The **Phoronix Test Suite** is the most comprehensive testing and benchmarking platform available for Linux, Solaris, Mac OS X, and BSD operating systems. The Phoronix Test Suite allows for carrying out tests in a fully automated manner from test installation to execution and reporting. All tests are meant to be easily reproducible, easy-to-use, and support fully automated execution. The Phoronix Test Suite is open-source under the GNU GPLv3 license and is developed by Phoronix Media in cooperation with partners.
The **Phoronix Test Suite** is the most comprehensive testing and benchmarking platform available for Linux, Solaris, OS X, and BSD operating systems. The Phoronix Test Suite allows for carrying out tests in a fully automated manner from test installation to execution and reporting. All tests are meant to be easily reproducible, easy-to-use, and support fully automated execution. The Phoronix Test Suite is open-source under the GNU GPLv3 license and is developed by Phoronix Media in cooperation with partners.
.SH OPTIONS
.TP
.SH TEST INSTALLATION
.B install [Test | Suite | OpenBenchmarking.org ID | Test Result] ...
.B install [Test | Suite | OpenBenchmarking ID | Test Result] ...
This option will install the selected test(s) inside the testing environment directory. The install process from downloading of the test files to the installation is fully automated. The install option needs to be supplied with the test name or suite as an argument. Optionally, a OpenBenchmarking.org ID or the name of a saved results file can be supplied as well and the test(s) to install will automatically be extracted from that information. If the test is already installed and was run by the latest version of the installation process, no action will be taken. Multiple arguments can be supplied to install additional tests at the same time.
.TP
.B install-dependencies [Test | Suite | OpenBenchmarking.org ID | Test Result] ...
.B install-dependencies [Test | Suite | OpenBenchmarking ID | Test Result] ...
This option will install the external dependencies needed by the selected test(s) using the distribution's package management system. For example, some tests depend upon GCC for compiling code. If GCC is not detected on the system, the Phoronix Test Suite will attempt to install GCC using the distribution's package management system. If you are running this command as a local user, you may be prompted for the root password while the process is running. For unsupported distributions, the dependency names will be displayed along with common names for the package. The install-dependencies option needs to be supplied with the test name or suite as an argument. When using the install option, the external dependencies are automatically checked.
.TP
.B make-download-cache
@@ -26,13 +26,13 @@ This option will permanently remove a installed test by the Phoronix Test Suite.
.B auto-compare
This option will autonomously determine the most relevant test(s) to run for any selected sub-system(s). The tests to run are determined via OpenBenchmarking.org integration with the global results pool. Related test results from OpenBenchmarking.org are also merged to provide a straight-forward and effective means of carrying out a system comparison. If wishing to find comparable results for any particular test profile(s), simply pass the test profile names as additional arguments to this command.
.TP
.B benchmark [Test | Suite | OpenBenchmarking.org ID | Test Result] ...
.B benchmark [Test | Suite | OpenBenchmarking ID | Test Result] ...
This option will install the selected test(s) (if needed) and will proceed to run the test(s). This option is equivalent to running phoronix-test-suite with the install option followed by the run option. Multiple arguments can be supplied to run additional tests at the same time and save the results into one file.
.TP
.B finish-run [Test Result]
This option can be used if a test run had not properly finished running all tests within a saved results file. Using this option when specifying a saved results file where all tests had not completed will attempt to finish testing on the remaining tests where there are missing results.
.TP
.B run [Test | Suite | OpenBenchmarking.org ID | Test Result] ...
.B run [Test | Suite | OpenBenchmarking ID | Test Result] ...
This option will run the selected test(s).
.TP
.B run-random-tests
@@ -41,29 +41,29 @@ This option will query OpenBenchmarking.org to run random benchmarks and result
.B run-tests-in-suite
This option can be used if you wish to run all of the tests found in a supplied suite, but you wish to re-configure each of the test options rather than using the defaults supplied by the suite.
.TP
.B stress-run [Test | Suite | OpenBenchmarking.org ID | Test Result] ...
.B stress-run [Test | Suite | OpenBenchmarking ID | Test Result] ...
This option will run the passed tests/suites in the multi-process stress-testing mode. The stress-run mode will not produce a result file but is rather intended for running multiple test profiles concurrently to stress / burn-in the system. The number of tests to run concurrently can be toggled via the PTS_CONCURRENT_TEST_RUNS environment variable and by default is set to a value of 2.
.TP
.SH BATCH TESTING
.B batch-benchmark [Test | Suite | OpenBenchmarking.org ID | Test Result] ...
.B batch-benchmark [Test | Suite | OpenBenchmarking ID | Test Result] ...
This option and its arguments are equivalent to the benchmark option, but the process will be run in the Phoronix Test Suite batch mode.
.TP
.B batch-install [Test | Suite | OpenBenchmarking.org ID | Test Result] ...
.B batch-install [Test | Suite | OpenBenchmarking ID | Test Result] ...
If you wish to run the install process in the Phoronix Test Suite batch mode but do not wish to run any tests at this time. Running the install process in the batch mode will use the default values and not prompt the user of any possible options, to ensure the process is fully automated.
.TP
.B batch-run [Test | Suite | OpenBenchmarking.org ID | Test Result] ...
.B batch-run [Test | Suite | OpenBenchmarking ID | Test Result] ...
This option and its arguments are equivalent to the run option, but the process will be run in the Phoronix Test Suite batch mode.
.TP
.B batch-setup
This option is used to configure the batch mode options for the Phoronix Test Suite, which is subsequently written to the user configuration file. Among the options are whether to automatically upload the test results to OpenBenchmarking.org and prompting for the saved file name.
.TP
.B default-benchmark [Test | Suite | OpenBenchmarking.org ID | Test Result] ...
.B default-benchmark [Test | Suite | OpenBenchmarking ID | Test Result] ...
This option will install the selected test(s) (if needed) and will proceed to run the test(s) in the defaults mode. This option is equivalent to running phoronix-test-suite with the install option followed by the default-run option.
.TP
.B default-run [Test | Suite | OpenBenchmarking.org ID | Test Result] ...
.B default-run [Test | Suite | OpenBenchmarking ID | Test Result] ...
This option will run the selected test(s). The name of the test or suite must be supplied or the OpenBenchmarking.org ID or saved local file name. Multiple arguments can be supplied to run additional tests at the same time and save the results in a suite-like fashion. Unlike the normal run option, the default-run will not prompt the user to select from the available test options but will instead use the default options as automatically set by pts-core or the test profile. Use batch-run to automatically test all of the available options.
.TP
.B internal-run [Test | Suite | OpenBenchmarking.org ID | Test Result] ...
.B internal-run [Test | Suite | OpenBenchmarking ID | Test Result] ...
This option and its arguments pre-set the Phoronix Test Suite batch run mode with sane values for carrying out benchmarks in a semi-automated manner and without uploading any of the result data to the public OpenBenchmarking.org.
.TP
.SH OPENBENCHMARKING.ORG
@@ -101,15 +101,15 @@ This option can be used for uploading a test profile to your account on OpenBenc
This option can be used for uploading a test suite to your account on OpenBenchmarking.org. By uploading your test suite to OpenBenchmarking.org, others are then able to browse and access this test suite for easy distribution.
.TP
.SH SYSTEM
.B detailed-system-info
Display detailed information about the installed system hardware and software information as detected by the Phoronix Test Suite Phodevi Library.
.TP
.B diagnostics
This option will print information that is useful to developers when debugging problems with the Phoronix Test Suite and/or test profiles and test suites.
.TP
.B interactive
A simple text-driven interactive interface to the Phoronix Test Suite.
.TP
.B php-conf
This option will print information that is useful to developers when debugging problems with the Phoronix Test Suite and/or test profiles and test suites.
.TP
.B system-info
Display the installed system hardware and software information as detected by the Phoronix Test Suite Phodevi Library.
.TP
@@ -117,7 +117,10 @@ Display the installed system hardware and software information as detected by th
Display the installed system hardware and software sensors in real-time as detected by the Phoronix Test Suite Phodevi Library.
.TP
.SH INFORMATION
.B info [Test | Suite | OpenBenchmarking.org ID | Test Result]
.B estimate-run-time [Test | Suite | OpenBenchmarking ID | Test Result]
This option will provide estimates for test run-time / length.
.TP
.B info [Test | Suite | OpenBenchmarking ID | Test Result]
This option will show details about the supplied test, suite, virtual suite, or result file.
.TP
.B list-available-suites
@@ -141,6 +144,9 @@ This option will list all test profiles that are currently installed on the syst
.B list-missing-dependencies
This option will list all of the packages / external test dependencies that are missing from the system that the Phoronix Test Suite may potentially need by select test profiles.
.TP
.B list-not-installed-tests
This option will list all test profiles that are supported and available but presently NOT installed on the system.
.TP
.B list-possible-dependencies
This option will list all of the packages / external test dependencies that are are potentially used by the Phoronix Test Suite.
.TP
@@ -154,19 +160,22 @@ This option will list various details about installed tests and their usage.
This option will list all available test profiles that are available from the enabled OpenBenchmarking.org repositories but are NOT SUPPORTED on the given hardware/software platform. This is mainly a debugging option for those looking for test profiles to potentially port to new platforms, etc.
.TP
.SH ASSET CREATION
.B debug-benchmark [Test | Suite | OpenBenchmarking.org ID | Test Result] ...
.B debug-benchmark [Test | Suite | OpenBenchmarking ID | Test Result] ...
This option is intended for use by test profile writers and is identical to the <em>run</em> option but will yield more information during the run process that can be used to debug issues with a test profile or to verify the test profile is functioning correctly.
.TP
.B debug-install [Test | Suite | OpenBenchmarking.org ID | Test Result] ...
.B debug-install [Test | Suite | OpenBenchmarking ID | Test Result] ...
This option is intended for use by test profile writers and is identical to the install option but will yield more information during the run process that can be used to debug issues with a test profile installer or to verify the test profile is functioning correctly.
.TP
.B debug-test-download-links [Test | Suite | OpenBenchmarking.org ID | Test Result]
.B debug-result-parser [Test | Suite | OpenBenchmarking ID | Test Result] ...
This option is intended for use by test profile writers and is used for debugging a result parser. No test execution is done, but there must already be PTS-generated .log files present within the test's installation directory.
.TP
.B debug-test-download-links [Test | Suite | OpenBenchmarking ID | Test Result]
This option will check all download links within the specified test profile(s) to ensure there are no broken URLs.
.TP
.B download-test-files [Test | Suite | OpenBenchmarking.org ID | Test Result] ...
.B download-test-files [Test | Suite | OpenBenchmarking ID | Test Result] ...
This will download the selected test file(s) to the Phoronix Test Suite download cache but will not install the tests.
.TP
.B force-install [Test | Suite | OpenBenchmarking.org ID | Test Result] ...
.B force-install [Test | Suite | OpenBenchmarking ID | Test Result] ...
This option will force the installation (or re-installation) of a test or suite. The arguments and process is similar to the install option but even if the test is installed, the entire installation process will automatically be executed. This option is generally used when debugging a test installation problem.
.TP
.B result-file-to-suite [Test Result]
@@ -227,6 +236,9 @@ This option will read a saved test results file and output the system hardware a
.B show-result [Test Result]
Open up the test results in the Phoronix Test Suite Result Viewer or on OpenBenchmarking.org.
.TP
.B winners-and-losers [Test Result]
This option is used if you wish to analyze a result file to see which runs produced the most wins/losses of those result identifiers in the saved file.
.TP
.SH RESULT ANALYTICS
.B analyze-all-runs [Test Result]
This option will generate a candlestick graph showing the distribution of results from all trial runs. The candlestick graph is similar to the Japanese candlestick charts used by the financial industry, except instead of representing stock data it is numerical result data from all trial runs.\n\nThe tip of the upper-wick represents the highest value of the test runs with the tip of the lower-wick representing the lowest value of all test runs. The upper-edge of the candle body represents the first or last run value and the lower-edge represents the first or last run value. Lastly, if the last run value is less than the first run value, the candle body is the same color as the graph background, otherwise the last run value is greater.
@@ -235,6 +247,9 @@ This option will generate a candlestick graph showing the distribution of result
.B build-suite
This option will guide the user through the process of generating their own test suite, which they can then run. Optionally, passed as arguments can be the test(s) or suite(s) to add to the suite to be created, instead of being prompted through the process.
.TP
.B debug-dependency-handler
This option is used for testing the distribution-specific dependency handler for external dependencies.
.TP
.B debug-render-test
This option is used during the development of the Phoronix Test Suite software for testing of the result and graph rendering code-paths This option will download a large number of reference test results from LinuxBenchmarking.com.
.TP
@@ -261,7 +276,7 @@ This option will display the Phoronix Test Suite client version.
.TP
.SH WEB / GUI SUPPORT
.B gui
Launch the Phoronix Test Suite HTML5 web user-interface in the local GUI mode (no remote web support) and attempt to auto-launch the web-browser.
Launch the Phoronix Test Suite HTML5 web user-interface in the local GUI mode (no remote web support) and attempt to auto-launch the web-browser. THIS FEATURE IS CURRENTLY EXPERIMENTAL AND NO LONGER ACTIVE DEVELOPMENT. See Phoronix Test Suite Phoromatic as an alternative web UI approach.
.TP
.B start-remote-gui-server
Start the GUI web server and WebSocket server processes for remote (or local) access via the web-browser. The settings can be configured via the Phoronix Test Suite's XML configuration file.
@@ -283,8 +298,8 @@ This option will allow you to configure all available end-user options for a Pho
This option can be used for debugging a Phoronix Test Suite module.
.TP
.SH PHOROMATIC
.B g
n
.B n
_
.TP
.SH SEE ALSO
.B Websites:
@@ -299,5 +314,5 @@ http://www.phoronix.com/
.br
http://www.phoronix.com/forums/
.SH AUTHORS
Copyright 2008 - 2015 by Phoronix Media, Michael Larabel.
Copyright 2008 - 2017 by Phoronix Media, Michael Larabel.
.TP

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -5,10 +5,10 @@
<body>
<h1>Setup Overview</h1>
<p>The Phoronix Test Suite supports Linux, Apple Mac OS X, Microsoft Windows, Solaris, Hurd, BSD, and other operating system environments. The only Linux distribution-specific code deals with the external dependencies support feature that are set by individual test profiles. If you are not running one of the supported Linux distributions, Solaris, BSD, or Mac OS X, you may need to install a package manually (as instructed by the Phoronix Test Suite) in order for a test to run. An example of an external dependency would be GCC and the OpenGL Utility Toolkit being needed for test profiles that build an OpenGL benchmark from source-code.</p>
<p>Among the distributions where the Phoronix Test Suite has been officially tested include Ubuntu, Fedora, Mandriva / Mageia, Gentoo, PCLinuxOS, Arch Linux, Pardus, OpenSuSE, Optware, webOS, Zenwalk, CentOS, Red Hat Enterprise Linux, Oracle Linux, Scientific Linux, Debian, Mint, MEPIS, and Amazon Linux EC2.</p>
<p>Among the distributions where the Phoronix Test Suite has been officially tested include Ubuntu, Fedora, Mandriva / Mageia, Gentoo, PCLinuxOS, Arch Linux, Pardus, OpenSuSE, Optware, webOS, Zenwalk, CentOS, Red Hat Enterprise Linux, Oracle Linux, Scientific Linux, Debian, Mint, MEPIS, Alpine Linux, Void Linux, Intel Clear Linux, and Amazon Linux EC2.</p>
<p>Among the tested BSD distributions are FreeBSD, PC-BSD, NetBSD, OpenBSD, Debian GNU/kFreeBSD, and DragonflyBSD. Tested Solaris distributions include OpenSolaris, Solaris Express 11, Oracle Solaris 11, OpenIndiana, Illumos, and Nexenta.</p>
<h1>Dependencies</h1>
<p>The only required dependency for the Phoronix Test Suite is PHP 5.3 or newer. On Linux distributions, the needed package is commonly called <em>php5-cli</em> or <em>php-cli</em> or <em>php</em>. It is important to note that only PHP for the command-line is needed and not a web server (Apache) or other packages commonly associated with PHP and its usage by web-sites. The PHP5 version required is PHP 5.3+ and can also be found at <a href="http://www.php.net/">www.php.net</a>.</p>
<p>The only required dependency for the Phoronix Test Suite is PHP 5.3 or newer. On Linux distributions, the needed package is commonly called <em>php5-cli</em> or <em>php-cli</em> or <em>php7</em> or <em>php</em>. It is important to note that only PHP for the command-line is needed and not a web server (Apache) or other packages commonly associated with PHP and its usage by web-sites. The PHP5 version required is PHP 5.3+ and can also be found at <a href="http://www.php.net/">www.php.net</a>. PHP 7 is fully supported by the Phoronix Test Suite as well as HHVM.</p>
<p>For installing PHP on Windows, the <a href="https://www.microsoft.com/web/platform/phponwindows.aspx">Microsoft Web Platform Installer</a> provides an automated alternative that will install PHP into the directory expected by Phoronix Test Suite. Users opting to install PHP manually must extract the files to <em>C:\Program Files (x86)\PHP\</em> or a subdirectory.</p>
<p>As part of the PHP requirement, the following PHP extensions are required and/or highly recommended in order to take advantage of the Phoronix Test Suite capabilities:</p>

View File

@@ -1 +1 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>External Dependencies</title></head><body><p>The Phoronix Test Suite has a feature known as "External Dependencies" where the Phoronix Test Suite can attempt to automatically install some of the test-specific dependencies on supported distributions. If running on a distribution where there is currently no External Dependencies profile, the needed package name(s) are listed for manual installation.</p><p>Below are a list of the operating systems that currently have external dependencies support within the Phoronix Test Suite for the automatic installation of needed test files.<hr><ul></ul><li>Amazon</li><li>Angstrom</li><li>Arch Linux</li><li>CentOS</li><li>ClearOS</li><li>ClearOS Core Server</li><li>Debian</li><li>DragonFlyBSD</li><li>Fedora</li><li>Fluxbuntu</li><li>FreeBSD</li><li>GNU KFreeBSD</li><li>Gentoo</li><li>Goobuntu</li><li>HP</li><li>Joli Cloud</li><li>Linaro</li><li>Linux Mint</li><li>MEPIS</li><li>Mac OS X</li><li>MacPorts</li><li>Mageia</li><li>Mandriva</li><li>MeeGo</li><li>Moblin</li><li>Mythbuntu</li><li>NetBSD</li><li>Nexenta Core</li><li>OLPC</li><li>OpenIndiana</li><li>OpenMandriva</li><li>OpenSolaris</li><li>OpenSuSE</li><li>Optware</li><li>Oracle Server</li><li>PCLinuxOS</li><li>PTS Desktop Live</li><li>PTS Linux Live</li><li>Palm</li><li>Pardus Linux</li><li>Red Hat Enterprise</li><li>Red Hat Enterprise Server</li><li>SUSE</li><li>SUSE Linux</li><li>Scientific</li><li>ScientificSL</li><li>Ubuntu</li><li>Zenwalk</li><li>gNewSense</li></p></body></html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>External Dependencies</title></head><body><p>The Phoronix Test Suite has a feature known as "External Dependencies" where the Phoronix Test Suite can attempt to automatically install some of the test-specific dependencies on supported distributions. If running on a distribution where there is currently no External Dependencies profile, the needed package name(s) are listed for manual installation.</p><p>Below are a list of the operating systems that currently have external dependencies support within the Phoronix Test Suite for the automatic installation of needed test files.<hr><ul></ul><li>Alpine Linux</li><li>Amazon</li><li>Angstrom</li><li>Arch Linux</li><li>CentOS</li><li>ClearOS</li><li>ClearOS Core Server</li><li>Debian</li><li>DragonFlyBSD</li><li>Fedora</li><li>Fluxbuntu</li><li>FreeBSD</li><li>GNU KFreeBSD</li><li>Gentoo</li><li>Goobuntu</li><li>HP</li><li>Joli Cloud</li><li>Linaro</li><li>Linux Mint</li><li>MEPIS</li><li>Mac OS X</li><li>MacPorts</li><li>Mageia</li><li>Mandriva</li><li>MeeGo</li><li>Moblin</li><li>Mythbuntu</li><li>NetBSD</li><li>Nexenta Core</li><li>OLPC</li><li>OpenIndiana</li><li>OpenMandriva</li><li>OpenSolaris</li><li>OpenSuSE</li><li>Optware</li><li>Oracle Server</li><li>PCLinuxOS</li><li>PTS Desktop Live</li><li>PTS Linux Live</li><li>Palm</li><li>Pardus Linux</li><li>Red Hat Enterprise</li><li>Red Hat Enterprise Server</li><li>SUSE</li><li>SUSE Linux</li><li>Scientific</li><li>ScientificSL</li><li>Solus</li><li>Solus Linux</li><li>Ubuntu</li><li>Void Linux</li><li>Zenwalk</li><li>gNewSense</li></p></body></html>

File diff suppressed because one or more lines are too long

View File

@@ -1,20 +1,20 @@
The Phoronix Test Suite itself is an open-source framework for conducting automated tests along with reporting of test results, detection of installed system software/hardware, and other features. Modules for the Phoronix Test Suite also allow for integration with git-bisect and other revision control systems for per-commit regression testing, system sensor monitoring, and other extras.
This framework is designed to be an extensible architecture so that new test profiles and suites can be easily added to represent performance benchmarks, unit tests, and other quantitative and qualitative (e.g. image quality comparison) measurements. Available through OpenBenchmarking.org, a collaborative storage platform developed in conjunction with the Phoronix Test Suite, are more than 200 individual test profiles and more than 60 test suites available by default from the Phoronix Test Suite. Independent users are also able to upload their test results, profiles, and suites to OpenBenchmarking.org. A test profile is a single test that can be executed by the Phoronix Test Suite -- with a series of options possible within every test -- and a test suite is a seamless collection of test profiles and/or additional test suites. A test profile consists of a set of bash/shell scripts and XML files while a test suite is a single XML file.
This framework is designed to be an extensible architecture so that new test profiles and suites can be easily added to represent performance benchmarks, unit tests, and other quantitative and qualitative (e.g. image quality comparison) measurements. Available through OpenBenchmarking.org, a collaborative storage platform developed in conjunction with the Phoronix Test Suite, are more than 200 individual test profiles and more than 60 test suites available by default from the Phoronix Test Suite. Independent users are also able to upload their test results, profiles, and suites to OpenBenchmarking.org. A test profile is a single test that can be executed by the Phoronix Test Suite -- with a series of options possible within every test -- and a test suite is a seamless collection of test profiles and/or additional test suites. A test profile consists of a set of Bash/shell scripts and XML files while a test suite is a single XML file.
[OpenBenchmarking.org](http://www.openbenchmarking.org/) also allows for conducting side-by-side result comparisons, a central location for storing and sharing test results, and collaborating over test data. [Phoromatic](http://www.phoromatic.com/) is a complementary platform to OpenBenchmarking.org and the Phoronix Test Suite for interfacing with Phoronix Test Suite client(s) to automatically execute test runs on a timed, per-commit, or other trigger-driven basis. Phoromatic is designed for enterprise and allows for the easy management of multiple networked systems running Phoronix Test Suite clients via a single web-based interface.
Professional support and custom engineering for the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org is available by contacting <http://www.phoronix-test-suite.com/>.
Full details on the Phoronix Test Suite setup and usage is available from the included HTML/PDF documentation within the phoronix-test-suite package and from the Phoronix Test Suite web-site.
Full details on the Phoronix Test Suite setup and usage is available from the included HTML/PDF documentation within the phoronix-test-suite package and from the Phoronix Test Suite website.
## INSTALLATION & SETUP:
## Installation & Setup
The Phoronix Test Suite is supported on Linux, *BSD, Solaris, Mac OS X, and Windows systems. However, the most full-featured and well supported operating system for conducting the tests is Linux with some non-basic functionality not being available under all platforms. The Phoronix Test Suite software/framework is compatible with all major CPU architectures (e.g. i686, x86_64, ARM, PowerPC), but not all of the test profiles/suites are compatible with all architectures.
The Phoronix Test Suite can be installed for system-wide usage or run locally without installation from the extracted tar.gz/zip package. The only hard dependency on the Phoronix Test Suite is having command-line support for PHP (PHP 5.3+) installed. A complete PHP stack (e.g. with web-server) is NOT needed, but merely the PHP command-line support, which is widely available from operating system package managers under the name `php`, `php5-cli`, or `php5`.
The Phoronix Test Suite can be installed for system-wide usage or run locally without installation from the extracted tar.gz/zip package. The only hard dependency on the Phoronix Test Suite is having command-line support for PHP (PHP 5.3+) installed. A complete PHP stack (e.g. with web server) is **not** needed, but merely the PHP command-line support, which is widely available from operating system package managers under the name `php`, `php5-cli`, or `php5`.
## USAGE:
## Usage
The process to download, install/setup, execute, and report the results of a benchmark can be as simple as a command such as `phoronix-test-suite benchmark smallpt` to run a simple CPU test profile. If wishing to simply install a test, it's a matter of running `phoronix-test-suite install <test or suite name>` and to run it's `phoronix-test-suite run <test or suite name>`. There's also a batch mode for non-interactive benchmarking by first running `phoronix-test-suite batch-setup` and then using the `batch-run` sub-command rather than `run`.
@@ -22,4 +22,4 @@ Viewing installed system hardware and software is available via `phoronix-test-s
Facilitating a result comparison from OpenBenchmarking.org can be done by running, for example, `phoronix-test-suite benchmark 1204293-BY-PHORONIX357` if wishing to compare the results of the `http://openbenchmarking.org/result/1204293-BY-PHORONIX357` result file.
Additional information is available from the Phoronix Test Suite web-site <http://www.phoronix-test-suite.com/> and the material bundled within the `phoronix-test-suite/documentation/` directory. A man page is also bundled with the phoronix-test-suite software.
Additional information is available from the Phoronix Test Suite website <http://www.phoronix-test-suite.com/> and the material bundled within the `phoronix-test-suite/documentation/` directory. A man page is also bundled with the phoronix-test-suite software.

View File

@@ -2,7 +2,7 @@
# Phoronix Test Suite
# URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
# Copyright (C) 2008 - 2015, Phoronix Media
# Copyright (C) 2008 - 2017, Phoronix Media
#
# 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

View File

@@ -3,8 +3,8 @@
#
# Phoronix Test Suite
# URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
# Copyright (C) 2008 - 2015, Phoronix Media
# Copyright (C) 2008 - 2015, Michael Larabel
# Copyright (C) 2008 - 2017, Phoronix Media
# Copyright (C) 2008 - 2017, Michael Larabel
# phoronix-test-suite: The Phoronix Test Suite is an extensible open-source testing / benchmarking platform
#
# This program is free software; you can redistribute it and/or modify
@@ -44,12 +44,18 @@ fi
if [ ! "X$PHP_BIN" = "X" ] && [ -x $PHP_BIN ]
then
export PHP_BIN=$PHP_BIN
elif [ -x /usr/bin/php7 ] || [ -x /usr/local/bin/php7 ] || [ -x /usr/pkg/bin/php7 ]
then
export PHP_BIN="php7"
elif [ -x /usr/bin/php5 ] || [ -x /usr/local/bin/php5 ] || [ -x /usr/pkg/bin/php5 ]
then
export PHP_BIN="php5"
elif [ -x /usr/bin/php ] || [ -x /usr/local/bin/php ] || [ -x /usr/pkg/bin/php ]
then
export PHP_BIN="php"
elif [ -x /usr/php7/bin/php ]
then
export PHP_BIN="/usr/php7/bin/php"
elif [ -x /usr/php5/bin/php ]
then
export PHP_BIN="/usr/php5/bin/php"
@@ -65,6 +71,9 @@ then
elif which php >/dev/null 2>&1 ;
then
export PHP_BIN="php"
elif which php7 >/dev/null 2>&1 ;
then
export PHP_BIN="php7"
elif which php5 >/dev/null 2>&1 ;
then
export PHP_BIN="php5"
@@ -83,7 +92,7 @@ if [ "X$PHP_BIN" = "X" ]
then
cat <<'EOT'
PHP 5.3 or newer must be installed for the Phoronix Test Suite
PHP 5.3 or newer or PHP 7 must be installed for the Phoronix Test Suite
The PHP command-line package is commonly called php-cli, php5-cli, or php.
For more information visit: http://www.phoronix-test-suite.com/
@@ -91,38 +100,87 @@ EOT
if [ -x /usr/bin/zypper ]
then
# SUSE / OpenSUSE
echo "The command to likely run for your operating system is: "
echo "# zypper install php5 php5-zip"
echo "# zypper install php7 php7-zip"
echo " "
elif [ -x /usr/bin/apt-get ]
then
# Debian / Ubuntu Based Systems
echo "The command to likely run for your operating system is: "
echo "# apt-get install php5-cli"
echo "# apt-get install php-cli php-xml"
echo " "
elif [ -x /usr/bin/dnf ]
then
# Modern Fedora
echo "The command to likely run for your operating system is: "
echo "# dnf install php-cli php-xml"
echo " "
elif [ -x /usr/bin/yum ]
then
# Red Hat / Fedora / etc
echo "The command to likely run for your operating system is: "
echo "# yum install php-cli php-xml"
echo " "
elif [ -x /usr/bin/pkg_radd ]
then
# BSD
echo "The command to likely run for your operating system is: "
echo "# pkg_radd php5 php5-json php5-zip php5-dom"
echo " "
elif [ -x /usr/bin/pacman ]
then
# Arch Linux
echo "The command to likely run for your operating system is: "
echo "# pacman -S php"
echo " "
elif [ -x /usr/local/sbin/pkg ] || [ -x /usr/sbin/pkg ]
then
# DragonFlyBSD and others
echo "The command to likely run for your operating system is: "
echo "# pkg install php5 php5-dom php5-zip php5-json php5-simplexml"
echo "# pkg install php70 php70-dom php70-zip php70-json php70-simplexml"
echo " "
elif [ -x /usr/local/swupd ]
then
# Clear Linux
echo "The command to likely run for your operating system is: "
echo "# swupd bundle-add os-testsuite-phoronix"
echo " "
elif [ -x /usr/sbin/pkg_add ]
then
# OpenBSD
echo "The command to likely run for your operating system is: "
echo "# pkg_add php php-zip"
echo " "
elif [ -x /usr/sbin/equo ]
then
# Sabayon
echo "The command to likely run for your operating system is: "
echo "# equo install dev-lang/php"
echo " "
elif [ -x /usr/bin/xbps-install ] || [ -x /usr/sbin/xbps-install ]
then
# Void Linux
echo "The command to likely run for your operating system is: "
echo "# xbps-install -Sy php unzip"
echo " "
elif [ -x /usr/sbin/netpkg ]
then
# Zenwalk / Slackware
echo "The command to likely run for your operating system is: "
echo "# netpkg php"
echo " "
elif [ -x /sbin/apk ]
then
# Alpine Linux
echo "The command to likely run for your operating system is: "
echo "# apk add php5 php5-dom php5-zip php5-json"
echo " "
elif [ -x /usr/bin/urpmi ]
then
# OpenMandriva Linux
echo "The command to likely run for your operating system is: "
echo "# urpmi php-cli"
echo " "
fi

View File

@@ -1,7 +1,7 @@
:: Phoronix Test Suite
:: URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
:: Copyright (C) 2008 - 2015, Phoronix Media
:: Copyright (C) 2008 - 2015, Michael Larabel
:: Copyright (C) 2008 - 2017, Phoronix Media
:: Copyright (C) 2008 - 2017, Michael Larabel
:: phoronix-test-suite: The Phoronix Test Suite is an extensible open-source testing / benchmarking platform
::
:: This program is free software; you can redistribute it and/or modify

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2012 - 2015, Phoronix Media
Copyright (C) 2012 - 2015, Michael Larabel
Copyright (C) 2012 - 2016, Phoronix Media
Copyright (C) 2012 - 2016, Michael Larabel
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
@@ -39,7 +39,7 @@ class auto_compare implements pts_option_interface
if($test_object instanceof pts_test_profile)
{
array_push($compare_tests, $test_object->get_identifier(false));
$compare_tests[] = $test_object->get_identifier(false);
if(!isset($compare_subsystems[$test_object->get_test_hardware_type()]))
{
@@ -140,7 +140,7 @@ class auto_compare implements pts_option_interface
}
$result_file->override_result_objects($result_objects);
pts_client::save_test_result($result_file->get_file_location(), $result_file->get_xml());
array_push($compare_results, $public_id);
$compare_results[] = $public_id;
}
}
@@ -197,10 +197,10 @@ class auto_compare implements pts_option_interface
{
$value_r = explode(' ', str_replace('-', ' ', $value));
array_pop($value_r);
array_push($to_array, $component_type . ':' . implode(' ', $value_r));
$to_array[] = $component_type . ':' . implode(' ', $value_r);
}
array_push($to_array, $component_type . ':' . $value);
$to_array[] = $component_type . ':' . $value;
}
}
}

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2008 - 2015, Phoronix Media
Copyright (C) 2008 - 2015, Michael Larabel
Copyright (C) 2008 - 2016, Phoronix Media
Copyright (C) 2008 - 2016, Michael Larabel
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
@@ -37,8 +37,12 @@ class build_suite implements pts_option_interface
$possible_suites = pts_openbenchmarking::available_suites();
$possible_tests = pts_openbenchmarking::available_tests();
$suite_writer = new pts_test_suite_writer();
$suite_writer->add_suite_information($suite_name, '1.0.0', $suite_maintainer, $suite_test_type, $suite_description);
$new_suite = new pts_test_suite();
$new_suite->set_title($suite_name);
$new_suite->set_version('1.0.0');
$new_suite->set_maintainer($suite_maintainer);
$new_suite->set_suite_type($suite_test_type);
$new_suite->set_description($suite_description);
foreach($r as $test_object)
{
@@ -51,12 +55,12 @@ class build_suite implements pts_option_interface
for($i = 0; $i < count($args); $i++)
{
// Not binding the test profile version to this suite, otherwise change false to true
$suite_writer->add_to_suite($test_object->get_identifier(false), $args[$i], $description[$i]);
$new_suite->add_to_suite($test_object, $args[$i], $description[$i]);
}
}
else if($test_object instanceof pts_test_suite)
{
$suite_writer->add_to_suite($test_object->get_identifier(), null, null);
$new_suite->add_suite_tests_to_suite($test_object);
}
}
@@ -74,12 +78,13 @@ class build_suite implements pts_option_interface
for($i = 0; $i < count($args); $i++)
{
$suite_writer->add_to_suite($test_to_add, $args[$i], $description[$i]);
$new_suite->add_to_suite($test_profile, $args[$i], $description[$i]);
}
break;
case 'Add Sub-Suite':
$suite_to_add = pts_user_io::prompt_text_menu('Enter test suite', $possible_suites);
$suite_writer->add_to_suite($suite_to_add, null, null);
$test_suite = new pts_test_suite($suite_to_add);
$new_suite->add_suite_tests_to_suite($test_suite);
break;
}
echo PHP_EOL . 'Available Options:' . PHP_EOL;
@@ -87,13 +92,9 @@ class build_suite implements pts_option_interface
}
while($input_option != 'Save & Exit');
$suite_identifier = $suite_writer->clean_save_name_string($suite_name);
$save_to = PTS_TEST_SUITE_PATH . 'local/' . $suite_identifier . '/suite-definition.xml';
mkdir(dirname($save_to));
if($suite_writer->save_xml($save_to) != false)
if($new_suite->save_xml($suite_name) != false)
{
echo PHP_EOL . PHP_EOL . 'Saved To: ' . $save_to . PHP_EOL . 'To run this suite, type: phoronix-test-suite benchmark ' . $suite_identifier . PHP_EOL . PHP_EOL;
echo PHP_EOL . PHP_EOL . 'Saved -- to run this suite, type: phoronix-test-suite benchmark ' . $new_suite->get_identifier() . PHP_EOL . PHP_EOL;
}
}
}

View File

@@ -0,0 +1,45 @@
<?php
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2015, Phoronix Media
Copyright (C) 2015, Michael Larabel
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 debug_dependency_handler implements pts_option_interface
{
const doc_section = 'Other';
const doc_description = 'This option is used for testing the distribution-specific dependency handler for external dependencies.';
public static function run($r)
{
$exdep_parser = new pts_exdep_generic_parser();
foreach($exdep_parser->get_available_packages() as $pkg)
{
$pkg_data = $exdep_parser->get_package_data($pkg);
$files = explode(' ', str_replace(array(' OR ', ', '), ' ', $pkg_data['file_check']));
foreach($files as $file)
{
echo (is_array($file) ? implode(' ', $file) : $file) . ': ';
$deps = pts_external_dependencies::packages_that_provide($file);
echo (is_array($deps) ? implode(' ', $deps) : null) . PHP_EOL;
}
}
}
}
?>

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2015, Phoronix Media
Copyright (C) 2015, Michael Larabel
Copyright (C) 2015 - 2017, Phoronix Media
Copyright (C) 2015 - 2017, Michael Larabel
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
@@ -34,7 +34,11 @@ class debug_render_test implements pts_option_interface
pts_network::download_file('http://linuxbenchmarking.com/misc/mega-render-test-310815.tar.bz2', $render_dir . 'mega-render-test.tar.bz2');
pts_compression::archive_extract($render_dir . 'mega-render-test.tar.bz2');
}
define('PATH_TO_EXPORTED_PHOROMATIC_DATA', $render_dir . 'mega-render-test-310815/');
if(!defined('PATH_TO_EXPORTED_PHOROMATIC_DATA'))
{
define('PATH_TO_EXPORTED_PHOROMATIC_DATA', $render_dir . 'mega-render-test-310815/');
}
error_reporting(E_ALL);
ini_set('memory_limit','2048M');
@@ -63,7 +67,7 @@ class debug_render_test implements pts_option_interface
{
// Add to result file
$system_name = basename(dirname($composite_xml)) . ': ' . $trigger;
array_push($result_files, new pts_result_merge_select($composite_xml, null, $system_name));
$result_files[] = new pts_result_merge_select($composite_xml, null, $system_name);
}
}
echo 'STARTING MERGE; ';
@@ -97,6 +101,19 @@ class debug_render_test implements pts_option_interface
$dump_size += strlen($html_dump);
file_put_contents(PATH_TO_EXPORTED_PHOROMATIC_DATA . $REQUESTED . '.html', $html_dump . '</body></html>');
}
if(getenv('DEBUG_RENDER_TEST_LOCAL_TOO') != false)
{
echo PHP_EOL . 'LOCAL RENDER TEST TIME' . PHP_EOL;
$extra_graph_attributes = null;
foreach(pts_client::saved_test_results() as $saved_result)
{
$save_to_dir = pts_client::setup_test_result_directory($saved_result);
$generated_graphs = pts_client::generate_result_file_graphs($saved_result, $save_to_dir, $extra_graph_attributes);
echo $saved_result . ': ' . count($generated_graphs) . PHP_EOL;
}
}
echo PHP_EOL . 'RENDER TEST TOOK: ' . (time() - $start) . PHP_EOL . PHP_EOL;
echo PHP_EOL . 'PEAK MEMORY USAGE: ' . round(memory_get_peak_usage(true) / 1048576, 3) . ' MB';
echo PHP_EOL . 'PEAK MEMORY USAGE (emalloc): ' . round(memory_get_peak_usage() / 1048576, 3) . ' MB';

View File

@@ -0,0 +1,48 @@
<?php
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2017, Phoronix Media
Copyright (C) 2017, Michael Larabel
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 debug_result_parser implements pts_option_interface
{
const doc_section = 'Asset Creation';
const doc_description = 'This option is intended for use by test profile writers and is used for debugging a result parser. No test execution is done, but there must already be PTS-generated .log files present within the test\'s installation directory.';
public static function argument_checks()
{
return array(
new pts_argument_check('VARIABLE_LENGTH', array('pts_types', 'identifier_to_object'), null)
);
}
public static function run($r)
{
// Make sure you're debugging the latest test script...
//pts_test_installer::standard_install($r);
// For debugging, usually running just once is sufficient, unless FORCE_TIMES_TO_RUN is preset
pts_client::pts_set_environment_variable('FORCE_TIMES_TO_RUN', 1);
// Run the test(s) in debug mode
pts_client::set_debug_mode(true);
$test_run_manager = new pts_test_run_manager();
$test_run_manager->DEBUG_no_test_execution_just_result_parse = true;
$test_run_manager->standard_run($r);
}
}
?>

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2013 - 2015, Phoronix Media
Copyright (C) 2013 - 2015, Michael Larabel
Copyright (C) 2013 - 2016, Phoronix Media
Copyright (C) 2013 - 2016, Michael Larabel
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
@@ -57,7 +57,7 @@ class debug_self_test implements pts_option_interface
$c_start = microtime(true);
pts_client::execute_command($command, $args);
$c_finish = microtime(true);
array_push($individual_times[$command], ($c_finish - $c_start));
$individual_times[$command][] = ($c_finish - $c_start);
}
}
$finish = microtime(true);

View File

@@ -1,57 +0,0 @@
<?php
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2011 - 2015, Phoronix Media
Copyright (C) 2011 - 2015, Michael Larabel
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 detailed_system_info implements pts_option_interface
{
const doc_section = 'System';
const doc_description = 'Display detailed information about the installed system hardware and software information as detected by the Phoronix Test Suite Phodevi Library.';
public static function run($r)
{
pts_client::$display->generic_heading('System Information');
echo 'Hardware:' . PHP_EOL . phodevi::system_hardware(true) . PHP_EOL . PHP_EOL;
echo 'Software:' . PHP_EOL . phodevi::system_software(true) . PHP_EOL . PHP_EOL;
//
// Processor Information
//
$cpu_flags = phodevi_cpu::get_cpu_flags();
echo PHP_EOL . 'PROCESSOR:' . PHP_EOL . PHP_EOL;
echo 'Core Count: ' . phodevi_cpu::cpuinfo_core_count() . PHP_EOL;
echo 'Thread Count: ' . phodevi_cpu::cpuinfo_thread_count() . PHP_EOL;
echo 'Cache Size: ' . phodevi_cpu::cpuinfo_cache_size() . ' KB' . PHP_EOL;
echo 'Instruction Set Extensions: ' . phodevi_cpu::instruction_set_extensions() . PHP_EOL;
echo 'AES Encryption: ' . ($cpu_flags & phodevi_cpu::get_cpu_feature_constant('aes') ? 'YES' : 'NO') . PHP_EOL;
echo 'Energy Performance Bias: ' . ($cpu_flags & phodevi_cpu::get_cpu_feature_constant('epb') ? 'YES' : 'NO') . PHP_EOL;
echo 'Virtualization: ' . (phodevi_cpu::virtualization_technology() ? phodevi_cpu::virtualization_technology() : 'NO') . PHP_EOL;
// Other info
foreach(pts_arrays::to_array(pts_test_run_manager::pull_test_notes(true)) as $test_note_head => $test_note)
{
echo ucwords(str_replace('-', ' ', $test_note_head)) . ': ' . $test_note . PHP_EOL;
}
}
}
?>

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2009 - 2010, Phoronix Media
Copyright (C) 2009 - 2010, Michael Larabel
Copyright (C) 2009 - 2016, Phoronix Media
Copyright (C) 2009 - 2016, Michael Larabel
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
@@ -32,7 +32,7 @@ class dump_possible_options implements pts_option_interface
if(!in_array(pts_strings::first_in_string($name, '-'), array('dump', 'debug', 'task')))
{
array_push($options, $name);
$options[] = $name;
}
}

View File

@@ -0,0 +1,63 @@
<?php
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2017, Phoronix Media
Copyright (C) 2017, Michael Larabel
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 estimate_run_time implements pts_option_interface
{
const doc_section = 'Information';
const doc_description = 'This option will provide estimates for test run-time / length.';
public static function argument_checks()
{
return array(
new pts_argument_check(0, array('pts_types', 'identifier_to_object'))
);
}
public static function run($args)
{
echo PHP_EOL;
if($args[0] == 'pts/all' || empty($args))
{
$args = pts_openbenchmarking::available_tests(false);
}
$tests = array();
$total_time = 0;
$test_count = 0;
foreach($args as $arg)
{
foreach(pts_types::identifiers_to_test_profile_objects($arg) as $t)
{
$tests[] = array($t->get_identifier(), pts_strings::format_time($t->get_estimated_run_time()));
$total_time += $t->get_estimated_run_time();
$test_count++;
}
}
if($test_count > 1 && $total_time > 0)
{
echo pts_user_io::display_text_table($tests);
echo PHP_EOL . PHP_EOL . 'TOTAL TIME ESTIMATE: ' . pts_strings::format_time($total_time) . PHP_EOL . PHP_EOL;
}
}
}
?>

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2009 - 2015, Phoronix Media
Copyright (C) 2009 - 2015, Michael Larabel
Copyright (C) 2009 - 2016, Phoronix Media
Copyright (C) 2009 - 2016, Michael Larabel
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
@@ -45,6 +45,12 @@ class finish_run implements pts_option_interface
foreach($result_file->get_result_objects() as $pos => $result_object)
{
// Don't load null test profile identifier tests into the run queue
if($result_object->test_profile->get_identifier() == null)
{
continue;
}
$this_result_object_identifiers = $result_object->test_result_buffer->get_identifiers();
foreach($system_identifiers as $system_identifier)
@@ -56,7 +62,7 @@ class finish_run implements pts_option_interface
$test_positions[$system_identifier] = array();
}
array_push($test_positions[$system_identifier], $pos);
$test_positions[$system_identifier][] = $pos;
}
}
}

View File

@@ -23,7 +23,7 @@
class gui implements pts_option_interface
{
const doc_section = 'Web / GUI Support';
const doc_description = 'Launch the Phoronix Test Suite HTML5 web user-interface in the local GUI mode (no remote web support) and attempt to auto-launch the web-browser.';
const doc_description = 'Launch the Phoronix Test Suite HTML5 web user-interface in the local GUI mode (no remote web support) and attempt to auto-launch the web-browser. THIS FEATURE IS CURRENTLY EXPERIMENTAL AND NO LONGER ACTIVE DEVELOPMENT. See Phoronix Test Suite Phoromatic as an alternative web UI approach.';
public static function command_aliases()
{

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2010 - 2015, Phoronix Media
Copyright (C) 2010 - 2015, Michael Larabel
Copyright (C) 2010 - 2017, Phoronix Media
Copyright (C) 2010 - 2017, Michael Larabel
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
@@ -27,7 +27,7 @@ class help implements pts_option_interface
public static function run($r)
{
echo PHP_EOL . pts_core::program_title(true) . PHP_EOL . PHP_EOL;
echo PHP_EOL . pts_client::cli_colored_text(pts_core::program_title(true), 'green', true) . PHP_EOL . PHP_EOL;
echo pts_documentation::basic_description() . PHP_EOL . PHP_EOL . 'View the included PDF / HTML documentation or visit http://www.phoronix-test-suite.com/ for full details.' . PHP_EOL;
$options = pts_documentation::client_commands_array();
@@ -38,13 +38,15 @@ class help implements pts_option_interface
continue;
}
echo PHP_EOL . strtoupper($section) . PHP_EOL . PHP_EOL;
echo PHP_EOL . pts_client::cli_just_bold(strtoupper($section)) . PHP_EOL . PHP_EOL;
sort($contents);
$tabled = array();
foreach($contents as &$option)
{
echo ' ' . trim($option[0] . ' ' . implode(' ', $option[1])) . PHP_EOL;
$tabled[] = array($option[0], pts_client::cli_colored_text(implode(' ', $option[1]), 'gray'));
}
echo pts_user_io::display_text_table($tabled, ' ') . PHP_EOL;
}
echo PHP_EOL;
}

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2008 - 2015, Phoronix Media
Copyright (C) 2008 - 2015, Michael Larabel
Copyright (C) 2008 - 2017, Phoronix Media
Copyright (C) 2008 - 2017, Michael Larabel
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
@@ -47,14 +47,19 @@ class info implements pts_option_interface
if($o instanceof pts_test_suite)
{
pts_client::$display->generic_heading($o->get_title());
echo 'Run Identifier: ' . $o->get_identifier() . PHP_EOL;
echo 'Suite Version: ' . $o->get_version() . PHP_EOL;
echo 'Maintainer: ' . $o->get_maintainer() . PHP_EOL;
echo 'Suite Type: ' . $o->get_suite_type() . PHP_EOL;
echo 'Unique Tests: ' . $o->get_unique_test_count() . PHP_EOL;
echo 'Suite Description: ' . $o->get_description() . PHP_EOL;
echo PHP_EOL;
echo $o->pts_format_contained_tests_string();
echo pts_client::cli_just_bold('Run Identifier: ') . $o->get_identifier() . PHP_EOL;
echo pts_client::cli_just_bold('Suite Version: ') . $o->get_version() . PHP_EOL;
echo pts_client::cli_just_bold('Maintainer: ') . $o->get_maintainer() . PHP_EOL;
echo pts_client::cli_just_bold('Suite Type: ') . $o->get_suite_type() . PHP_EOL;
echo pts_client::cli_just_bold('Unique Tests: ') . $o->get_unique_test_count() . PHP_EOL;
echo pts_client::cli_just_bold('Suite Description: ') . $o->get_description() . PHP_EOL;
echo PHP_EOL . pts_client::cli_just_bold('Contained Tests: ') . PHP_EOL;
$test_table = array();
foreach($o->get_contained_test_result_objects() as $result_obj)
{
$test_table[] = array($result_obj->test_profile->get_title(), $result_obj->get_arguments_description());
}
echo pts_user_io::display_text_table($test_table, ' ', 1);
echo PHP_EOL;
}
else if($o instanceof pts_test_profile)
@@ -67,32 +72,32 @@ class info implements pts_option_interface
}
pts_client::$display->generic_heading($test_title);
echo 'Run Identifier: ' . $o->get_identifier() . PHP_EOL;
echo 'Profile Version: ' . $o->get_test_profile_version() . PHP_EOL;
echo 'Maintainer: ' . $o->get_maintainer() . PHP_EOL;
echo 'Test Type: ' . $o->get_test_hardware_type() . PHP_EOL;
echo 'Software Type: ' . $o->get_test_software_type() . PHP_EOL;
echo 'License Type: ' . $o->get_license() . PHP_EOL;
echo 'Test Status: ' . $o->get_status() . PHP_EOL;
echo 'Project Web-Site: ' . $o->get_project_url() . PHP_EOL;
echo pts_client::cli_just_bold('Run Identifier: ') . $o->get_identifier() . PHP_EOL;
echo pts_client::cli_just_bold('Profile Version: ') . $o->get_test_profile_version() . PHP_EOL;
echo pts_client::cli_just_bold('Maintainer: ') . $o->get_maintainer() . PHP_EOL;
echo pts_client::cli_just_bold('Test Type: ') . $o->get_test_hardware_type() . PHP_EOL;
echo pts_client::cli_just_bold('Software Type: ') . $o->get_test_software_type() . PHP_EOL;
echo pts_client::cli_just_bold('License Type: ') . $o->get_license() . PHP_EOL;
echo pts_client::cli_just_bold('Test Status: ') . $o->get_status() . PHP_EOL;
echo pts_client::cli_just_bold('Project Web-Site: ') . $o->get_project_url() . PHP_EOL;
if($o->get_estimated_run_time() > 1)
{
echo 'Estimated Run-Time: ' . $o->get_estimated_run_time() . ' Seconds' . PHP_EOL;
echo pts_client::cli_just_bold('Estimated Run-Time: ') . $o->get_estimated_run_time() . ' Seconds' . PHP_EOL;
}
$download_size = $o->get_download_size();
if(!empty($download_size))
{
echo 'Download Size: ' . $download_size . ' MB' . PHP_EOL;
echo pts_client::cli_just_bold('Download Size: ') . $download_size . ' MB' . PHP_EOL;
}
$environment_size = $o->get_environment_size();
if(!empty($environment_size))
{
echo 'Environment Size: ' . $environment_size . ' MB' . PHP_EOL;
echo pts_client::cli_just_bold('Environment Size: ') . $environment_size . ' MB' . PHP_EOL;
}
echo PHP_EOL . 'Description: ' . $o->get_description() . PHP_EOL;
echo PHP_EOL . pts_client::cli_just_bold('Description: ') . $o->get_description() . PHP_EOL;
if($o->test_installation != false)
{
@@ -104,37 +109,37 @@ class info implements pts_option_interface
$latest_time = $o->test_installation->get_latest_run_time();
$latest_time = !empty($latest_time) ? pts_strings::format_time($latest_time, 'SECONDS') : 'N/A';
echo PHP_EOL . 'Test Installed: Yes' . PHP_EOL;
echo 'Last Run: ' . $last_run . PHP_EOL;
echo PHP_EOL . pts_client::cli_just_bold('Test Installed: ') . 'Yes' . PHP_EOL;
echo pts_client::cli_just_bold('Last Run: ') . $last_run . PHP_EOL;
if($last_run != 'Never')
{
if($o->test_installation->get_run_count() > 1)
{
echo 'Average Run-Time: ' . $avg_time . PHP_EOL;
echo pts_client::cli_just_bold('Average Run-Time: ') . $avg_time . PHP_EOL;
}
echo 'Latest Run-Time: ' . $latest_time . PHP_EOL;
echo 'Times Run: ' . $o->test_installation->get_run_count() . PHP_EOL;
echo pts_client::cli_just_bold('Latest Run-Time: ') . $latest_time . PHP_EOL;
echo pts_client::cli_just_bold('Times Run: ') . $o->test_installation->get_run_count() . PHP_EOL;
}
}
else
{
echo PHP_EOL . 'Test Installed: No' . PHP_EOL;
echo PHP_EOL . pts_client::cli_just_bold('Test Installed: ') . 'No' . PHP_EOL;
}
$dependencies = $o->get_dependencies();
$dependencies = $o->get_external_dependencies();
if(!empty($dependencies) && !empty($dependencies[0]))
{
echo PHP_EOL . 'Software Dependencies:' . PHP_EOL;
echo PHP_EOL . pts_client::cli_just_bold('Software Dependencies:') . PHP_EOL;
echo pts_user_io::display_text_list($o->get_dependency_names());
}
echo PHP_EOL;
}
else if($o instanceof pts_result_file)
{
echo 'Title: ' . $o->get_title() . PHP_EOL . 'Identifier: ' . $o->get_identifier() . PHP_EOL;
echo PHP_EOL . 'Test Result Identifiers:' . PHP_EOL;
echo pts_client::cli_just_bold('Title: ') . $o->get_title() . PHP_EOL . pts_client::cli_just_bold('Identifier: ') . $o->get_identifier() . PHP_EOL;
echo PHP_EOL . pts_client::cli_just_bold('Test Result Identifiers:') . PHP_EOL;
echo pts_user_io::display_text_list($o->get_system_identifiers());
$test_titles = array();
@@ -142,13 +147,13 @@ class info implements pts_option_interface
{
if($result_object->test_profile->get_display_format() == 'BAR_GRAPH')
{
array_push($test_titles, $result_object->test_profile->get_title());
$test_titles[] = $result_object->test_profile->get_title();
}
}
if(count($test_titles) > 0)
{
echo PHP_EOL . 'Contained Tests:' . PHP_EOL;
echo PHP_EOL . pts_client::cli_just_bold('Contained Tests:') . PHP_EOL;
echo pts_user_io::display_text_list(array_unique($test_titles));
}
echo PHP_EOL;
@@ -156,7 +161,7 @@ class info implements pts_option_interface
else if($o instanceof pts_virtual_test_suite)
{
pts_client::$display->generic_heading($o->get_title());
echo 'Virtual Suite Description: ' . $o->get_description() . PHP_EOL . PHP_EOL;
echo pts_client::cli_just_bold('Virtual Suite Description: ') . $o->get_description() . PHP_EOL . PHP_EOL;
foreach($o->get_contained_test_profiles() as $test_profile)
{

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2011 - 2015, Phoronix Media
Copyright (C) 2011 - 2015, Michael Larabel
Copyright (C) 2011 - 2016, Phoronix Media
Copyright (C) 2011 - 2016, Michael Larabel
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
@@ -95,7 +95,7 @@ class interactive implements pts_option_interface
foreach(array_map('strtolower', pts_types::subsystem_targets()) as $subsystem)
{
array_push($possible_suites, 'pts/' . $subsystem);
$possible_suites[] = 'pts/' . $subsystem;
}
$suites_to_run = pts_user_io::prompt_text_menu('Select Suite', $possible_suites, true);
@@ -174,7 +174,7 @@ class interactive implements pts_option_interface
}
else
{
array_push($drives, 'No HDD');
$drives[] = 'No HDD';
$to_mount = pts_user_io::prompt_text_menu('Select Drive / Partition To Mount', $drives);
if($to_mount != 'No HDD')

View File

@@ -31,7 +31,7 @@ class list_available_suites implements pts_option_interface
}
public static function run($r)
{
$available_suites = pts_openbenchmarking::available_suites(false);
$available_suites = array_merge(pts_openbenchmarking::available_suites(false), pts_tests::local_suites());
pts_client::$display->generic_heading('Available Suites');
if(count($available_suites) > 0)

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2008 - 2015, Phoronix Media
Copyright (C) 2008 - 2015, Michael Larabel
Copyright (C) 2008 - 2016, Phoronix Media
Copyright (C) 2008 - 2016, Michael Larabel
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
@@ -39,7 +39,7 @@ class list_available_tests implements pts_option_interface
$id = substr($identifier, strlen($repo) + 1);
$repo_index = pts_openbenchmarking::read_repository_index($repo);
if(!in_array(phodevi::operating_system(), $repo_index['tests'][$id]['supported_platforms']) || empty($repo_index['tests'][$id]['title']))
if((!empty($repo_index['tests'][$id]['supported_platforms']) && !in_array(phodevi::operating_system(), $repo_index['tests'][$id]['supported_platforms'])) || empty($repo_index['tests'][$id]['title']))
{
// Don't show unsupported tests
continue;
@@ -49,9 +49,9 @@ class list_available_tests implements pts_option_interface
$test_count++;
}
foreach(pts_file_io::glob(PTS_TEST_PROFILE_PATH . 'local/*/test-definition.xml') as $path)
foreach(pts_tests::local_tests() as $identifier)
{
$test_profile = new pts_test_profile('local/' . basename(dirname($path)));
$test_profile = new pts_test_profile($identifier);
if($test_profile->get_title() != null && $test_profile->is_supported(false))
{

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2009 - 2013, Phoronix Media
Copyright (C) 2009 - 2013, Michael Larabel
Copyright (C) 2009 - 2016, Phoronix Media
Copyright (C) 2009 - 2016, Michael Larabel
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
@@ -34,7 +34,7 @@ class list_installed_suites implements pts_option_interface
$suite = new pts_test_suite($suite);
if($suite->needs_updated_install() == false)
{
array_push($installed_suites, $suite);
$installed_suites[] = $suite;
}
}

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2008 - 2011, Phoronix Media
Copyright (C) 2008 - 2011, Michael Larabel
Copyright (C) 2008 - 2016, Phoronix Media
Copyright (C) 2008 - 2016, Michael Larabel
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

View File

@@ -0,0 +1,82 @@
<?php
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2016, Phoronix Media
Copyright (C) 2016, Michael Larabel
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 list_not_installed_tests implements pts_option_interface
{
const doc_section = 'Information';
const doc_description = 'This option will list all test profiles that are supported and available but presently NOT installed on the system.';
public static function command_aliases()
{
return array('list_uninstalled_tests');
}
public static function run($r)
{
pts_client::$display->generic_heading('Available Tests Not Installed');
$test_count = 0;
foreach(pts_openbenchmarking::available_tests(false) as $identifier)
{
$repo = substr($identifier, 0, strpos($identifier, '/'));
$id = substr($identifier, strlen($repo) + 1);
$repo_index = pts_openbenchmarking::read_repository_index($repo);
if((!empty($repo_index['tests'][$id]['supported_platforms']) && !in_array(phodevi::operating_system(), $repo_index['tests'][$id]['supported_platforms'])) || empty($repo_index['tests'][$id]['title']))
{
// Don't show unsupported tests
continue;
}
$test_profile = new pts_test_profile($identifier);
if($test_profile->is_test_installed())
{
// Only show uninstalled tests
continue;
}
echo sprintf('%-30ls - %-35ls %-9ls', $identifier, $repo_index['tests'][$id]['title'], $repo_index['tests'][$id]['test_type']) . PHP_EOL;
$test_count++;
}
foreach(pts_tests::local_tests() as $identifier)
{
$test_profile = new pts_test_profile($identifier);
if($test_profile->is_test_installed())
{
// Only show uninstalled tests
continue;
}
if($test_profile->get_title() != null && $test_profile->is_supported(false))
{
echo sprintf('%-30ls - %-35ls %-9ls', $test_profile->get_identifier(), $test_profile->get_title(), $test_profile->get_test_hardware_type()) . PHP_EOL;
$test_count++;
}
}
if($test_count == 0)
{
echo PHP_EOL . 'No tests found. Please check that you have Internet connectivity to download test profile data from OpenBenchmarking.org. The Phoronix Test Suite has documentation on configuring the network setup, proxy settings, and PHP network options. Please contact Phoronix Media if you continuing to experience problems.' . PHP_EOL . PHP_EOL;
}
}
}
?>

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2008 - 2012, Phoronix Media
Copyright (C) 2008 - 2012, Michael Larabel
Copyright (C) 2008 - 2017, Phoronix Media
Copyright (C) 2008 - 2017, Michael Larabel
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
@@ -32,7 +32,8 @@ class list_test_usage implements pts_option_interface
if(count($installed_tests) > 0)
{
echo sprintf('%-18ls %-8ls %-13ls %-11ls %-13ls %-10ls', 'TEST', 'VERSION', 'INSTALL DATE', 'LAST RUN', 'AVG RUN-TIME', 'TIMES RUN') . PHP_EOL;
echo sprintf('%-32ls %-12ls %-11ls %-8ls %-6ls', 'TEST', 'INSTALL', 'LAST RUN', 'AVERAGE', 'TIMES') . PHP_EOL;
echo sprintf('%-32ls %-12ls %-11ls %-8ls %-6ls', '', 'DATE', 'DATE', 'RUNTIME', 'RUN') . PHP_EOL;
foreach($installed_tests as $identifier)
{
$test_profile = new pts_test_profile($identifier);
@@ -45,7 +46,7 @@ class list_test_usage implements pts_option_interface
$last_run = $test_profile->test_installation->get_last_run_date();
$last_run = $last_run == '0000-00-00' ? 'NEVER' : $last_run;
echo sprintf('%-18ls - %-8ls %-13ls %-11ls %-13ls %-10ls', $identifier, $test_profile->test_installation->get_installed_version(), $test_profile->test_installation->get_install_date(), $last_run, $avg_time, $test_profile->test_installation->get_run_count()) . PHP_EOL;
echo sprintf('%-32ls %-12ls %-11ls %-8ls %-6ls', $identifier, $test_profile->test_installation->get_install_date(), $last_run, $avg_time, $test_profile->test_installation->get_run_count()) . PHP_EOL;
}
}
}

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2008 - 2015, Phoronix Media
Copyright (C) 2008 - 2015, Michael Larabel
Copyright (C) 2008 - 2016, Phoronix Media
Copyright (C) 2008 - 2016, Michael Larabel
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
@@ -95,7 +95,7 @@ class make_download_cache implements pts_option_interface
}
else if($file->get_md5() == $json_download_cache['phoronix-test-suite']['download-cache'][$file->get_filename()]['md5'] && $file->get_sha256() == $json_download_cache['phoronix-test-suite']['download-cache'][$file->get_filename()]['sha256'])
{
array_push($json_download_cache['phoronix-test-suite']['download-cache'][$file->get_filename()]['associated_tests'], $test_profile->get_identifier());
$json_download_cache['phoronix-test-suite']['download-cache'][$file->get_filename()]['associated_tests'][] = $test_profile->get_identifier();
}
}
}
@@ -124,7 +124,7 @@ class make_download_cache implements pts_option_interface
{
continue;
}
array_push($cached_tests, $test);
$cached_tests[] = $test;
}
$json_download_cache['phoronix-test-suite']['cached-tests'] = $cached_tests;

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2008 - 2015, Phoronix Media
Copyright (C) 2008 - 2015, Michael Larabel
Copyright (C) 2008 - 2016, Phoronix Media
Copyright (C) 2008 - 2016, Michael Larabel
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
@@ -39,7 +39,7 @@ class merge_results implements pts_option_interface
{
if(pts_types::is_result_file($result_file))
{
array_push($result_files_to_merge, PTS_SAVE_RESULTS_PATH . $result_file . '/composite.xml');
$result_files_to_merge[] = PTS_SAVE_RESULTS_PATH . $result_file . '/composite.xml';
}
}

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2012, Phoronix Media
Copyright (C) 2012, Michael Larabel
Copyright (C) 2012 - 2016, Phoronix Media
Copyright (C) 2012 - 2016, Michael Larabel
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
@@ -195,7 +195,7 @@ var_dump($screenshots);
if(count($line) == 2)
{
array_push($shared_library_dependencies, trim(basename($line[0])));
$shared_library_dependencies[] = trim(basename($line[0]));
}
}
@@ -363,7 +363,7 @@ var_dump($server_response);
{
$gl_usage[$line]++;
}
else if(ctype_alnum($line))
else if(pts_strings::is_alnum($line))
{
$gl_usage[$line] = 1;
}

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2008 - 2012, Phoronix Media
Copyright (C) 2008 - 2012, Michael Larabel
Copyright (C) 2008 - 2015, Phoronix Media
Copyright (C) 2008 - 2015, Michael Larabel
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
@@ -46,7 +46,7 @@ class openbenchmarking_login implements pts_option_interface
$login_state = pts_openbenchmarking::make_openbenchmarking_request('account_login', $login_payload);
$json = json_decode($login_state, true);
if(isset($json['openbenchmarking']['response']['error']))
if(!isset($json['openbenchmarking']) || isset($json['openbenchmarking']['response']['error']))
{
trigger_error($json['openbenchmarking']['response']['error'], E_USER_ERROR);
pts_storage_object::remove_in_file(PTS_CORE_STORAGE, 'openbenchmarking');

View File

@@ -0,0 +1,87 @@
<?php
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2016, Phoronix Media
Copyright (C) 2016, Michael Larabel
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 php_conf implements pts_option_interface
{
const doc_section = 'System';
const doc_description = 'This option will print information that is useful to developers when debugging problems with the Phoronix Test Suite and/or test profiles and test suites.';
public static function run($r)
{
$table = array();
$table[] = array('PHP:', PTS_PHP_VERSION);
$table[] = array('PHP VERSION ID: ', PHP_VERSION_ID);
$table[] = array('PHP BINARY: ', getenv('PHP_BIN'));
echo PHP_EOL . pts_user_io::display_text_table($table, null, 0) . PHP_EOL;
echo PHP_EOL;
echo 'MAIN CAPABILITY CHECK: ' . PHP_EOL;
pts_client::program_requirement_checks(false, true);
// TODO: ultimately centralize this below list so it doesn't go stale
// TODO: when making it uniform, change function_exists() calls to say pts_function_check() that will read the cached list
$functions_to_check = array(
'posix_getpid',
'posix_getuid',
'posix_getpwuid',
'posix_isatty',
'posix_kill',
'posix_setsid',
'preg_replace',
'socket_create_listen',
'pcntl_fork',
'pcntl_signal',
'ssh2_connect',
'sqlite_escape_string',
'gzinflate',
'gzdeflate',
'gzcompress',
'imagecreatefromstring',
'imagecreatefrompng',
'filter_var',
'ctype_digit',
'ctype_alnum',
'finfo_open',
'hash_file',
'cli_set_process_title',
'curl_init',
'stream_context_set_params',
'imagepng',
'imagecreatefromgif',
'zip_open',
'imagettftext',
'imageantialias',
'json_decode',
'simplexml_load_string',
'timezone_name_from_abbr'
);
sort($functions_to_check);
$table = array();
foreach($functions_to_check as $func)
{
$table[] = array($func, (function_exists($func) ? 'PRESENT' : 'MISSING'));
}
echo 'OPTIONAL FUNCTION CHECKS: ';
echo PHP_EOL . pts_user_io::display_text_table($table, null, 0) . PHP_EOL;
}
}
?>

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2009 - 2015, Phoronix Media
Copyright (C) 2009 - 2015, Michael Larabel
Copyright (C) 2009 - 2016, Phoronix Media
Copyright (C) 2009 - 2016, Michael Larabel
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
@@ -52,7 +52,7 @@ class reorder_result_file implements pts_option_interface
do
{
$extract_identifier = pts_user_io::prompt_text_menu('Select the test run to be showed next', $result_file_identifiers);
array_push($sorted_identifiers, $extract_identifier);
$sorted_identifiers[] = $extract_identifier;
$old_identifiers = $result_file_identifiers;
$result_file_identifiers = array();
@@ -61,7 +61,7 @@ class reorder_result_file implements pts_option_interface
{
if($identifier != $extract_identifier)
{
array_push($result_file_identifiers, $identifier);
$result_file_identifiers[] = $identifier;
}
}
}

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2009 - 2015, Phoronix Media
Copyright (C) 2009 - 2015, Michael Larabel
Copyright (C) 2009 - 2016, Phoronix Media
Copyright (C) 2009 - 2016, Michael Larabel
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
@@ -33,84 +33,20 @@ class result_file_to_pdf implements pts_option_interface
}
public static function run($r)
{
if(!function_exists('getimagesizefromstring'))
{
echo 'PHP GD support is required for this command.' . PHP_EOL . PHP_EOL;
return false;
}
$_REQUEST['force_format'] = 'PNG'; // Force to PNG renderer
$_REQUEST['svg_dom_gd_no_interlacing'] = true; // Otherwise FPDF will fail
$tdir = pts_client::create_temporary_directory();
pts_client::generate_result_file_graphs($r[0], $tdir);
$result_file = new pts_result_file($r[0]);
$pdf = new pts_pdf_template($result_file->get_title(), null);
$pdf->AddPage();
$pdf->Image(PTS_CORE_STATIC_PATH . 'images/pts-308x160.png', 69, 85, 73, 38);
$pdf->Ln(120);
$pdf->WriteStatementCenter('www.phoronix-test-suite.com');
$pdf->Ln(15);
$pdf->WriteBigHeaderCenter($result_file->get_title());
$pdf->WriteText($result_file->get_description());
$pdf->AddPage();
$pdf->Ln(15);
$pdf->SetSubject($result_file->get_title() . ' Benchmarks');
//$pdf->SetKeywords(implode(', ', $identifiers));
$pdf->WriteHeader('Test Systems:');
foreach($result_file->get_systems() as $s)
{
$pdf->WriteMiniHeader($s->get_identifier());
$pdf->WriteText($s->get_hardware());
$pdf->WriteText($s->get_software());
//$pdf->WriteText($notes_r[$i]);
}
/*
if(count($identifiers) > 1 && is_file($tdir . 'result-graphs/overview.jpg'))
{
$pdf->AddPage();
$pdf->Ln(100);
$pdf->Image($tdir . 'result-graphs/overview.jpg', 15, 40, 180);
}
*/
$pdf->AddPage();
$placement = 1;
$results = $result_file->get_result_objects();
for($i = 1; $i <= count($results); $i++)
{
if(is_file($tdir . 'result-graphs/' . $i . '.png'))
{
$pdf->Ln(100);
$pdf->Image($tdir . 'result-graphs/' . $i . '.png', 50, 40 + (($placement - 1) * 120), 120);
}
if($placement == 2)
{
$placement = 0;
if($i != count($results))
{
$pdf->AddPage();
}
}
$placement++;
}
// To save:
/*
$pdf_file = 'SAVE_TO';
if(substr($pdf_file, -4) != '.pdf')
{
$pdf_file .= '.pdf';
}
*/
$pdf_file = pts_core::user_home_directory() . $r[0] . '.pdf';
$pdf->Output($pdf_file);
pts_file_io::delete($tdir, null, true);
$pdf_output = pts_result_file_output::result_file_to_pdf($result_file, $pdf_file, 'F');
echo PHP_EOL . 'Saved To: ' . $pdf_file . PHP_EOL;
}
public static function invalid_command($passed_args = null)

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2008 - 2015, Phoronix Media
Copyright (C) 2008 - 2015, Michael Larabel
Copyright (C) 2008 - 2016, Phoronix Media
Copyright (C) 2008 - 2016, Michael Larabel
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
@@ -44,25 +44,25 @@ class result_file_to_suite implements pts_option_interface
$suite_maintainer = pts_user_io::prompt_user_input('Enter suite maintainer name');
$suite_description = pts_user_io::prompt_user_input('Enter suite description');
$suite_writer = new pts_test_suite_writer();
$suite_writer->add_suite_information($suite_name, '1.0.0', $suite_maintainer, $suite_test_type, $suite_description);
$new_suite = new pts_test_suite();
$new_suite->set_title($suite_name);
$new_suite->set_version('1.0.0');
$new_suite->set_maintainer($suite_maintainer);
$new_suite->set_suite_type($suite_test_type);
$new_suite->set_description($suite_description);
// Read results file
$result_file = new pts_result_file($result_file);
foreach($result_file->get_result_objects() as $result_object)
{
$suite_writer->add_to_suite_from_result_object($result_object);
$test = new pts_test_profile($result_object->test_profile->get_identifier());
$new_suite->add_to_suite($test, $result_object->get_arguments(), $result_object->get_arguments_description());
}
// Finish it off
$suite_identifier = pts_test_run_manager::clean_save_name($suite_name);
mkdir(PTS_TEST_SUITE_PATH . 'local/' . $suite_identifier);
$save_to = PTS_TEST_SUITE_PATH . 'local/' . $suite_identifier . '/suite-definition.xml';
if($suite_writer->save_xml($save_to) != false)
if($new_suite->save_xml($suite_name) != false)
{
echo PHP_EOL . PHP_EOL . 'Saved To: ' . $save_to . PHP_EOL . 'To run this suite, type: phoronix-test-suite benchmark ' . $suite_identifier . PHP_EOL . PHP_EOL;
echo PHP_EOL . PHP_EOL . 'Saved -- to run this suite, type: phoronix-test-suite benchmark ' . $new_suite->get_identifier() . PHP_EOL . PHP_EOL;
}
}
public static function invalid_command($passed_args = null)

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2008 - 2012, Phoronix Media
Copyright (C) 2008 - 2012, Michael Larabel
Copyright (C) 2008 - 2017, Phoronix Media
Copyright (C) 2008 - 2017, Michael Larabel
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
@@ -44,7 +44,15 @@ class show_result implements pts_option_interface
pts_client::generate_result_file_graphs($r[0], PTS_SAVE_RESULTS_PATH . $r[0] . '/');
}
pts_client::display_web_page($URL . '/index.html', null, false, true);
if(pts_client::read_env('DISPLAY') == false)
{
$rf = new pts_result_file($r[0]);
echo pts_result_file_output::result_file_to_text($rf, pts_client::terminal_width());
}
else
{
pts_client::display_web_page($URL . '/index.html', null, false, true);
}
}
}

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2014 - 2015, Phoronix Media
Copyright (C) 2014 - 2015, Michael Larabel
Copyright (C) 2014 - 2016, Phoronix Media
Copyright (C) 2014 - 2016, Michael Larabel
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
@@ -47,7 +47,15 @@ class start_phoromatic_server implements pts_option_interface
$server_launcher = '#!/bin/sh' . PHP_EOL;
$web_port = 0;
$remote_access = pts_config::read_user_config('PhoronixTestSuite/Options/Server/RemoteAccessPort', 'RANDOM');
$remote_access_override = getenv('PHOROMATIC_HTTP_PORT');
if($remote_access_override && is_numeric($remote_access_override) && $remote_access_override > 1)
{
$remote_access = $remote_access_override;
}
else
{
$remote_access = pts_config::read_user_config('PhoronixTestSuite/Options/Server/RemoteAccessPort', 'RANDOM');
}
$fp = false;
$errno = null;
@@ -134,7 +142,14 @@ class start_phoromatic_server implements pts_option_interface
$server_launcher .= 'event_server_pid=$!'. PHP_EOL;
// HTTP Server Setup
if(false && pts_client::executable_in_path('nginx') && is_file('/run/php-fpm/php-fpm.pid'))
if(getenv('PHOROMATIC_WANTS_APACHE'))
{
echo PHP_EOL . PHP_EOL . 'To manually configure Apache, setup the following:' . PHP_EOL;
echo 'The root web directory: ' . PTS_CORE_PATH . 'phoromatic/public_html/' . PHP_EOL;
echo 'Set the HTTP port to: ' . $web_port . PHP_EOL;
echo 'Of course, ensure Apache PHP support is available.' . PHP_EOL . PHP_EOL;
}
else if(false && pts_client::executable_in_path('nginx') && is_file('/run/php-fpm/php-fpm.pid'))
{
// NGINX
$nginx_conf = 'error_log /tmp/error.log;
@@ -186,6 +201,7 @@ class start_phoromatic_server implements pts_option_interface
else if(($mongoose = pts_client::executable_in_path('mongoose')) && ($php_cgi = pts_client::executable_in_path('php-cgi')))
{
// Mongoose Embedded Web Server
echo PHP_EOL . 'Launching with Mongoose web server.' . PHP_EOL;
$server_launcher .= $mongoose . ' -p ' . $web_port . ' -r ' . PTS_CORE_PATH . 'phoromatic/public_html/ -I ' . $php_cgi . ' -i index.php > /dev/null 2>> $PTS_PHOROMATIC_LOG_LOCATION &' . PHP_EOL; //2> /dev/null
}
@@ -197,6 +213,7 @@ class start_phoromatic_server implements pts_option_interface
else
{
// PHP Web Server
echo PHP_EOL . 'Launching with PHP built-in web server.' . PHP_EOL;
$server_launcher .= getenv('PHP_BIN') . ' -S ' . $server_ip . ':' . $web_port . ' -t ' . PTS_CORE_PATH . 'phoromatic/public_html/ > /dev/null 2>> $PTS_PHOROMATIC_LOG_LOCATION &' . PHP_EOL; //2> /dev/null
}
$server_launcher .= 'http_server_pid=$!'. PHP_EOL;

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2015, Phoronix Media
Copyright (C) 2015, Michael Larabel
Copyright (C) 2015 - 2017, Phoronix Media
Copyright (C) 2015 - 2017, Michael Larabel
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
@@ -33,7 +33,7 @@ class stress_run implements pts_option_interface
}
public static function run($to_run)
{
pts_test_run_manager::set_batch_mode(array(
$test_run_manager = new pts_stress_run_manager(array(
'UploadResults' => false,
'SaveResults' => false,
'PromptForTestDescription' => false,
@@ -45,13 +45,34 @@ class stress_run implements pts_option_interface
$tests_to_run_concurrently = 2;
echo PHP_EOL . pts_client::cli_just_bold('STRESS-RUN ENVIRONMENT VARIABLES:') . PHP_EOL;
if(($j = getenv('PTS_CONCURRENT_TEST_RUNS')) && is_numeric($j) && $j > 1)
{
$tests_to_run_concurrently = $j;
echo 'PTS_CONCURRENT_TEST_RUNS set; running ' . $tests_to_run_concurrently . ' tests concurrently.' . PHP_EOL;
echo PHP_EOL . 'PTS_CONCURRENT_TEST_RUNS set; running ' . $tests_to_run_concurrently . ' tests concurrently.' . PHP_EOL . PHP_EOL;
}
else
{
echo PHP_EOL . pts_client::cli_just_bold('PTS_CONCURRENT_TEST_RUNS:') . ' Set the PTS_CONCURRENT_TEST_RUNS environment variable to specify how many tests should be run concurrently during the stress-run process. If not specified, defaults to 2.' . PHP_EOL . PHP_EOL;
}
$test_run_manager = new pts_test_run_manager(true);
// Run the actual tests
$total_loop_time = pts_client::read_env('TOTAL_LOOP_TIME');
if($total_loop_time == 'infinite')
{
$total_loop_time = 'infinite';
echo PHP_EOL . 'TOTAL_LOOP_TIME set; running tests in an infinite loop until otherwise triggered' . PHP_EOL . PHP_EOL;
}
else if($total_loop_time && is_numeric($total_loop_time) && $total_loop_time > 1)
{
echo PHP_EOL . 'TOTAL_LOOP_TIME set; running tests for ' . $total_loop_time . ' minutes' . PHP_EOL . PHP_EOL;
}
else
{
echo PHP_EOL . pts_client::cli_just_bold('TOTAL_LOOP_TIME:') . ' Set the TOTAL_LOOP_TIME environment variable if wishing to specify (in minutes) how long to run the stress-run process.' . PHP_EOL . PHP_EOL;
$total_loop_time = false;
}
/*
if(count($to_run) < $tests_to_run_concurrently)
@@ -72,22 +93,6 @@ class stress_run implements pts_option_interface
return false;
}
// Run the actual tests
$total_loop_time = pts_client::read_env('TOTAL_LOOP_TIME');
if($total_loop_time == 'infinite')
{
$total_loop_time = 'infinite';
echo 'TOTAL_LOOP_TIME set; running tests in an infinite loop until otherwise triggered' . PHP_EOL;
}
else if($total_loop_time && is_numeric($total_loop_time) && $total_loop_time > 9)
{
$total_loop_time = $total_loop_time * 60;
echo 'TOTAL_LOOP_TIME set; running tests for ' . ($total_loop_time / 60) . ' minutes' . PHP_EOL;
}
else
{
$total_loop_time = false;
}
//$test_run_manager->pre_execution_process();
$test_run_manager->multi_test_stress_run_execute($tests_to_run_concurrently, $total_loop_time);
}

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2008 - 2011, Phoronix Media
Copyright (C) 2008 - 2011, Michael Larabel
Copyright (C) 2008 - 2017, Phoronix Media
Copyright (C) 2008 - 2017, Michael Larabel
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
@@ -28,8 +28,7 @@ class system_info implements pts_option_interface
public static function run($r)
{
pts_client::$display->generic_heading('System Information');
echo 'Hardware:' . PHP_EOL . phodevi::system_hardware(true) . PHP_EOL . PHP_EOL;
echo 'Software:' . PHP_EOL . phodevi::system_software(true) . PHP_EOL . PHP_EOL;
echo phodevi::system_centralized_view();
}
}

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2009 - 2015, Phoronix Media
Copyright (C) 2009 - 2015, Michael Larabel
Copyright (C) 2009 - 2017, Phoronix Media
Copyright (C) 2009 - 2017, Michael Larabel
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
@@ -27,43 +27,39 @@ class system_sensors implements pts_option_interface
public static function run($r)
{
pts_client::$display->generic_heading('Supported Sensors');
pts_client::$display->generic_heading('Supported Sensors For This System');
$tabled = array();
foreach(phodevi::supported_sensors() as $sensor)
{
$supported_devices = call_user_func(array($sensor[2], 'get_supported_devices'));
if($supported_devices === NULL)
{
self::print_sensor($sensor, NULL);
continue;
$supported_devices = array(null);
}
foreach($supported_devices as $device)
{
self::print_sensor($sensor, $device);
if($sensor[0] === 'cgroup')
{
// echo '- ' . phodevi::sensor_name($sensor) . PHP_EOL;
}
else
{
$sensor_object = new $sensor[2](0, $device);
$tabled[] = array(pts_client::cli_just_bold(phodevi::sensor_object_name($sensor_object) . ': '), phodevi::read_sensor($sensor_object), pts_client::cli_colored_text(phodevi::read_sensor_object_unit($sensor_object), 'gray'));
}
}
}
echo pts_user_io::display_text_table($tabled) . PHP_EOL;
pts_client::$display->generic_heading('Unsupported Sensors');
pts_client::$display->generic_heading('Unsupported Sensors For This System');
foreach(phodevi::unsupported_sensors() as $sensor)
{
echo '- ' . phodevi::sensor_name($sensor) . PHP_EOL;
}
echo PHP_EOL;
}
private static function print_sensor($sensor, $device)
{
if($sensor[0] === 'cgroup')
{
echo '- ' . phodevi::sensor_name($sensor) . PHP_EOL;
}
else
{
$sensor_object = new $sensor[2](0, $device);
echo '- ' . phodevi::sensor_object_name($sensor_object) . ': ' . phodevi::read_sensor($sensor_object) . ' ' . phodevi::read_sensor_object_unit($sensor_object) . PHP_EOL;
}
}
}
?>

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2010 - 2013, Phoronix Media
Copyright (C) 2010 - 2013, Michael Larabel
Copyright (C) 2010 - 2015, Phoronix Media
Copyright (C) 2010 - 2015, Michael Larabel
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
@@ -35,7 +35,7 @@ class upload_test_profile implements pts_option_interface
return false;
}
foreach(pts_types::identifiers_to_test_profile_objects($r, true, true) as $test_profile)
foreach(pts_types::identifiers_to_test_profile_objects($r, false, true) as $test_profile)
{
// validate_test_profile
if(pts_validation::validate_test_profile($test_profile))

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2010 - 2015, Phoronix Media
Copyright (C) 2010 - 2015, Michael Larabel
Copyright (C) 2010 - 2016, Phoronix Media
Copyright (C) 2010 - 2016, Michael Larabel
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
@@ -39,10 +39,10 @@ class upload_test_suite implements pts_option_interface
{
pts_client::$display->generic_heading($r[0]);
if(pts_validation::validate_test_suite($test_suite))
if(pts_validation::validate_test_suite($test_suite) && $test_suite->get_file_location() != null)
{
$zip_file = PTS_OPENBENCHMARKING_SCRATCH_PATH . $test_suite->get_identifier(false) . '-' . $test_suite->get_version() . '.zip';
$zip_created = pts_compression::zip_archive_create($zip_file, $test_suite->xml_parser->getFileLocation());
$zip_created = pts_compression::zip_archive_create($zip_file, $test_suite->get_file_location());
if($zip_created == false)
{
@@ -50,11 +50,6 @@ class upload_test_suite implements pts_option_interface
return false;
}
$zip = new ZipArchive();
$zip->open($zip_file);
$zip->renameName(basename($test_suite->xml_parser->getFileLocation()), 'suite-definition.xml');
$zip->close();
$commit_description = pts_user_io::prompt_user_input('Enter a test commit description', false);
echo PHP_EOL;

View File

@@ -0,0 +1,106 @@
<?php
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2017, Phoronix Media
Copyright (C) 2017, Michael Larabel
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 winners_and_losers implements pts_option_interface
{
const doc_section = 'Result Management';
const doc_description = 'This option is used if you wish to analyze a result file to see which runs produced the most wins/losses of those result identifiers in the saved file.';
public static function argument_checks()
{
return array(
new pts_argument_check(0, array('pts_types', 'is_result_file'), null)
);
}
public static function run($args)
{
$result_file = new pts_result_file($args[0]);
$result_file_identifiers = $result_file->get_system_identifiers();
if(count($result_file_identifiers) < 2)
{
echo PHP_EOL . 'There are not multiple test runs in this result file.' . PHP_EOL;
return false;
}
echo pts_client::cli_colored_text($result_file->get_title(), 'gray', true) . PHP_EOL;
echo pts_client::cli_colored_text('RESULT COUNT: ', 'cyan', true) . $result_file->get_test_count() . PHP_EOL . PHP_EOL;
$winners = array();
$losers = array();
$tests_counted = 0;
foreach($result_file->get_result_objects() as $result)
{
if($result->test_result_buffer->get_count() < 2)
{
continue;
}
$tests_counted++;
$winner = $result->get_result_first();
$loser = $result->get_result_last();
if(!isset($winners[$winner]))
{
$winners[$winner] = 1;
}
else
{
$winners[$winner]++;
}
if(!isset($losers[$loser]))
{
$losers[$loser] = 1;
}
else
{
$losers[$loser]++;
}
}
arsort($winners);
arsort($losers);
echo pts_client::cli_colored_text('WINS:', 'green', true) . PHP_EOL;
$table = array();
foreach($winners as $identifier => $count)
{
$table[] = array($identifier . ': ', $count, ' [' . pts_math::set_precision($count / $tests_counted * 100, 1) . '%]');
}
echo pts_user_io::display_text_table($table) . PHP_EOL;
echo PHP_EOL . pts_client::cli_colored_text('LOSSES: ', 'red', true) . PHP_EOL;
$table = array();
foreach($losers as $identifier => $count)
{
$table[] = array($identifier . ': ', $count, ' [' . pts_math::set_precision($count / $tests_counted * 100, 1) . '%]');
}
echo pts_user_io::display_text_table($table) . PHP_EOL;
echo PHP_EOL;
}
public static function invalid_command($passed_args = null)
{
pts_tests::recently_saved_results();
}
}
?>

View File

@@ -0,0 +1,92 @@
<?php
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2015, Phoronix Media
Copyright (C) 2015, Michael Larabel
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 arch_dependency_handler implements pts_dependency_handler
{
public static function what_provides($files_needed)
{
$packages_needed = array();
foreach(pts_arrays::to_array($files_needed) as $file)
{
if(pts_client::executable_in_path('pkgfile'))
{
$pkgfile_provides = self::run_pkgfile_provides($file);
if($pkgfile_provides != null)
{
$packages_needed[$file] = $pkgfile_provides;
}
else
{
// Try appending common paths
if(strpos($file, '.h') !== false)
{
$pkgfile_provides = self::run_pkgfile_provides('/usr/include/' . $file);
if($pkgfile_provides != null)
{
$packages_needed[$file] = $pkgfile_provides;
}
}
else if(strpos($file, '.so') !== false)
{
$pkgfile_provides = self::run_pkgfile_provides('/usr/lib/' . $file);
if($pkgfile_provides != null)
{
$packages_needed[$file] = $pkgfile_provides;
}
}
else
{
foreach(array('/usr/bin/', '/bin/', '/usr/sbin') as $possible_path)
{
$pkgfile_provides = self::run_pkgfile_provides($possible_path . $file);
if($pkgfile_provides != null)
{
$packages_needed[$file] = $pkgfile_provides;
break;
}
}
}
}
}
}
return $packages_needed;
}
protected static function run_pkgfile_provides($arg)
{
$pkgfile_output = shell_exec('pkgfile ' . $arg . ' 2>/dev/null');
foreach(explode(PHP_EOL, $pkgfile_output) as $line)
{
$line = trim($line);
if(!empty($line))
{
return $line;
}
}
return null;
}
}
?>

View File

@@ -0,0 +1,109 @@
<?php
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2015, Phoronix Media
Copyright (C) 2015, Michael Larabel
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 fedora_dependency_handler implements pts_dependency_handler
{
public static function what_provides($files_needed)
{
$packages_needed = array();
foreach(pts_arrays::to_array($files_needed) as $file)
{
if(pts_client::executable_in_path('dnf'))
{
$dnf_provides = self::run_dnf_provides($file);
if($dnf_provides != null)
{
$packages_needed[$file] = $dnf_provides;
}
else
{
// Try appending common paths
if(strpos($file, '.h') !== false)
{
$dnf_provides = self::run_dnf_provides('/usr/include/' . $file);
if($dnf_provides != null)
{
$packages_needed[$file] = $dnf_provides;
}
}
else if(strpos($file, '.so') !== false)
{
$dnf_provides = self::run_dnf_provides('/usr/lib/' . $file);
if($dnf_provides != null)
{
$packages_needed[$file] = $dnf_provides;
}
}
else
{
foreach(array('/usr/bin/', '/bin/', '/usr/sbin') as $possible_path)
{
$dnf_provides = self::run_dnf_provides($possible_path . $file);
if($dnf_provides != null)
{
$packages_needed[$file] = $dnf_provides;
break;
}
}
}
}
}
}
return $packages_needed;
}
protected static function run_dnf_provides($arg)
{
$dnf_output = shell_exec('dnf --quiet provides ' . $arg . ' 2>/dev/null');
foreach(explode(PHP_EOL, $dnf_output) as $line)
{
if(($x = strpos($line, ' : ')) == false)
{
continue;
}
$line = trim(substr($line, 0, $x));
if(strpos($line, '-') !== false && strpos($line, '.') !== false && strpos($line, ' ') === false)
{
// Don't mess with the version/arch stuff, etc, so try to strip it off
$offset = 0;
while(($x = strpos($line, '-', $offset)) !== false)
{
if(isset($line[($x + 1)]) && is_numeric($line[($x + 1)]))
{
$line = substr($line, 0, $x);
break;
}
$offset = $x + 1;
}
return $line;
}
}
return null;
}
}
?>

View File

@@ -0,0 +1,64 @@
<?php
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2015 - 2016, Phoronix Media
Copyright (C) 2015 - 2016, Michael Larabel
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 opensuse_dependency_handler implements pts_dependency_handler
{
public static function what_provides($files_needed)
{
$packages_needed = array();
foreach(pts_arrays::to_array($files_needed) as $file)
{
if(pts_client::executable_in_path('zypper'))
{
$zypper_provides = self::run_zypper_provides($file);
if($zypper_provides != null)
{
$packages_needed[$file] = $zypper_provides;
}
}
}
return $packages_needed;
}
protected static function run_zypper_provides($arg)
{
$line = shell_exec('zypper search --provides --match-exact ' . $arg . ' 2>/dev/null');
if(($x = strpos($line, '-----')) == false)
{
return null;
}
$line = substr($line, $x);
$line = substr($line, strpos($line, "\n") + 2);
$line = trim(substr($line, 0, strpos($line, PHP_EOL)));
$parts = explode('|', $line);
if(isset($parts[1]))
{
return trim($parts[1]);
}
return null;
}
}
?>

View File

@@ -0,0 +1,90 @@
<?php
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2015, Phoronix Media
Copyright (C) 2015, Michael Larabel
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 ubuntu_dependency_handler implements pts_dependency_handler
{
public static function what_provides($files_needed)
{
$packages_needed = array();
foreach(pts_arrays::to_array($files_needed) as $file)
{
if(pts_client::executable_in_path('apt-file'))
{
if(!defined('APT_FILE_UPDATED'))
{
shell_exec('apt-file update 2>&1');
define('APT_FILE_UPDATED', 1);
}
// Try appending common paths
if(strpos($file, '.h') !== false)
{
$apt_provides = self::run_apt_file_provides('/usr/include/' . $file);
if($apt_provides != null)
{
$packages_needed[$file] = $apt_provides;
}
}
else if(strpos($file, '.so') !== false)
{
$apt_provides = self::run_apt_file_provides('/usr/lib/' . $file);
if($apt_provides != null)
{
$packages_needed[$file] = $apt_provides;
}
}
else
{
foreach(array('/usr/bin/', '/bin/', '/usr/sbin') as $possible_path)
{
$apt_provides = self::run_apt_file_provides($possible_path . $file);
if($apt_provides != null)
{
$packages_needed[$file] = $apt_provides;
break;
}
}
}
}
}
return $packages_needed;
}
protected static function run_apt_file_provides($arg)
{
$apt_output = shell_exec('apt-file -N search --regex "' . $arg . '$" 2>/dev/null');
foreach(explode(PHP_EOL, $apt_output) as $line)
{
if(($x = strpos($line, ': ')) == false)
{
continue;
}
return trim(substr($line, 0, $x));
}
return null;
}
}
?>

View File

@@ -0,0 +1,7 @@
#!/bin/sh
# Alpine Linux package installation
echo "Please enter your root password below:" 1>&2
su root -c "apk add -v $*"
exit

View File

@@ -3,5 +3,5 @@
# Arch package installation
echo "Please enter your root password below:" 1>&2
su root -c "pacman -Sy --noconfirm $*"
su root -c "pacman -Sy --noconfirm --needed $*"
exit

View File

@@ -1,43 +1,5 @@
#!/bin/sh
#dports pkg
pkg install $*
pkg install -y $*
# Old dropped DragonFly pkgsrc support from older releases
# DragonFlyBSD pkgsrc package installation
exit
echo "For now with this test profile script, please run: phoronix-test-suite install-dependencies xxx as root."
# Check that pkgsrc is setup, below code should work for making sure good state with at least DragonFlyBSD
if [ -d /usr/pkgsrc ] && [ ! -d /usr/pkgsrc/devel ];
then
cd /usr
if [ -d /usr/pkgsrc/.git ];
then
make pkgsrc-update
else
make pkgsrc-create
fi
fi
if [ -d /usr/pkgsrc ]
then
for portdir in $*
do
if [ -d /usr/pkgsrc/$portdir ];
then
cd /usr/pkgsrc/$portdir
bmake install clean BATCH="yes"
fi
done
elif [ -x /usr/local/sbin/pkg ]
then
for portdir in $*
do
# DragonFlyBSD 3.6 now uses dports by default and this method seems to work fine for hitting most packages based upon earlier pkgsrc basename
pkg install -y `basename $portdir`
done
fi

View File

@@ -5,7 +5,7 @@
echo "Please enter your root password below:" 1>&2
if [ -x /usr/bin/zypper ]; then
su root -c "zypper install -l -y --force-resolution $*"
su root -c "zypper install -l -y -n --force-resolution $*"
else
su root -c "yast -i $*"
fi

View File

@@ -0,0 +1,7 @@
#!/bin/sh
# Solus package installation
echo "Please enter your root password below:" 1>&2
sudo eopkg install --yes-all $*
exit

View File

@@ -1,5 +1,7 @@
#!/bin/sh
if [ `whoami` != "root" ] && [ ! -z "$DISPLAY" ]; then
if [ `whoami` = "root" ] && [ ! -w /usr/bin/sudo ]; then
apt-get -y --ignore-missing install $*
elif [ `whoami` != "root" ] && [ ! -z "$DISPLAY" ]; then
if [ -x /usr/bin/gksudo ]; then
ROOT="/usr/bin/gksudo"
elif [ -x /usr/bin/kdesudo ]; then

View File

@@ -0,0 +1,7 @@
#!/bin/sh
# Void Linux package installation
echo "Please enter your root password below:" 1>&2
su root -c "xbps-install -Sy $*"
exit

View File

@@ -0,0 +1,200 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="xsl/pts-exdep-viewer.xsl" ?>
<PhoronixTestSuite>
<ExternalDependencies>
<Information>
<Name>Alpine Linux</Name>
<Aliases></Aliases>
<PackageManager>apk</PackageManager>
</Information>
<Package>
<GenericName>common-dependencies</GenericName>
<PackageName>unzip</PackageName>
<FileCheck>unzip</FileCheck>
</Package>
<Package>
<GenericName>gtk-development</GenericName>
<PackageName>gtk+ gtk+2.0 gtk+3.0</PackageName>
</Package>
<Package>
<GenericName>sdl2-development</GenericName>
<PackageName>sdl sdl_image sdl_mixer</PackageName>
</Package>
<Package>
<GenericName>sdl-development</GenericName>
<PackageName>sdl sdl_image sdl_mixer</PackageName>
</Package>
<Package>
<GenericName>glut</GenericName>
<PackageName>freeglut</PackageName>
</Package>
<Package>
<GenericName>libpng-development</GenericName>
<PackageName>libpng</PackageName>
</Package>
<Package>
<GenericName>openssl-development</GenericName>
<PackageName>openssl</PackageName>
</Package>
<Package>
<GenericName>build-utilities</GenericName>
<PackageName>gcc make build-base automake autoconf</PackageName>
</Package>
<Package>
<GenericName>cairo-development</GenericName>
<PackageName>cairo</PackageName>
</Package>
<Package>
<GenericName>xorg-development</GenericName>
<PackageName>xorg-server</PackageName>
</Package>
<Package>
<GenericName>tiff</GenericName>
<PackageName>tiff</PackageName>
</Package>
<Package>
<GenericName>bison</GenericName>
<PackageName>bison</PackageName>
</Package>
<Package>
<GenericName>flex</GenericName>
<PackageName>flex</PackageName>
</Package>
<Package>
<GenericName>imlib2-development</GenericName>
<PackageName>imlib2</PackageName>
</Package>
<Package>
<GenericName>java</GenericName>
<PackageName>java-common</PackageName>
</Package>
<Package>
<GenericName>portaudio-development</GenericName>
<PackageName>portaudio</PackageName>
</Package>
<Package>
<GenericName>fortran-compiler</GenericName>
<PackageName>gfortran</PackageName>
</Package>
<Package>
<GenericName>glew</GenericName>
<PackageName>glew</PackageName>
</Package>
<Package>
<GenericName>bc</GenericName>
<PackageName>bc</PackageName>
</Package>
<Package>
<GenericName>scons</GenericName>
<PackageName>scons</PackageName>
</Package>
<Package>
<GenericName>smartmontools</GenericName>
<PackageName>smartmontools</PackageName>
</Package>
<Package>
<GenericName>zlib-development</GenericName>
<PackageName>zlib</PackageName>
</Package>
<Package>
<GenericName>jpeg-development</GenericName>
<PackageName>libjpeg-turbo</PackageName>
</Package>
<Package>
<GenericName>libaio-development</GenericName>
<PackageName>libaio</PackageName>
</Package>
<Package>
<GenericName>pcre</GenericName>
<PackageName>pcre</PackageName>
</Package>
<Package>
<GenericName>perl</GenericName>
<PackageName>perl</PackageName>
</Package>
<Package>
<GenericName>vorbis-development</GenericName>
<PackageName>libvorbis</PackageName>
</Package>
<Package>
<GenericName>p7zip</GenericName>
<PackageName>p7zip</PackageName>
</Package>
<Package>
<GenericName>autoconf</GenericName>
<PackageName>autoconf</PackageName>
</Package>
<Package>
<GenericName>libtool</GenericName>
<PackageName>libtool</PackageName>
</Package>
<Package>
<GenericName>ncurses-development</GenericName>
<PackageName>ncurses</PackageName>
</Package>
<Package>
<GenericName>popt</GenericName>
<PackageName>popt</PackageName>
</Package>
<Package>
<GenericName>curl</GenericName>
<PackageName>curl</PackageName>
</Package>
<Package>
<GenericName>fftw3-development</GenericName>
<PackageName>fftw</PackageName>
</Package>
<Package>
<GenericName>cmake</GenericName>
<PackageName>cmake</PackageName>
</Package>
<Package>
<GenericName>boost-development</GenericName>
<PackageName>boost</PackageName>
</Package>
<Package>
<GenericName>bzip2-development</GenericName>
<PackageName>bzip2</PackageName>
</Package>
<Package>
<GenericName>tcl</GenericName>
<PackageName>tcl</PackageName>
</Package>
<Package>
<GenericName>glibc-development</GenericName>
<PackageName>libc-dev</PackageName>
</Package>
<Package>
<GenericName>python</GenericName>
<PackageName>python</PackageName>
</Package>
<Package>
<GenericName>yasm</GenericName>
<PackageName>yasm</PackageName>
</Package>
<Package>
<GenericName>gmp-library</GenericName>
<PackageName>gmp</PackageName>
</Package>
<Package>
<GenericName>subversion</GenericName>
<PackageName>subversion</PackageName>
</Package>
<Package>
<GenericName>git</GenericName>
<PackageName>git</PackageName>
</Package>
<Package>
<GenericName>tinyxml</GenericName>
<PackageName>libtinyxml</PackageName>
</Package>
<Package>
<GenericName>attr</GenericName>
<PackageName>attr</PackageName>
</Package>
<Package>
<GenericName>httpd</GenericName>
<PackageName>apache2</PackageName>
</Package>
</ExternalDependencies>
</PhoronixTestSuite>

View File

@@ -6,6 +6,11 @@
<Name>Arch Linux</Name>
<PackageManager>pacman</PackageManager>
</Information>
<Package>
<GenericName>common-dependencies</GenericName>
<PackageName>mesa-demos</PackageName>
<FileCheck>glxinfo</FileCheck>
</Package>
<Package>
<GenericName>gtk-development</GenericName>
<PackageName>gtk2</PackageName>
@@ -36,7 +41,7 @@
</Package>
<Package>
<GenericName>build-utilities</GenericName>
<PackageName>gcc</PackageName>
<PackageName>gcc make autoconf</PackageName>
<FileCheck>g++</FileCheck>
</Package>
<Package>
@@ -226,5 +231,29 @@
<GenericName>attr</GenericName>
<PackageName>attr</PackageName>
</Package>
<Package>
<GenericName>httpd</GenericName>
<PackageName>apache</PackageName>
</Package>
<Package>
<GenericName>redis-server</GenericName>
<PackageName>redis</PackageName>
</Package>
<Package>
<GenericName>opencv</GenericName>
<PackageName>opencv</PackageName>
</Package>
<Package>
<GenericName>perl-digest-md5</GenericName>
<PackageName>perl-digest-md5-file perl6-digest-md5</PackageName>
</Package>
<Package>
<GenericName>python-scipy</GenericName>
<PackageName>python2-scipy</PackageName>
</Package>
<Package>
<GenericName>python-sklearn</GenericName>
<PackageName>python2-scikit-learn</PackageName>
</Package>
</ExternalDependencies>
</PhoronixTestSuite>

View File

@@ -4,6 +4,7 @@
<ExternalDependencies>
<Information>
<Name>DragonFlyBSD</Name>
<PackageManager>pkg</PackageManager>
</Information>
<Package>
<GenericName>common-dependencies</GenericName>
@@ -108,7 +109,7 @@
</Package>
<Package>
<GenericName>python</GenericName>
<PackageName>python3</PackageName>
<PackageName>python3 python</PackageName>
</Package>
<Package>
<GenericName>yasm</GenericName>
@@ -142,5 +143,17 @@
<GenericName>git</GenericName>
<PackageName>git</PackageName>
</Package>
<Package>
<GenericName>httpd</GenericName>
<PackageName>apache</PackageName>
</Package>
<Package>
<GenericName>python-sklearn</GenericName>
<PackageName>py27-scikit-learn</PackageName>
</Package>
<Package>
<GenericName>python-scipy</GenericName>
<PackageName>py27-scipy</PackageName>
</Package>
</ExternalDependencies>
</PhoronixTestSuite>

View File

@@ -252,11 +252,39 @@
</Package>
<Package>
<GenericName>opencl</GenericName>
<PackageName>opencl-headers</PackageName>
<PackageName>opencl-headers pocl</PackageName>
</Package>
<Package>
<GenericName>attr</GenericName>
<PackageName>attr</PackageName>
</Package>
<Package>
<GenericName>httpd</GenericName>
<PackageName>httpd</PackageName>
</Package>
<Package>
<GenericName>golang</GenericName>
<PackageName>golang</PackageName>
</Package>
<Package>
<GenericName>redis-server</GenericName>
<PackageName>redis</PackageName>
</Package>
<Package>
<GenericName>opencv</GenericName>
<PackageName>opencv-devel</PackageName>
</Package>
<Package>
<GenericName>perl-digest-md5</GenericName>
<PackageName>perl-Digest-MD5</PackageName>
</Package>
<Package>
<GenericName>python-scipy</GenericName>
<PackageName>scipy</PackageName>
</Package>
<Package>
<GenericName>python-sklearn</GenericName>
<PackageName>python-scikit-learn</PackageName>
</Package>
</ExternalDependencies>
</PhoronixTestSuite>

View File

@@ -208,5 +208,9 @@
<GenericName>superlu</GenericName>
<PackageName>math/superlu</PackageName>
</Package>
<Package>
<GenericName>golang</GenericName>
<PackageName>lang/go</PackageName>
</Package>
</ExternalDependencies>
</PhoronixTestSuite>

View File

@@ -71,7 +71,7 @@
<GenericName>xorg-development</GenericName>
<Title>X.Org Development Files and Libraries</Title>
<PossibleNames>xserver-xorg-development, xorg-devel</PossibleNames>
<FileCheck>xorg/xf86.h</FileCheck>
<FileCheck>xorg/xf86.h OR X11/Xlib.h</FileCheck>
</Package>
<Package>
<GenericName>cairo-development</GenericName>
@@ -269,7 +269,7 @@
<GenericName>blas-development</GenericName>
<Title>Basic Linear Algebra Sub-Routine Library</Title>
<PossibleNames>libblas-dev, libblas-devel, blas-devel, blas</PossibleNames>
<FileCheck>libblas.so</FileCheck>
<FileCheck>libblas.so OR openblas_config.h</FileCheck>
</Package>
<Package>
<GenericName>lapack-development</GenericName>
@@ -287,7 +287,7 @@
<GenericName>openmpi-development</GenericName>
<Title>OpenMPI</Title>
<PossibleNames>libopenmpi-dev, openmpi-bin</PossibleNames>
<FileCheck>openmpi/lib/libmpi.so, mpirun.openmpi</FileCheck>
<FileCheck>openmpi/lib/libmpi.so OR mpirun OR mpirun.openmpi</FileCheck>
</Package>
<Package>
@@ -408,7 +408,49 @@
<GenericName>attr</GenericName>
<Title>Attr</Title>
<PossibleNames>attr, libattr1-dev</PossibleNames>
<FileCheck>attr/xattr.h</FileCheck>
<FileCheck>attr/xattr.h OR sys/xattr.h</FileCheck>
</Package>
<Package>
<GenericName>httpd</GenericName>
<Title>httpd</Title>
<PossibleNames>httpd, apache2</PossibleNames>
<FileCheck>/usr/sbin/apachectl</FileCheck>
</Package>
<Package>
<GenericName>golang</GenericName>
<Title>Go Language</Title>
<PossibleNames>golang, go-doc</PossibleNames>
<FileCheck>/usr/bin/go</FileCheck>
</Package>
<Package>
<GenericName>redis-server</GenericName>
<Title>Redis</Title>
<PossibleNames>redis, redis-server</PossibleNames>
<FileCheck>/usr/bin/redis-server</FileCheck>
</Package>
<Package>
<GenericName>opencv</GenericName>
<Title>OpenCV</Title>
<PossibleNames>opencv</PossibleNames>
<FileCheck>opencv/cv.h OR opencv2/core.hpp</FileCheck>
</Package>
<Package>
<GenericName>perl-digest-md5</GenericName>
<Title>Perl interface to the MD5 Algorithm</Title>
<PossibleNames>perl-Digest-MD5, perl-Digest-Perl-MD5, libdigest-md5</PossibleNames>
<FileCheck>Digest/MD5.pm OR /usr/share/doc/perl-Digest-MD5 OR /usr/share/perl5/Digest/</FileCheck>
</Package>
<Package>
<GenericName>python-scipy</GenericName>
<Title>Python Scipy</Title>
<PossibleNames>python-scipy</PossibleNames>
<FileCheck>/usr/lib/python2.7/dist-packages/scipy</FileCheck>
</Package>
<Package>
<GenericName>python-sklearn</GenericName>
<Title>Python Sklearn</Title>
<PossibleNames>python-sklearn</PossibleNames>
<FileCheck>/usr/lib/python2.7/dist-packages/scikit_learn-0.17.egg-info</FileCheck>
</Package>
</ExternalDependencies>
</PhoronixTestSuite>

View File

@@ -248,5 +248,33 @@
<GenericName>attr</GenericName>
<PackageName>sys-apps/attr</PackageName>
</Package>
<Package>
<GenericName>httpd</GenericName>
<PackageName>www-servers/apache</PackageName>
</Package>
<Package>
<GenericName>golang</GenericName>
<PackageName>dev-lang/go</PackageName>
</Package>
<Package>
<GenericName>redis-server</GenericName>
<PackageName>dev-db/redis</PackageName>
</Package>
<Package>
<GenericName>opencv</GenericName>
<PackageName>media-libs/opencv</PackageName>
</Package>
<Package>
<GenericName>perl-digest-md5</GenericName>
<PackageName>perl-core/Digest-MD5</PackageName>
</Package>
<Package>
<GenericName>python-scipy</GenericName>
<PackageName>sci-libs/scipy</PackageName>
</Package>
<Package>
<GenericName>python-sklearn</GenericName>
<PackageName>sci-libs/scikits_learn</PackageName>
</Package>
</ExternalDependencies>
</PhoronixTestSuite>

View File

@@ -235,5 +235,21 @@
<GenericName>tinyxml</GenericName>
<PackageName>tinyxml-devel</PackageName>
</Package>
<Package>
<GenericName>golang</GenericName>
<PackageName>golang</PackageName>
</Package>
<Package>
<GenericName>redis-server</GenericName>
<PackageName>redis</PackageName>
</Package>
<Package>
<GenericName>opencv</GenericName>
<PackageName>opencv-devel</PackageName>
</Package>
<Package>
<GenericName>perl-digest-md5</GenericName>
<PackageName>perl-Digest-MD5</PackageName>
</Package>
</ExternalDependencies>
</PhoronixTestSuite>

View File

@@ -176,7 +176,7 @@
</Package>
<Package>
<GenericName>lapack-development</GenericName>
<PackageName>lapack-devel</PackageName>
<PackageName>lapack-devel lapacke-devel</PackageName>
</Package>
<Package>
<GenericName>cmake</GenericName>
@@ -204,7 +204,7 @@
</Package>
<Package>
<GenericName>atlas-development</GenericName>
<PackageName>libatlas3-devel</PackageName>
<PackageName>blas-devel</PackageName>
</Package>
<Package>
<GenericName>openmpi-development</GenericName>
@@ -250,9 +250,41 @@
<GenericName>tinyxml</GenericName>
<PackageName>tinyxml-devel</PackageName>
</Package>
<Package>
<GenericName>opencl</GenericName>
<PackageName>opencl-headers</PackageName>
</Package>
<Package>
<GenericName>attr</GenericName>
<PackageName>attr</PackageName>
</Package>
<Package>
<GenericName>httpd</GenericName>
<PackageName>apache2</PackageName>
</Package>
<Package>
<GenericName>golang</GenericName>
<PackageName>go-doc</PackageName>
</Package>
<Package>
<GenericName>redis-server</GenericName>
<PackageName>redis</PackageName>
</Package>
<Package>
<GenericName>opencv</GenericName>
<PackageName>opencv-devel</PackageName>
</Package>
<Package>
<GenericName>perl-digest-md5</GenericName>
<PackageName>perl-Digest-Perl-MD5</PackageName>
</Package>
<Package>
<GenericName>python-scipy</GenericName>
<PackageName>python-scipy</PackageName>
</Package>
<Package>
<GenericName>python-sklearn</GenericName>
<PackageName>python-scikit-learn</PackageName>
</Package>
</ExternalDependencies>
</PhoronixTestSuite>

View File

@@ -0,0 +1,269 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="xsl/pts-exdep-viewer.xsl" ?>
<PhoronixTestSuite>
<ExternalDependencies>
<Information>
<Name>Solus</Name>
<Aliases>Solus Linux</Aliases>
<PackageManager>eopkg</PackageManager>
</Information>
<Package>
<GenericName>common-dependencies</GenericName>
<PackageName>mesalib-demos unzip</PackageName>
<FileCheck>glxinfo, unzip</FileCheck>
</Package>
<Package>
<GenericName>32bit-compatibility</GenericName>
<PackageName>glibc-32bit libstdc++-32bit libx11-32bit libxext-32bit libxrandr-32bit libxinerama-32bit libxdamage-32bit-devel mesalib-32bit-devel sdl1-sound-32bit libjpeg-turbo-32bit systemd-32bit</PackageName>
</Package>
<Package>
<GenericName>gtk-development</GenericName>
<PackageName>libgtk-2-devel</PackageName>
</Package>
<Package>
<GenericName>sdl2-development</GenericName>
<PackageName>sdl2-mixer-devel sdl2-ttf-devel sdl2-gfx-devel sdl2-devel sdl2-image-devel sdl2-net-devel</PackageName>
</Package>
<Package>
<GenericName>sdl-development</GenericName>
<PackageName>sdl1-devel sdl1-image-devel sdl2-ttf-devel sdl-gfx-devel sdl1-image-devel sdl1-net-devel sdl1-mixer-devel</PackageName>
</Package>
<Package>
<GenericName>glut</GenericName>
<PackageName>freeglut-devel</PackageName>
</Package>
<Package>
<GenericName>libpng-development</GenericName>
<PackageName>libpng-devel</PackageName>
</Package>
<Package>
<GenericName>openssl-development</GenericName>
<PackageName>openssl-devel</PackageName>
</Package>
<Package>
<GenericName>build-utilities</GenericName>
<PackageName>-c system.devel</PackageName>
</Package>
<Package>
<GenericName>tiff</GenericName>
<PackageName>libtiff-devel</PackageName>
</Package>
<Package>
<GenericName>bison</GenericName>
<PackageName>bison</PackageName>
</Package>
<Package>
<GenericName>flex</GenericName>
<PackageName>flex</PackageName>
</Package>
<Package>
<GenericName>imlib2-development</GenericName>
<PackageName>imlib2-devel</PackageName>
</Package>
<Package>
<GenericName>java</GenericName>
<PackageName>openjdk-8</PackageName>
</Package>
<Package>
<GenericName>portaudio-development</GenericName>
<PackageName>portaudio-devel</PackageName>
</Package>
<Package>
<GenericName>fortran-compiler</GenericName>
<PackageName>gfortran</PackageName>
</Package>
<Package>
<GenericName>glew</GenericName>
<PackageName>glew-devel</PackageName>
</Package>
<Package>
<GenericName>bc</GenericName>
<PackageName>bc</PackageName>
</Package>
<Package>
<GenericName>scons</GenericName>
<PackageName>scons</PackageName>
</Package>
<Package>
<GenericName>smartmontools</GenericName>
<PackageName>smartmontools</PackageName>
<FileCheck>/usr/sbin/smartctl</FileCheck>
</Package>
<Package>
<GenericName>zlib-development</GenericName>
<PackageName>zlib-devel</PackageName>
</Package>
<Package>
<GenericName>jpeg-development</GenericName>
<PackageName>libjpeg-turbo-devel</PackageName>
</Package>
<Package>
<GenericName>libaio-development</GenericName>
<PackageName>libaio-devel</PackageName>
</Package>
<Package>
<GenericName>pcre</GenericName>
<PackageName>libpcre-devel</PackageName>
</Package>
<Package>
<GenericName>perl</GenericName>
<PackageName>perl perl-module-build</PackageName>
</Package>
<Package>
<GenericName>xorg-video</GenericName>
<PackageName>libxv-devel libxvmc-devel libvdpau-devel</PackageName>
</Package>
<Package>
<GenericName>openal-development</GenericName>
<PackageName>openal-soft-devel</PackageName>
</Package>
<Package>
<GenericName>vorbis-development</GenericName>
<PackageName>libvorbis-devel</PackageName>
</Package>
<Package>
<GenericName>jam</GenericName>
<PackageName>ftjam</PackageName>
</Package>
<Package>
<GenericName>p7zip</GenericName>
<PackageName>p7zip</PackageName>
</Package>
<Package>
<GenericName>qt4-development</GenericName>
<PackageName>qt4-devel</PackageName>
</Package>
<Package>
<GenericName>autoconf</GenericName>
<PackageName>autoconf</PackageName>
</Package>
<Package>
<GenericName>libtool</GenericName>
<PackageName>libtool</PackageName>
</Package>
<Package>
<GenericName>ncurses-development</GenericName>
<PackageName>ncurses-devel</PackageName>
</Package>
<Package>
<GenericName>popt</GenericName>
<PackageName>popt-devel</PackageName>
</Package>
<Package>
<GenericName>curl</GenericName>
<PackageName>curl-devel</PackageName>
</Package>
<Package>
<GenericName>fftw3-development</GenericName>
<PackageName>fftw-devel</PackageName>
</Package>
<Package>
<GenericName>blas-development</GenericName>
<PackageName>openblas-devel</PackageName>
<FileCheck>openblas_config.h</FileCheck>
</Package>
<Package>
<GenericName>lapack-development</GenericName>
<PackageName>openblas-devel</PackageName>
<FileCheck>lapacke.h</FileCheck>
</Package>
<Package>
<GenericName>atlas-development</GenericName>
<PackageName>gflags-devel glog-devel leveldb-devel lmdb-devel hdf5-devel opencv-devel protobuf-devel snappy-devel</PackageName>
<FileCheck>gflags.h</FileCheck>
</Package>
<Package>
<GenericName>cmake</GenericName>
<PackageName>cmake</PackageName>
</Package>
<Package>
<GenericName>boost-development</GenericName>
<PackageName>libboost-devel</PackageName>
</Package>
<Package>
<GenericName>bzip2-development</GenericName>
<PackageName>bzip2-devel</PackageName>
</Package>
<Package>
<GenericName>tcl</GenericName>
<PackageName>tcl</PackageName>
</Package>
<Package>
<GenericName>glibc-development</GenericName>
<PackageName>glibc-devel</PackageName>
</Package>
<Package>
<GenericName>python</GenericName>
<PackageName>python</PackageName>
</Package>
<Package>
<GenericName>boost-thread-development</GenericName>
<PackageName>libboost-devel</PackageName>
</Package>
<Package>
<GenericName>python-numpy</GenericName>
<PackageName>numpy</PackageName>
<FileCheck>/usr/lib/python2.7/site-packages/numpy</FileCheck>
</Package>
<Package>
<GenericName>yasm</GenericName>
<PackageName>yasm</PackageName>
</Package>
<Package>
<GenericName>gmp-library</GenericName>
<PackageName>gmp-devel</PackageName>
</Package>
<Package>
<GenericName>subversion</GenericName>
<PackageName>subversion</PackageName>
</Package>
<Package>
<GenericName>git</GenericName>
<PackageName>git</PackageName>
</Package>
<Package>
<GenericName>suitesparse</GenericName>
<PackageName>suitesparse-devel</PackageName>
</Package>
<Package>
<GenericName>tinyxml</GenericName>
<PackageName>tinyxml-devel</PackageName>
</Package>
<Package>
<GenericName>opencl</GenericName>
<PackageName>ocl-icd-devel</PackageName>
<FileCheck>ocl_icd.h</FileCheck>
</Package>
<Package>
<GenericName>attr</GenericName>
<PackageName>attr-devel</PackageName>
</Package>
<Package>
<GenericName>golang</GenericName>
<PackageName>golang</PackageName>
</Package>
<Package>
<GenericName>redis-server</GenericName>
<PackageName>redis</PackageName>
</Package>
<Package>
<GenericName>opencv</GenericName>
<PackageName>opencv-devel</PackageName>
</Package>
<Package>
<GenericName>perl-digest-md5</GenericName>
<PackageName>perl</PackageName>
<FileCheck>/usr/lib/perl5/5.22.1/x86_64-linux/Digest/MD5.pm</FileCheck>
</Package>
<Package>
<GenericName>python-scipy</GenericName>
<PackageName>scipy</PackageName>
<FileCheck>/usr/lib/python2.7/site-packages/scipy</FileCheck>
</Package>
<Package>
<GenericName>python-sklearn</GenericName>
<PackageName>scikit-learn</PackageName>
<FileCheck>/usr/lib/python2.7/site-packages/sklearn</FileCheck>
</Package>
</ExternalDependencies>
</PhoronixTestSuite>

View File

@@ -9,8 +9,8 @@
</Information>
<Package>
<GenericName>common-dependencies</GenericName>
<PackageName>mesa-utils unzip</PackageName>
<FileCheck>glxinfo, unzip</FileCheck>
<PackageName>mesa-utils unzip apt-file</PackageName>
<FileCheck>glxinfo, unzip, apt-file</FileCheck>
</Package>
<Package>
<GenericName>32bit-compatibility</GenericName>
@@ -47,7 +47,7 @@
</Package>
<Package>
<GenericName>libpng-development</GenericName>
<PackageName>libpng12-dev</PackageName>
<PackageName>libpng-dev</PackageName>
</Package>
<Package>
<GenericName>openssl-development</GenericName>
@@ -209,7 +209,7 @@
</Package>
<Package>
<GenericName>lapack-development</GenericName>
<PackageName>liblapack-dev</PackageName>
<PackageName>liblapack-dev liblapacke-dev</PackageName>
</Package>
<Package>
<GenericName>atlas-development</GenericName>
@@ -217,7 +217,7 @@
</Package>
<Package>
<GenericName>openmpi-development</GenericName>
<PackageName>libopenmpi-dev openmpi-bin libmpich2-dev</PackageName>
<PackageName>libopenmpi-dev openmpi-bin libmpich-dev</PackageName>
</Package>
<Package>
<GenericName>cmake</GenericName>
@@ -281,7 +281,7 @@
</Package>
<Package>
<GenericName>superlu</GenericName>
<PackageName>libsuperlu3-dev</PackageName>
<PackageName>libsuperlu-dev</PackageName>
</Package>
<Package>
<GenericName>suitesparse</GenericName>
@@ -289,7 +289,7 @@
</Package>
<Package>
<GenericName>dune</GenericName>
<PackageName>libdune-common-dev libdune-istl-dev libdune-grid-dev libdune-localfunctions-dev</PackageName>
<PackageName>libdune-common-dev libdune-istl-dev libdune-geometry-dev libdune-grid-dev libdune-localfunctions-dev</PackageName>
</Package>
<Package>
<GenericName>tinyxml</GenericName>
@@ -303,5 +303,35 @@
<GenericName>attr</GenericName>
<PackageName>libattr1-dev</PackageName>
</Package>
<Package>
<GenericName>httpd</GenericName>
<PackageName>apache2</PackageName>
</Package>
<Package>
<GenericName>golang</GenericName>
<PackageName>golang</PackageName>
</Package>
<Package>
<GenericName>redis-server</GenericName>
<PackageName>redis-server</PackageName>
</Package>
<Package>
<GenericName>opencv</GenericName>
<PackageName>libopencv-dev</PackageName>
</Package>
<Package>
<GenericName>perl-digest-md5</GenericName>
<PackageName>libdigest-md5-file-perl libdigest-perl-md5-perl</PackageName>
</Package>
<Package>
<GenericName>python-scipy</GenericName>
<PackageName>python-scipy</PackageName>
<FileCheck>/usr/lib/python2.7/dist-packages/scipy</FileCheck>
</Package>
<Package>
<GenericName>python-sklearn</GenericName>
<PackageName>python-sklearn</PackageName>
<FileCheck>/usr/lib/python2.7/dist-packages/sklearn/</FileCheck>
</Package>
</ExternalDependencies>
</PhoronixTestSuite>

View File

@@ -0,0 +1,252 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="xsl/pts-exdep-viewer.xsl" ?>
<PhoronixTestSuite>
<ExternalDependencies>
<Information>
<Name>Void Linux</Name>
<Aliases></Aliases>
<PackageManager>xbps-install</PackageManager>
</Information>
<Package>
<GenericName>common-dependencies</GenericName>
<PackageName>unzip</PackageName>
<FileCheck>unzip</FileCheck>
</Package>
<Package>
<GenericName>gtk-development</GenericName>
<PackageName>gtk+-devel gtk+3-devel</PackageName>
</Package>
<Package>
<GenericName>sdl2-development</GenericName>
<PackageName>SDL2-devel SDL2_gfx-devel SDL2_image-devel SDL2_ttf-devel SDL2_net-devel</PackageName>
</Package>
<Package>
<GenericName>sdl-development</GenericName>
<PackageName>SDL-devel SDL_gfx-devel SDL_image-devel SDL_ttf-devel SDL_net-devel</PackageName>
</Package>
<Package>
<GenericName>glut</GenericName>
<PackageName>libfreeglut-devel</PackageName>
</Package>
<Package>
<GenericName>csh</GenericName>
<PackageName>tcsh</PackageName>
</Package>
<Package>
<GenericName>libpng-development</GenericName>
<PackageName>libpng-devel</PackageName>
</Package>
<Package>
<GenericName>openssl-development</GenericName>
<PackageName>libressl-devel</PackageName>
</Package>
<Package>
<GenericName>build-utilities</GenericName>
<PackageName>gcc gcc-c++ autoconf make libgomp-devel automake</PackageName>
</Package>
<Package>
<GenericName>cairo-development</GenericName>
<PackageName>cairo-devel</PackageName>
</Package>
<Package>
<GenericName>xorg-development</GenericName>
<PackageName>xorg-server-devel</PackageName>
</Package>
<Package>
<GenericName>tiff</GenericName>
<PackageName>tiff-devel</PackageName>
</Package>
<Package>
<GenericName>bison</GenericName>
<PackageName>bison</PackageName>
</Package>
<Package>
<GenericName>flex</GenericName>
<PackageName>flex</PackageName>
</Package>
<Package>
<GenericName>imlib2-development</GenericName>
<PackageName>imlib2-devel</PackageName>
</Package>
<Package>
<GenericName>java</GenericName>
<PackageName>openjdk</PackageName>
</Package>
<Package>
<GenericName>portaudio-development</GenericName>
<PackageName>portaudio-devel</PackageName>
</Package>
<Package>
<GenericName>fortran-compiler</GenericName>
<PackageName>gcc-fortran</PackageName>
</Package>
<Package>
<GenericName>glew</GenericName>
<PackageName>glew-devel</PackageName>
</Package>
<Package>
<GenericName>bc</GenericName>
<PackageName>bc</PackageName>
</Package>
<Package>
<GenericName>freeimage</GenericName>
<PackageName>freeimage-devel</PackageName>
</Package>
<Package>
<GenericName>scons</GenericName>
<PackageName>scons</PackageName>
</Package>
<Package>
<GenericName>smartmontools</GenericName>
<PackageName>smartmontools</PackageName>
</Package>
<Package>
<GenericName>zlib-development</GenericName>
<PackageName>zlib-devel</PackageName>
</Package>
<Package>
<GenericName>jpeg-development</GenericName>
<PackageName>libopenjpeg-devel</PackageName>
</Package>
<Package>
<GenericName>libaio-development</GenericName>
<PackageName>libaio-devel</PackageName>
</Package>
<Package>
<GenericName>pcre</GenericName>
<PackageName>libpcre</PackageName>
</Package>
<Package>
<GenericName>perl</GenericName>
<PackageName>perl</PackageName>
</Package>
<Package>
<GenericName>xorg-video</GenericName>
<PackageName>libXv-devel l;ibvdpau-devel</PackageName>
</Package>
<Package>
<GenericName>libstdcpp5</GenericName>
<PackageName>libstdc++-devel</PackageName>
</Package>
<Package>
<GenericName>openal-development</GenericName>
<PackageName>libopenal-devel</PackageName>
</Package>
<Package>
<GenericName>vorbis-development</GenericName>
<PackageName>libvorbis-devel</PackageName>
</Package>
<Package>
<GenericName>jam</GenericName>
<PackageName>jam</PackageName>
</Package>
<Package>
<GenericName>p7zip</GenericName>
<PackageName>p7zip</PackageName>
</Package>
<Package>
<GenericName>autoconf</GenericName>
<PackageName>autoconf</PackageName>
</Package>
<Package>
<GenericName>libtool</GenericName>
<PackageName>libtool</PackageName>
</Package>
<Package>
<GenericName>ncurses-development</GenericName>
<PackageName>ncurses-devel</PackageName>
</Package>
<Package>
<GenericName>popt</GenericName>
<PackageName>popt-devel</PackageName>
</Package>
<Package>
<GenericName>numa-development</GenericName>
<PackageName>libnuma-devel</PackageName>
</Package>
<Package>
<GenericName>curl</GenericName>
<PackageName>libcurl-devel curl</PackageName>
</Package>
<Package>
<GenericName>fftw3-development</GenericName>
<PackageName>libfftw</PackageName>
</Package>
<Package>
<GenericName>blas-development</GenericName>
<PackageName>blas-devel</PackageName>
</Package>
<Package>
<GenericName>lapack-development</GenericName>
<PackageName>lapack-devel</PackageName>
</Package>
<Package>
<GenericName>openmpi-development</GenericName>
<PackageName>libopenmpi</PackageName>
</Package>
<Package>
<GenericName>cmake</GenericName>
<PackageName>cmake</PackageName>
</Package>
<Package>
<GenericName>boost-development</GenericName>
<PackageName>boost boost-devel</PackageName>
</Package>
<Package>
<GenericName>bzip2-development</GenericName>
<PackageName>bzip2-devel</PackageName>
</Package>
<Package>
<GenericName>tcl</GenericName>
<PackageName>tcl tcl-devel</PackageName>
</Package>
<Package>
<GenericName>glibc-development</GenericName>
<PackageName>glibc-devel</PackageName>
</Package>
<Package>
<GenericName>glibc-development</GenericName>
<PackageName>glibc-devel</PackageName>
</Package>
<Package>
<GenericName>python</GenericName>
<PackageName>python</PackageName>
</Package>
<Package>
<GenericName>python-numpy</GenericName>
<PackageName>python-numpy</PackageName>
</Package>
<Package>
<GenericName>yasm</GenericName>
<PackageName>yasm</PackageName>
</Package>
<Package>
<GenericName>gmp-library</GenericName>
<PackageName>gmp-devel</PackageName>
</Package>
<Package>
<GenericName>subversion</GenericName>
<PackageName>subversion</PackageName>
</Package>
<Package>
<GenericName>git</GenericName>
<PackageName>git</PackageName>
</Package>
<Package>
<GenericName>opencl</GenericName>
<PackageName>opencl-headers</PackageName>
</Package>
<Package>
<GenericName>attr</GenericName>
<PackageName>attr-devel</PackageName>
</Package>
<Package>
<GenericName>httpd</GenericName>
<PackageName>apache</PackageName>
</Package>
<Package>
<GenericName>golang</GenericName>
<PackageName>go</PackageName>
</Package>
</ExternalDependencies>
</PhoronixTestSuite>

View File

@@ -227,6 +227,13 @@
<PackageName>gmp</PackageName>
<FileCheck>/usr/include/gmp.h</FileCheck>
</Package>
<!-- lib3ds support for Zenwalk -->
<Package>
<GenericName>opencv</GenericName>
<PackageName>opencv</PackageName>
</Package>
<Package>
<GenericName>redis-server</GenericName>
<PackageName>redis</PackageName>
</Package>
</ExternalDependencies>
</PhoronixTestSuite>

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2008 - 2011, Phoronix Media
Copyright (C) 2008 - 2011, Michael Larabel
Copyright (C) 2008 - 2016, Phoronix Media
Copyright (C) 2008 - 2016, Michael Larabel
dummy_module.php: A simple 'dummy' module to demonstrate the PTS functions
This program is free software; you can redistribute it and/or modify
@@ -120,6 +120,14 @@ class dummy_module extends pts_module_interface
{
echo PHP_EOL . 'We\'re all done with the testing for now.' . PHP_EOL . 'Called: __post_run_process()' . PHP_EOL;
}
public static function __test_log_output()
{
echo PHP_EOL . 'Log file available.' . PHP_EOL . 'Called: __test_log_output()' . PHP_EOL;
}
public static function __post_test_run_system_logs()
{
echo PHP_EOL . 'System logs available.' . PHP_EOL . 'Called: __post_test_run_system_logs()' . PHP_EOL;
}
}
?>

View File

@@ -0,0 +1,130 @@
<?php
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2016, Phoronix Media
Copyright (C) 2016, Michael Larabel
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 flamegrapher extends pts_module_interface
{
const module_name = 'Generate Perf FlameGraphs For Tests';
const module_version = '0.1.0';
const module_description = 'Setting FLAME_GRAPH_PATH=<path to flamegraph path> will auto-load and enable this Phoronix Test Suite module. The module will generate a Linux perf FlameGraph for each test run during the benchmarking process. Details on FlameGraph @ https://github.com/brendangregg/FlameGraph';
const module_author = 'Michael Larabel';
private static $successful_test_run;
private static $flame_graph_path = false;
private static $temp_flame_dir;
private static $save_position = 0;
public static function module_environmental_variables()
{
return array('FLAME_GRAPH_PATH');
}
public static function module_info()
{
return null;
}
public static function __run_manager_setup(&$test_run_manager)
{
// Verify LINUX_PERF is set, `perf` can be found, and is Linux
self::$flame_graph_path = getenv('FLAME_GRAPH_PATH') . '/';
if(!is_dir(self::$flame_graph_path))
{
echo 'FLAME_GRAPH_PATH is not valid directory to FlameGraph.' . PHP_EOL;
return pts_module::MODULE_UNLOAD;
}
if(!is_executable(self::$flame_graph_path . 'stackcollapse-perf.pl'))
{
echo 'stackcollapse-perf.pl not found.' . PHP_EOL;
return pts_module::MODULE_UNLOAD;
}
if(!is_executable(self::$flame_graph_path . 'flamegraph.pl'))
{
echo 'flamegraph.pl not found.' . PHP_EOL;
return pts_module::MODULE_UNLOAD;
}
if(!pts_client::executable_in_path('perf'))
{
echo 'Linux perf binary not found.' . PHP_EOL;
return pts_module::MODULE_UNLOAD;
}
if(!pts_client::executable_in_path('perl'))
{
echo 'Linux perl binary not found.' . PHP_EOL;
return pts_module::MODULE_UNLOAD;
}
echo PHP_EOL . 'Linux Perf & FlameGraph Support Enabled.' . PHP_EOL . PHP_EOL;
// This module won't be too useful if you're not saving the results to see the graphs
$test_run_manager->force_results_save();
}
public static function __pre_test_run(&$test_run_request)
{
// Pre-run process start perf recording
self::$temp_flame_dir = pts_client::create_temporary_directory('flamegraph');
shell_exec('perf record -a -g -F 97 -o ' . self::$temp_flame_dir . 'perf.data sleep 3');
}
public static function __post_test_run_success($test_run_request)
{
// Base the new result object/graph off of what just ran
// Do the copy here of it since this function is only called when test is a success
self::$successful_test_run = clone $test_run_request;
}
public static function __post_test_run_process(&$result_file)
{
$svg_flamegraph = null;
if(is_dir(self::$temp_flame_dir))
{
// Post-process perf data with FlameGraph
shell_exec('cd ' . self::$temp_flame_dir . ' && perf script > out.stack');
shell_exec(self::$flame_graph_path . 'stackcollapse-perf.pl ' . self::$temp_flame_dir . 'out.stack > ' . self::$temp_flame_dir . 'out.folded');
shell_exec(self::$flame_graph_path . 'flamegraph.pl ' . self::$temp_flame_dir . 'out.folded > ' . self::$temp_flame_dir . 'out.svg');
if(is_file(self::$temp_flame_dir . 'out.svg'))
{
$svg_flamegraph = file_get_contents(self::$temp_flame_dir . 'out.svg');
}
// Cleanup
pts_file_io::delete(self::$temp_flame_dir, null, true);
self::$temp_flame_dir = false;
}
if(self::$successful_test_run && $svg_flamegraph)
{
self::$save_position++;
if(!is_dir($result_file->default_result_folder_path() . '/result-graphs'))
{
pts_file_io::mkdir($result_file->default_result_folder_path() . '/result-graphs', 0777, true);
}
// TODO XXX below is a bit hacky way of saving SVG graphs to make them appear in the local results viewer under matching test
$s = file_put_contents($result_file->default_result_folder_path() . '/result-graphs/' . self::$save_position . '_extra1.svg', $svg_flamegraph);
if($s)
{
echo PHP_EOL . 'Saved FlameGraph result to: ' . $result_file->default_result_folder_path() . '/result-graphs/' . self::$save_position . '_extra1.svg' . PHP_EOL;
}
}
// Reset to be safe
self::$successful_test_run = null;
}
}
?>

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2008 - 2012, Phoronix Media
Copyright (C) 2008 - 2012, Michael Larabel
Copyright (C) 2008 - 2016, Phoronix Media
Copyright (C) 2008 - 2016, Michael Larabel
graphics_override.php: Graphics AA/AF image quality setting override module
This program is free software; you can redistribute it and/or modify
@@ -28,8 +28,8 @@ class graphics_event_checker extends pts_module_interface
const module_description = 'This module checks a number of events prior to and and after running a test to make sure the graphics sub-system was not put in a sour or unintended state by the application. For instance, it makes sure syncing to vBlank is not forced through the driver and that a graphics test has not left the display in an unintended mode.';
const module_author = 'Michael Larabel';
static $start_video_resolution = array(-1, -1);
static $driver_forced_vsync = false;
private static $start_video_resolution = array(-1, -1);
private static $driver_forced_vsync = false;
// GPU Errors
static $error_pointer = 0;
@@ -92,7 +92,7 @@ class graphics_event_checker extends pts_module_interface
// vblank_mode=0 has long been set within pts-core, but put it here too just since there's these other checks here
putenv('vblank_mode=0');
}
public static function __post_test_run(&$test_result)
public static function __post_test_run($test_result)
{
if($test_result->test_profile->get_test_hardware_type() != 'Graphics')
{
@@ -152,7 +152,7 @@ class graphics_event_checker extends pts_module_interface
echo PHP_EOL . 'GPU Errors: ' . $error_count . $error_breakdown . PHP_EOL;
}
if(phodevi::is_nvidia_graphics() && self::$driver_forced_vsync)
if(self::$driver_forced_vsync && phodevi::is_nvidia_graphics())
{
shell_exec('nvidia-settings -a SyncToVBlank=1 2>&1');
}

View File

@@ -0,0 +1,126 @@
<?php
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2016, Phoronix Media
Copyright (C) 2016, Michael Larabel
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 html_results_export extends pts_module_interface
{
const module_name = 'Result Exporter To HTML';
const module_version = '1.0.0';
const module_description = 'This module allows basic exporting of results to HTML for saving either to a file locally (specified using the EXPORT_RESULTS_HTML_FILE_TO environment variable) or to a mail account (specified using the EXPORT_RESULTS_HTML_EMAIL_TO environment variable). EXPORT_RESULTS_HTML_EMAIL_TO supports multiple email addresses delimited by a comma.';
const module_author = 'Michael Larabel';
public static function module_environmental_variables()
{
return array('EXPORT_RESULTS_HTML_EMAIL_TO', 'EXPORT_RESULTS_HTML_FILE_TO');
}
protected static function generate_html_email_results($result_file)
{
$html = '<html><head><title>' . $result_file->get_title() . ' - Phoronix Test Suite</title></head><body>';
$html .= '<h1>' . $result_file->get_title() . '</h1>';
$html .= '<p>' . $result_file->get_description() . '</p>';
$extra_attributes = array();
// Systems
$table = new pts_ResultFileSystemsTable($result_file);
$html .= '<p style="text-align: center; overflow: auto;">' . pts_render::render_graph_inline_embed($table, $result_file, $extra_attributes, true, 'HTML') . '</p>';
// Result Overview
$intent = null;
$table = new pts_ResultFileTable($result_file, $intent);
$html .= '<p style="text-align: center; overflow: auto;">' . pts_render::render_graph_inline_embed($table, $result_file, $extra_attributes, true, 'HTML') . '</p>';
// The Results
foreach($result_file->get_result_objects() as $result_object)
{
$res = pts_render::render_graph_inline_embed($result_object, $result_file, $extra_attributes, true, 'HTML');
if($res == false)
{
continue;
}
$html .= '<h2>' . $result_object->test_profile->get_title() . '</h2>';
$html .= '<h3>' . $result_object->get_arguments_description() . '</h3>';
$html .= '<p align="center">';
$html .= $res;
$html .= '</p>';
unset($result_object);
}
// Footer
$html .= '<hr />
<p><img src="http://www.phoronix-test-suite.com/web/pts-logo-60.png" /></p>
<h6><em>The <a href="http://www.phoronix-test-suite.com/">Phoronix Test Suite</a>, <a href="http://www.phoromatic.com/">Phoromatic</a>, and <a href="http://openbenchmarking.org/">OpenBenchmarking.org</a> are products of <a href="http://www.phoronix-media.com/">Phoronix Media</a>.<br />The Phoronix Test Suite is open-source under terms of the GNU GPL. Commercial support, custom engineering, and other services are available by contacting Phoronix Media.<br />&copy; ' . date('Y') . ' Phoronix Media.</em></h6>';
$html .= '</body></html>';
return $html;
}
public static function __event_results_saved($test_run_manager)
{
$html_file = pts_module::read_variable('EXPORT_RESULTS_HTML_FILE_TO');
$emails = pts_strings::comma_explode(pts_module::read_variable('EXPORT_RESULTS_HTML_EMAIL_TO'));
$html_contents = self::generate_html_email_results($test_run_manager->result_file);
if(!empty($html_file))
{
file_put_contents($html_file, $html_contents);
echo 'HTML Result File To: ' . $html_file . PHP_EOL;
}
if(!empty($emails))
{
//$pdf_contents = pts_result_file_output::result_file_to_pdf($test_run_manager->result_file, 'pts-test-results.pdf', 'S');
//$pdf_contents = chunk_split(base64_encode($pdf_contents));
foreach($emails as $email)
{
/*$boundary = md5(uniqid(time()));
$headers = "From: Phoronix Test Suite <no-reply@phoromatic.com>\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"" . $boundary . "\"\r\n\r\n";
$message = "This is a multi-part message in MIME format.\r\n";
$message .= "--" . $boundary . "\r\n";
$message .= "Content-Type: text/html; charset=utf-8\r\n";
$message .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$message .= $html_contents . "\r\n\r\n";
$message .= "--" . $boundary . "\r\n";
$message .= "Content-Type: application/pdf; name=\"pts-test-results.pdf\"\r\n";
$message .= "Content-Transfer-Encoding: base64\r\n";
$message .= "Content-Disposition: attachment; filename=\"pts-test-results.pdf\"\r\n\r\n";
$message .= $pdf_contents . "\r\n\r\n";
$message .= "--" . $boundary . "--";
mail($email, 'Phoronix Test Suite Result File: ' . $test_run_manager->result_file->get_title(), $message, $headers);
echo 'HTML Results Emailed To: ' . $email . PHP_EOL; */
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type:text/html;charset=UTF-8\r\n";
$headers .= "From: Phoromatic - Phoronix Test Suite <no-reply@phoromatic.com>\r\n";
mail($email, 'Phoronix Test Suite Result File: ' . $test_run_manager->result_file->get_title(), $html_contents, $headers);
echo 'HTML Results Emailed To: ' . $email . PHP_EOL;
}
}
}
}
?>

View File

@@ -0,0 +1,67 @@
<?php
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2016, Phoronix Media
Copyright (C) 2016, Michael Larabel
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 log_exporter extends pts_module_interface
{
const module_name = 'Log Exporter';
const module_version = '1.0.0';
const module_description = 'This module allows for easily exporting test run logs and system logs to external locations via specifying the directory paths via the COPY_TEST_RUN_LOGS_TO and COPY_SYSTEM_LOGS_TO environment variables.';
const module_author = 'Michael Larabel';
public static function module_environmental_variables()
{
return array('COPY_TEST_RUN_LOGS_TO', 'COPY_SYSTEM_LOGS_TO');
}
public static function __test_log_output($log_file_path)
{
if(getenv('COPY_TEST_RUN_LOGS_TO') == null)
{
return;
}
$COPY_TEST_RUN_LOGS_TO = getenv('COPY_TEST_RUN_LOGS_TO');
pts_file_io::mkdir($COPY_TEST_RUN_LOGS_TO);
if(is_writable($COPY_TEST_RUN_LOGS_TO))
{
copy($log_file_path, $COPY_TEST_RUN_LOGS_TO . '/' . basename($log_file_path));
}
}
public static function __post_test_run_system_logs($log_file_path)
{
if(getenv('COPY_SYSTEM_LOGS_TO') == null)
{
return;
}
$COPY_SYSTEM_LOGS_TO = getenv('COPY_SYSTEM_LOGS_TO');
pts_file_io::mkdir($COPY_SYSTEM_LOGS_TO);
if(is_writable($COPY_SYSTEM_LOGS_TO))
{
foreach(pts_file_io::glob($log_file_path . '/*') as $sys_log_file)
{
copy($sys_log_file, $COPY_SYSTEM_LOGS_TO . '/' . basename($sys_log_file));
}
}
}
}
?>

496
pts-core/modules/matisk.php Normal file
View File

@@ -0,0 +1,496 @@
<?php
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2016, Michael Larabel
Copyright (C) 2016, Phoronix Media
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 matisk extends pts_module_interface
{
const module_name = 'MATISK';
const module_version = '1.2.0';
const module_description = 'My Automated Test Infrastructure Setup Kit';
const module_author = 'Michael Larabel';
// For values array template [0] = default value [1] = description
private static $ini_struct = array(
'workload' =>
array(
'save_results' => array(true, 'A boolean value of whether to save the test results.'),
'suite' => array(null, 'A string that is an XML test suite for the Phoronix Test Suite. If running a custom collection of tests/suites, first run phoronix-test-suite build-suite.'),
'save_name' => array(null, 'The string to save the test results as.'),
'description' => array(null, 'The test description string.'),
'result_identifier' => array(null, 'The test result identifier string, unless using contexts.')
),
'installation' =>
array(
'install_check' => array(true, 'Check to see that all tests/suites are installed prior to execution.'),
'force_install' => array(false, 'Force all tests/suites to be re-installed each time prior to execution.'),
'external_download_cache' => array(null, 'The option to specify a non-standard PTS External Dependencies download cache directory.'),
'block_phodevi_caching' => array(false, 'If Phodevi should not be caching any hardware/software information.')
),
'general' =>
array(
'upload_to_openbenchmarking' => array(false, 'A boolean value whether to automatically upload the test result to OpenBenchmarking.org'), // Automatic upload to OpenBenchmarking?
// 'open_browser' => false, // Automatically launch web browser to show the results?
),
'environmental_variables' =>
array(
'EXAMPLE_VAR' => array('EXAMPLE', 'The environmental_variables section allows key = value pairs of environmental variables to be set by default.')
),
'set_context' =>
array(
'The pre_install or pre_run fields must be used when using the MATISK context testing functionality. The set_context fields must specify an executable file for setting the context of the system. Passed as the first argument to the respective file is the context string defined by the contexts section of this file. If any of the set_context scripts emit an exit code of 8, the testing process will abort immediately. If any of the set_context scripts emit an exit code of 9, the testing process will skip executing the suite on the current context.',
'pre_install' => array(null, 'An external file to be used for setting the system context prior to test installation.'),
'pre_run' => array(null, 'An external file to be used for setting the system context prior to test execution.'),
// 'interim_run' => array(null, 'An external file to be used for setting the system context in between tests in the execution queue.'),
'post_install' => array(null, 'An external file to be used for setting the system context after the test installation.'),
'post_run' => array(null, 'An external file to be used for setting the system context after all tests have been executed.'),
'reboot_support' => array(false, 'If any of the context scripts cause the system to reboot, set this value to true and the Phoronix Test Suite will attempt to automatically recover itself upon reboot.'),
'context' => array(array(), 'An array of context values.'),
'external_contexts' => array(null, 'An external file for loading a list of contexts, if not loading the list of contexts via the context array in this file. If the external file is a script it will be executed and the standard output will be used for parsing the contexts.'),
'external_contexts_delimiter' => array('EOL', 'The delimiter for the external_contexts contexts list. Special keyword: EOL will use a line break as the delimiter and TAB will use a tab as a delimiter.'),
'reverse_context_order' => array(false, 'A boolean value of whether to reverse the order (from bottom to top) for the execution of a list of contexts.'),
'log_context_outputs' => array(false, 'A boolean value of whether to log the output of the set-context scripts to ~/.phoronix-test-suite/modules-data/matisk/')
)
);
private static $context = null;
private static $ini = array();
private static $matisk_config_dir = null;
private static $skip_test_set = false;
public static function module_info()
{
return null;
}
public static function user_commands()
{
return array('run' => 'run_matisk', 'template' => 'template');
}
public static function template()
{
echo PHP_EOL . '; Sample INI Configuration Template For Phoronix Test Suite MATISK' . PHP_EOL . '; http://www.phoronix-test-suite.com/' . PHP_EOL . PHP_EOL;
foreach(self::$ini_struct as $section => $items)
{
echo PHP_EOL . '[' . $section . ']' . PHP_EOL;
foreach($items as $key => $r)
{
if(!is_array($r))
{
echo PHP_EOL . '; ' . wordwrap($r, 80, PHP_EOL . '; ', true) . PHP_EOL . PHP_EOL;
continue;
}
list($default_value, $description) = $r;
if($description != null)
{
echo '; ' . wordwrap($description, 80, PHP_EOL . '; ', true);
if($default_value !== null && $default_value != array())
{
echo ' The default value is ';
if($default_value === true || $default_value === false)
{
echo $default_value === true ? 'TRUE' : 'FALSE';
}
else
{
echo $default_value;
}
echo '.';
}
echo PHP_EOL;
}
if(is_array($default_value))
{
$default_value = isset($default_value[0]) ? $default_value[0] : null;
echo $key . '[] = ' . $default_value . PHP_EOL;
echo $key . '[] = ' . $default_value;
}
else
{
echo $key . ' = ';
if($default_value === true || $default_value === false)
{
echo $default_value === true ? 'TRUE' : 'FALSE';
}
else
{
echo $default_value;
}
}
echo PHP_EOL . PHP_EOL;
}
}
}
private static function find_file($file)
{
if(is_file($file))
{
$file = $file;
}
else if(is_file(self::$matisk_config_dir . $file))
{
$file = self::$matisk_config_dir . $file;
}
else
{
$file = false;
}
return $file;
}
public static function run_matisk($args)
{
echo PHP_EOL . 'MATISK For The Phoronix Test Suite' . PHP_EOL;
if(!isset($args[0]) || !is_file($args[0]))
{
echo PHP_EOL . 'You must specify a MATISK INI file to load.' . PHP_EOL . PHP_EOL;
return false;
}
self::$matisk_config_dir = dirname($args[0]) . '/';
pts_file_io::mkdir(pts_module::save_dir());
$ini = parse_ini_file($args[0], true);
foreach(self::$ini_struct as $section => $items)
{
foreach($items as $key => $r)
{
if(is_array($r) && !isset($ini[$section][$key]))
{
$ini[$section][$key] = $r[0];
}
}
}
// Checks
if(pts_test_suite::is_suite($ini['workload']['suite']) == false)
{
// See if the XML suite-definition was just tossed into the same directory
if(($xml_file = self::find_file($ini['workload']['suite'] . '.xml')) !== false)
{
pts_file_io::mkdir(PTS_TEST_SUITE_PATH . 'local/' . $ini['workload']['suite']);
copy($xml_file, PTS_TEST_SUITE_PATH . 'local/' . $ini['workload']['suite'] . '/suite-definition.xml');
}
if(pts_test_suite::is_suite($ini['workload']['suite']) == false)
{
echo PHP_EOL . 'A test suite must be specified to execute. If a suite needs to be constructed, run: ' . PHP_EOL . 'phoronix-test-suite build-suite' . PHP_EOL . PHP_EOL;
return false;
}
}
if($ini['set_context']['external_contexts'] != null)
{
switch($ini['set_context']['external_contexts_delimiter'])
{
case 'EOL':
case '':
$ini['set_context']['external_contexts_delimiter'] = PHP_EOL;
break;
case 'TAB':
$ini['set_context']['external_contexts_delimiter'] = "\t";
break;
}
if(($ff = self::find_file($ini['set_context']['external_contexts'])))
{
if(is_executable($ff))
{
$ini['set_context']['context'] = shell_exec($ff . ' 2> /dev/null');
}
else
{
$ini['set_context']['context'] = file_get_contents($ff);
}
}
else
{
// Hopefully it's a command to execute then...
$ini['set_context']['context'] = shell_exec($ini['set_context']['external_contexts'] . ' 2> /dev/null');
}
$ini['set_context']['context'] = explode($ini['set_context']['external_contexts_delimiter'], $ini['set_context']['context']);
}
else if($ini['set_context']['context'] != null && !is_array($ini['set_context']['context']))
{
$ini['set_context']['context'] = array($ini['set_context']['context']);
}
if(is_array($ini['set_context']['context']) && count($ini['set_context']['context']) > 0)
{
foreach($ini['set_context']['context'] as $i => $context)
{
if($context == null)
{
unset($ini['set_context']['context'][$i]);
}
}
// Context testing
if(count($ini['set_context']['context']) > 0 && $ini['set_context']['pre_run'] == null && $ini['set_context']['pre_install'] == null)
{
echo PHP_EOL . 'The pre_run or pre_install set_context fields must be set in order to set the system\'s context.' . PHP_EOL;
return false;
}
if($ini['set_context']['reverse_context_order'])
{
$ini['set_context']['context'] = array_reverse($ini['set_context']['context']);
}
}
if(pts_strings::string_bool($ini['workload']['save_results']))
{
if($ini['workload']['save_name'] == null)
{
echo PHP_EOL . 'The save_name field cannot be left empty when saving the test results.' . PHP_EOL;
return false;
}
/*
if($ini['workload']['result_identifier'] == null)
{
echo PHP_EOL . 'The result_identifier field cannot be left empty when saving the test results.' . PHP_EOL;
return false;
}
*/
}
if(!empty($ini['environmental_variables']) && is_array($ini['environmental_variables']))
{
foreach($ini['environmental_variables'] as $key => $value)
{
putenv(trim($key) . '=' . trim($value));
}
}
if(empty($ini['set_context']['context']))
{
$ini['set_context']['context'] = array($ini['workload']['result_identifier']);
}
if(pts_strings::string_bool($ini['set_context']['log_context_outputs']))
{
pts_file_io::mkdir(pts_module::save_dir() . $ini['workload']['save_name']);
}
$spent_context_file = pts_module::save_dir() . $ini['workload']['save_name'] . '.spent-contexts';
if(!is_file($spent_context_file))
{
touch($spent_context_file);
}
else
{
// If recovering from an existing run, don't rerun contexts that were already executed
$spent_contexts = pts_file_io::file_get_contents($spent_context_file);
$spent_contexts = explode(PHP_EOL, $spent_contexts);
foreach($spent_contexts as $sc)
{
if(($key = array_search($sc, $ini['set_context']['context'])) !== false)
{
unset($ini['set_context']['context'][$key]);
}
}
}
if($ini['set_context']['reboot_support'] && phodevi::is_linux())
{
// In case a set-context involves a reboot, auto-recover
$xdg_config_home = is_dir('/etc/xdg/autostart') && is_writable('/etc/xdg/autostart') ? '/etc/xdg/autostart' : pts_client::read_env('XDG_CONFIG_HOME');
if($xdg_config_home == false)
{
$xdg_config_home = pts_client::user_home_directory() . '.config';
}
if($xdg_config_home != false && is_dir($xdg_config_home))
{
$autostart_dir = $xdg_config_home . '/autostart/';
pts_file_io::mkdir($xdg_config_home . '/autostart/');
}
file_put_contents($xdg_config_home . '/autostart/phoronix-test-suite-matisk.desktop', '
[Desktop Entry]
Name=Phoronix Test Suite Matisk Recovery
GenericName=Phoronix Test Suite
Comment=Matisk Auto-Recovery Support
Exec=gnome-terminal -e \'phoronix-test-suite matisk ' . $args[0] . '\'
Icon=phoronix-test-suite
Type=Application
Encoding=UTF-8
Categories=System;Monitor;');
}
if($ini['installation']['block_phodevi_caching'])
{
// Block Phodevi caching if changing out system components and there is a chance one of the strings of changed contexts might be cached (e.g. OpenGL user-space driver)
phodevi::$allow_phodevi_caching = false;
}
if(phodevi::system_uptime() < 60)
{
echo PHP_EOL . 'Sleeping 45 seconds while waiting for the system to settle...' . PHP_EOL;
sleep(45);
}
self::$ini = $ini;
$total_context_count = count(self::$ini['set_context']['context']);
while(($context = array_shift(self::$ini['set_context']['context'])) !== null)
{
echo PHP_EOL . ($total_context_count - count(self::$ini['set_context']['context'])) . ' of ' . $total_context_count . ' in test execution queue [' . $context . ']' . PHP_EOL . PHP_EOL;
self::$context = $context;
if(pts_strings::string_bool(self::$ini['installation']['install_check']) || $ini['set_context']['pre_install'] != null)
{
self::process_user_config_external_hook_process('pre_install');
$force_install = false;
$no_prompts = true;
if(pts_strings::string_bool(self::$ini['installation']['force_install']))
{
$force_install = true;
}
if(self::$ini['installation']['external_download_cache'] != null)
{
pts_test_install_manager::add_external_download_cache(self::$ini['installation']['external_download_cache']);
}
// Do the actual test installation
pts_test_installer::standard_install(self::$ini['workload']['suite'], $force_install, $no_prompts);
self::process_user_config_external_hook_process('post_install');
}
$batch_mode = false;
$auto_mode = true;
$test_run_manager = new pts_test_run_manager($batch_mode, $auto_mode);
if($test_run_manager->initial_checks(self::$ini['workload']['suite']) == false)
{
return false;
}
if(self::$skip_test_set == false)
{
self::process_user_config_external_hook_process('pre_run');
// Load the tests to run
if($test_run_manager->load_tests_to_run(self::$ini['workload']['suite']) == false)
{
return false;
}
// Save results?
$result_identifier = $ini['workload']['result_identifier'];
if($result_identifier == null)
{
$result_identifier = '$MATISK_CONTEXT';
}
// Allow $MATIISK_CONTEXT as a valid user variable to pass it...
$result_identifier = str_replace('$MATISK_CONTEXT', self::$context, $result_identifier);
$test_run_manager->set_save_name(self::$ini['workload']['save_name']);
$test_run_manager->set_results_identifier($result_identifier);
$test_run_manager->set_description(self::$ini['workload']['description']);
// Don't upload results unless it's the last in queue where the context count is now 0
$test_run_manager->auto_upload_to_openbenchmarking((count(self::$ini['set_context']['context']) == 0 && self::$ini['general']['upload_to_openbenchmarking']));
// Run the actual tests
$test_run_manager->pre_execution_process();
$test_run_manager->call_test_runs();
$test_run_manager->post_execution_process();
}
self::$skip_test_set = false;
file_put_contents($spent_context_file, self::$context . PHP_EOL, FILE_APPEND);
pts_file_io::unlink(pts_module::save_dir() . self::$context . '.last-call');
self::process_user_config_external_hook_process('post_run');
}
unlink($spent_context_file);
isset($xdg_config_home) && pts_file_io::unlink($xdg_config_home . '/autostart/phoronix-test-suite-matisk.desktop');
}
protected static function process_user_config_external_hook_process($process)
{
// Check to not run the same process
$last_call_file = pts_module::save_dir() . self::$context . '.last-call';
if(is_file($last_call_file))
{
$check = pts_file_io::file_get_contents($last_call_file);
if($process == $check)
{
unlink($last_call_file);
return false;
}
}
$process != 'post_run' && file_put_contents($last_call_file, $process);
if(self::$ini['set_context'][$process])
{
$command = self::find_file(self::$ini['set_context'][$process]) ? self::find_file(self::$ini['set_context'][$process]) : self::$ini['set_context'][$process];
$descriptor_spec = array(
0 => array('pipe', 'r'),
1 => array('pipe', 'w'),
2 => array('pipe', 'w')
);
$env_vars = null;
pts_client::$display->test_run_instance_error('Running ' . $process . ' set-context script.');
if(is_executable($command))
{
// Pass the context as the first argument to the string
$command .= ' ' . self::$context;
}
else
{
// Else find $MATISK_CONTEXT in the command string
$command = str_replace('$MATISK_CONTEXT', self::$context, $command);
}
$proc = proc_open($command, $descriptor_spec, $pipes, null, $env_vars);
echo $std_output = stream_get_contents($pipes[1]);
$return_value = proc_close($proc);
if(pts_strings::string_bool(self::$ini['set_context']['log_context_outputs']))
{
file_put_contents(pts_module::save_dir() . self::$ini['workload']['save_name'] . '/' . self::$context . '-' . $process . '.txt', $std_output);
}
switch($return_value)
{
case 8:
exit(0);
case 9:
self::$skip_test_set = true;
break;
}
}
}
}
?>

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2015, Phoronix Media
Copyright (C) 2015, Michael Larabel
Copyright (C) 2015 - 2016, Phoronix Media
Copyright (C) 2015 - 2016, Michael Larabel
perf_per_dollar.php: This module is derived from the system_monitor module
This program is free software; you can redistribute it and/or modify
@@ -24,7 +24,7 @@
class perf_per_dollar extends pts_module_interface
{
const module_name = 'Performance Per Dollar/Cost Calculator';
const module_version = '0.1.0';
const module_version = '0.1.1';
const module_description = 'Setting the COST_PERF_PER_DOLLAR= environment variable to whatever value of the system cost/component you are running a comparison on will yield extra graphs that calculate the performance-per-dollar based on the test being run. The COST_PERF_PER_DOLLAR environment variable is applied just to the current test run identifier.';
const module_author = 'Michael Larabel';
@@ -67,18 +67,27 @@ class perf_per_dollar extends pts_module_interface
}
public static function __post_test_run_process(&$result_file)
{
if(self::$successful_test_run_request && self::$successful_test_run_request->test_profile->get_display_format() == 'BAR_GRAPH' && self::$successful_test_run_request->test_profile->get_result_proportion() == 'HIB')
if(self::$successful_test_run_request && self::$successful_test_run_request->test_profile->get_display_format() == 'BAR_GRAPH')
{
// This copy isn't needed but it's shorter and from port from system_monitor where there can be multiple items tracked
$test_result = clone self::$successful_test_run_request;
$test_result->test_profile->set_identifier(null);
$test_result->set_used_arguments_description('Performance / Cost - ' . $test_result->get_arguments_description());
$test_result->set_used_arguments('dollar comparison ' . $test_result->get_arguments());
$test_result->test_profile->set_result_scale($test_result->test_profile->get_result_scale() . ' Per Dollar');
$test_result->test_result_buffer = new pts_test_result_buffer();
$test_result->test_result_buffer->add_test_result(self::$result_identifier, pts_math::set_precision($test_result->active->get_result() / self::$COST_PERF_PER_DOLLAR), null, array('install-footnote' => '$' . self::$COST_PERF_PER_DOLLAR . ' reported cost.'));
$result_file->add_result($test_result);
array_push(self::$perf_per_dollar_collection, $test_result->active->get_result());
$result = 0;
if(self::$successful_test_run_request->test_profile->get_result_proportion() == 'HIB')
{
$result = pts_math::set_precision(self::$successful_test_run_request->active->get_result() / self::$COST_PERF_PER_DOLLAR);
}
if($result != 0)
{
// This copy isn't needed but it's shorter and from port from system_monitor where there can be multiple items tracked
$test_result = clone self::$successful_test_run_request;
$test_result->test_profile->set_identifier(null);
$test_result->set_used_arguments_description('Performance / Cost - ' . $test_result->get_arguments_description());
$test_result->set_used_arguments('dollar comparison ' . $test_result->get_arguments());
$test_result->test_profile->set_result_scale($test_result->test_profile->get_result_scale() . ' Per Dollar');
$test_result->test_result_buffer = new pts_test_result_buffer();
$test_result->test_result_buffer->add_test_result(self::$result_identifier, $result, null, array('install-footnote' => '$' . self::$COST_PERF_PER_DOLLAR . ' reported cost.'));
$result_file->add_result($test_result);
self::$perf_per_dollar_collection[] = $test_result->active->get_result();
}
}
self::$successful_test_run_request = null;
}

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2009 - 2015, Phoronix Media
Copyright (C) 2009 - 2015, Michael Larabel
Copyright (C) 2009 - 2016, Phoronix Media
Copyright (C) 2009 - 2016, Michael Larabel
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
@@ -23,7 +23,7 @@
class phoromatic extends pts_module_interface
{
const module_name = 'Phoromatic Client';
const module_version = '1.0.0';
const module_version = '1.1.0';
const module_description = 'The Phoromatic client is used for connecting to a Phoromatic server (Phoromatic.com or a locally run server) to facilitate the automatic running of tests, generally across multiple test nodes in a routine manner. For more details visit http://www.phoromatic.com/. This module is intended to be used with Phoronix Test Suite 5.2+ clients and servers.';
const module_author = 'Phoronix Media';
@@ -33,10 +33,14 @@ class phoromatic extends pts_module_interface
private static $server_ws_port = null;
private static $is_running_as_phoromatic_node = false;
private static $log_file = null;
private static $limit_network_communication = false;
private static $p_save_identifier = null;
private static $p_schedule_id = null;
private static $p_trigger_id = null;
private static $benchmark_ticket_id = null;
private static $in_stress_mode = false;
private static $has_run_server_setup_func = false;
private static $test_run_manager = null;
@@ -238,6 +242,7 @@ class phoromatic extends pts_module_interface
}
}
// Randomize the thread work a little bit to ensure not hitting the systems at the same time
sleep(rand(60, 90));
}
}
@@ -286,7 +291,7 @@ class phoromatic extends pts_module_interface
$to_post['s'] = phodevi::system_software(true);
$to_post['n'] = phodevi::read_property('system', 'hostname');
$to_post['msi'] = PTS_MACHINE_SELF_ID;
return pts_network::http_upload_via_post('http://' . $server_address . ':' . $server_http_port . '/phoromatic.php', $to_post);
return pts_network::http_upload_via_post('http://' . $server_address . ':' . $server_http_port . '/phoromatic.php', $to_post, false);
}
protected static function update_system_status($current_task, $estimated_time_remaining = 0, $percent_complete = 0, $for_schedule = null, $estimate_to_next_comm = 0)
{
@@ -297,12 +302,27 @@ class phoromatic extends pts_module_interface
pts_client::$pts_logger && pts_client::$pts_logger->log($current_task);
$last_msg = $current_task;
if(self::$limit_network_communication)
{
static $last_comm_time = 0;
if(time() > ($last_comm_time + 800 + rand(0, 180)))
{
// It's been at least half hour since last update, so report in state...
$last_comm_time = time();
}
else
{
return;
}
}
return phoromatic::upload_to_remote_server(array(
'r' => 'update_system_status',
'a' => $current_task,
'time' => $estimated_time_remaining,
'pc' => $percent_complete,
'sched' => (!empty($for_schedule) ? $for_schedule : self::$p_schedule_id),
'bid' => (!empty(self::$benchmark_ticket_id) ? self::$benchmark_ticket_id : 0),
'o' => $estimate_to_next_comm
));
}
@@ -314,6 +334,8 @@ class phoromatic extends pts_module_interface
}
protected static function setup_server_addressing($server_string = null)
{
self::$has_run_server_setup_func = true;
if(isset($server_string[0]) && strpos($server_string[0], '/', strpos($server_string[0], ':')) > 6)
{
pts_client::$pts_logger && pts_client::$pts_logger->log('Attempting to connect to Phoromatic Server: ' . $server_string[0]);
@@ -447,7 +469,7 @@ class phoromatic extends pts_module_interface
if(!$server_setup)
{
if(PTS_IS_DAEMONIZED_SERVER_PROCESS)
if(getenv('PTS_NO_REBOOT_ON_NETWORK_FAILURE') == false && PTS_IS_DAEMONIZED_SERVER_PROCESS)
{
if(pts_client::executable_in_path('reboot'))
{
@@ -490,7 +512,7 @@ class phoromatic extends pts_module_interface
}
else if(PTS_IS_DAEMONIZED_SERVER_PROCESS && $times_failed > 10)
{
if(pts_client::executable_in_path('reboot'))
if(getenv('PTS_NO_REBOOT_ON_NETWORK_FAILURE') == false && pts_client::executable_in_path('reboot'))
{
shell_exec('reboot');
sleep(5);
@@ -526,9 +548,16 @@ class phoromatic extends pts_module_interface
}
}
self::$limit_network_communication = isset($json['phoromatic']['settings']['LimitNetworkCommunication']) && pts_strings::string_bool($json['phoromatic']['settings']['LimitNetworkCommunication']);
if(self::$limit_network_communication)
{
// Sleep to ensure network communication is somewhat random in case all systems started at same time
sleep(0, 20);
}
if($just_started)
{
if(PTS_IS_DAEMONIZED_SERVER_PROCESS)
if(PTS_IS_DAEMONIZED_SERVER_PROCESS && !self::$limit_network_communication)
{
$pid = pcntl_fork();
if($pid == 0)
@@ -559,7 +588,7 @@ class phoromatic extends pts_module_interface
{
case 'install':
phoromatic::update_system_status('Installing Tests');
pts_suite_nye_XmlReader::set_temporary_suite('pre-seed', $json['phoromatic']['test_suite']);
pts_test_suite::set_temporary_suite('pre-seed', $json['phoromatic']['test_suite']);
pts_test_installer::standard_install('pre-seed', false, true);
break;
case 'benchmark':
@@ -570,13 +599,14 @@ class phoromatic extends pts_module_interface
$benchmark_timer = time();
self::$is_running_as_phoromatic_node = true;
$suite_identifier = sha1(time() . rand(2, 1000));
pts_suite_nye_XmlReader::set_temporary_suite($suite_identifier, $json['phoromatic']['test_suite']);
pts_test_suite::set_temporary_suite($suite_identifier, $json['phoromatic']['test_suite']);
self::$p_save_identifier = $json['phoromatic']['trigger_id'];
$phoromatic_results_identifier = self::$p_save_identifier;
$phoromatic_save_identifier = $json['phoromatic']['save_identifier'];
self::$p_schedule_id = isset($json['phoromatic']['schedule_id']) ? $json['phoromatic']['schedule_id'] : false;
self::$p_trigger_id = self::$p_save_identifier;
$benchmark_ticket_id = isset($json['phoromatic']['benchmark_ticket_id']) ? $json['phoromatic']['benchmark_ticket_id'] : null;
self::$benchmark_ticket_id = $benchmark_ticket_id;
phoromatic::update_system_status('Running Benchmarks For: ' . $phoromatic_save_identifier);
if(pts_strings::string_bool($json['phoromatic']['settings']['RunInstallCommand']))
@@ -593,15 +623,47 @@ class phoromatic extends pts_module_interface
}
}
$env_vars = isset($json['phoromatic']['environment_variables']) ? pts_strings::parse_value_string_vars($json['phoromatic']['environment_variables']) : array();
$is_stress_run = isset($env_vars['PTS_CONCURRENT_TEST_RUNS']) && $env_vars['PTS_CONCURRENT_TEST_RUNS'] > 1;
// Do the actual running
phodevi::clear_cache();
self::$test_run_manager = new pts_test_run_manager(array(
if($is_stress_run)
{
self::$test_run_manager = new pts_stress_run_manager(array(
'UploadResults' => false,
'SaveResults' => false,
'PromptForTestDescription' => false,
'RunAllTestCombinations' => false,
'PromptSaveName' => false,
'PromptForTestIdentifier' => false,
'OpenBrowser' => false
), true);
if(self::$test_run_manager->initial_checks($suite_identifier, 'SHORT'))
{
if(self::$test_run_manager->load_tests_to_run($suite_identifier))
{
self::$test_run_manager->action_on_stress_log_set(array('phoromatic', 'upload_stress_log_sane'));
self::$in_stress_mode = $phoromatic_save_identifier;
self::$test_run_manager->multi_test_stress_run_execute($env_vars['PTS_CONCURRENT_TEST_RUNS'], $env_vars['TOTAL_LOOP_TIME']);
self::$in_stress_mode = false;
self::upload_stress_log(self::$test_run_manager->get_stress_log());
}
}
self::$benchmark_ticket_id = null;
break;
}
else
{
self::$test_run_manager = new pts_test_run_manager(array(
'UploadResults' => (isset($json['phoromatic']['settings']['UploadResultsToOpenBenchmarking']) && pts_strings::string_bool($json['phoromatic']['settings']['UploadResultsToOpenBenchmarking'])),
'SaveResults' => true,
'RunAllTestCombinations' => false,
'OpenBrowser' => false
), true);
}
if(self::$test_run_manager->initial_checks($suite_identifier, 'SHORT'))
{
// Load the tests to run
@@ -622,25 +684,9 @@ class phoromatic extends pts_module_interface
// Save results?
// Run the actual tests
if(isset($env_vars['PTS_CONCURRENT_TEST_RUNS']) && $env_vars['PTS_CONCURRENT_TEST_RUNS'] > 1)
{
$total_loop_time = isset($env_vars['TOTAL_LOOP_TIME']) ? $env_vars['TOTAL_LOOP_TIME'] : false;
pts_client::$pts_logger->log('STRESS / MULTI-TEST EXECUTION STARTED @ ' . date('Y-m-d H:i:s'));
pts_client::$pts_logger->log('CONCURRENT RUNS = ' . $env_vars['PTS_CONCURRENT_TEST_RUNS'] . ' TOTAL LOOP TIME = ' . $total_loop_time);
$r = self::$test_run_manager->multi_test_stress_run_execute($env_vars['PTS_CONCURRENT_TEST_RUNS'], $total_loop_time);
if($r == false)
{
return;
}
pts_client::$pts_logger->log('STRESS / MULTI-TEST EXECUTION ENDED @ ' . date('Y-m-d H:i:s'));
}
else
{
self::$test_run_manager->auto_save_results($phoromatic_save_identifier, $phoromatic_results_identifier, (isset($json['phoromatic']['test_description']) ? $json['phoromatic']['test_description'] : 'A Phoromatic run.'));
self::$test_run_manager->pre_execution_process();
self::$test_run_manager->call_test_runs();
}
self::$test_run_manager->auto_save_results($phoromatic_save_identifier, $phoromatic_results_identifier, (isset($json['phoromatic']['test_description']) ? $json['phoromatic']['test_description'] : 'A Phoromatic run.'));
self::$test_run_manager->pre_execution_process();
self::$test_run_manager->call_test_runs();
phoromatic::update_system_status('Benchmarks Completed For: ' . $phoromatic_save_identifier);
self::$test_run_manager->post_execution_process();
@@ -657,13 +703,14 @@ class phoromatic extends pts_module_interface
}
}
if(isset($json['phoromatic']['post_install_set_context']))
if(isset($json['phoromatic']['post_run_set_context']))
{
phoromatic::set_user_context($json['phoromatic']['post_install_set_context'], self::$p_trigger_id, self::$p_schedule_id, 'POST_RUN');
phoromatic::set_user_context($json['phoromatic']['post_run_set_context'], self::$p_trigger_id, self::$p_schedule_id, 'POST_RUN');
}
}
self::$p_schedule_id = null;
self::$is_running_as_phoromatic_node = false;
self::$benchmark_ticket_id = null;
break;
case 'reboot':
echo PHP_EOL . 'Phoromatic received a remote command to reboot.' . PHP_EOL;
@@ -726,6 +773,8 @@ class phoromatic extends pts_module_interface
{
if($server_response == false)
sleep(rand(10, 30));
else if(self::$limit_network_communication)
sleep(60, 240);
else
sleep(60);
}
@@ -833,6 +882,44 @@ class phoromatic extends pts_module_interface
return $res;
}
private static function upload_stress_log($stress_log)
{
// Upload Logs to Phoromatic
if($stress_log == null || self::$benchmark_ticket_id == null)
{
return;
}
$times_tried = 0;
do
{
if($times_tried > 0)
{
sleep(rand(5, 20));
}
$res = phoromatic::upload_to_remote_server(array(
'r' => 'stress_log_upload',
'bid' => self::$benchmark_ticket_id,
'l' => $stress_log
));
$times_tried++;
}
while($res == false && $times_tried < 4);
return $res;
}
public static function upload_stress_log_sane($stress_log)
{
static $last_log_upload = 0;
if(time() > ($last_log_upload + 60))
{
self::upload_stress_log($stress_log);
$last_log_upload = time();
}
}
public static function recent_phoromatic_server_results()
{
self::setup_server_addressing();
@@ -958,6 +1045,13 @@ class phoromatic extends pts_module_interface
}
public static function __pre_test_install($test_identifier)
{
/* if(self::$has_run_server_setup_func == false)
{
self::setup_server_addressing();
}
*/
// XXX finish wiring in the above code to various parts for making auto-reporting from clients
if(!self::$is_running_as_phoromatic_node)
{
return false;
@@ -971,14 +1065,31 @@ class phoromatic extends pts_module_interface
$last_update_time = time();
}
}
public static function __pre_test_run(&$pts_test_result)
public static function __pre_test_run($pts_test_result)
{
if(!self::$is_running_as_phoromatic_node)
{
return false;
}
phoromatic::update_system_status('Running: ' . $pts_test_result->test_profile->get_identifier() . ($pts_test_result->get_arguments_description() != null ? ' [' . $pts_test_result->get_arguments_description() . ']' : null),
if(self::$in_stress_mode)
{
static $time_in_stress_run = 0;
$msg = 'Stress-Run Testing';
if(($time_in_stress_run + (60 * 60)) > time())
{
// Don't report this same string so often...
return;
}
$time_in_stress_run = time();
}
else
{
$msg = 'Running: ' . $pts_test_result->test_profile->get_identifier() . ($pts_test_result->get_arguments_description() != null ? ' [' . $pts_test_result->get_arguments_description() . ']' : null);
}
phoromatic::update_system_status($msg,
ceil(self::$test_run_manager->get_estimated_run_time() / 60),
self::$test_run_manager->get_percent_complete(),
null,

View File

@@ -0,0 +1,84 @@
<?php
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2017, Phoronix Media
Copyright (C) 2017, Michael Larabel
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 report_test_run_times extends pts_module_interface
{
const module_name = 'Report Test Run Time Graphs';
const module_version = '1.0.0';
const module_description = 'Setting the RUN_TIMES_ARE_A_BENCHMARK=1 environment variable will automatically create additional graphs for each test run plotting the run-time needed for each test being executed.';
const module_author = 'Michael Larabel';
private static $successful_test_run_request = null;
private static $result_identifier;
public static function module_environmental_variables()
{
return array('RUN_TIMES_ARE_A_BENCHMARK');
}
public static function module_info()
{
return null;
}
public static function __run_manager_setup(&$test_run_manager)
{
if(getenv('RUN_TIMES_ARE_A_BENCHMARK') != false)
{
echo PHP_EOL . 'The Phoronix Test Suite will generate graphs of test run-times.' . PHP_EOL;
}
else
{
return pts_module::MODULE_UNLOAD; // This module doesn't have anything else to do
}
$test_run_manager->force_results_save();
}
public static function __pre_run_process(&$test_run_manager)
{
self::$result_identifier = $test_run_manager->get_results_identifier();
}
public static function __post_test_run($test_run_request)
{
self::$successful_test_run_request = clone $test_run_request;
}
public static function __post_test_run_process(&$result_file)
{
if(self::$successful_test_run_request && !empty(self::$successful_test_run_request->test_run_times))
{
$result = round(array_sum(self::$successful_test_run_request->test_run_times) / count(self::$successful_test_run_request->test_run_times), 2);
if($result > 0)
{
// This copy isn't needed but it's shorter and from port from system_monitor where there can be multiple items tracked
$test_result = clone self::$successful_test_run_request;
$test_result->test_profile->set_identifier(null);
$test_result->set_used_arguments_description('Test Run Time' . ($test_result->get_arguments_description() != null ? ' - ' . $test_result->get_arguments_description() : null ));
$test_result->set_used_arguments('test run time ' . $test_result->get_arguments());
$test_result->test_profile->set_result_scale('Seconds');
$test_result->test_profile->set_result_proportion('LIB');
$test_result->test_result_buffer = new pts_test_result_buffer();
$test_result->test_result_buffer->add_test_result(self::$result_identifier, $result, implode(':', self::$successful_test_run_request->test_run_times));
$result_file->add_result($test_result);
}
}
self::$successful_test_run_request = null;
}
}
?>

View File

@@ -0,0 +1,98 @@
<?php
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2016, Phoronix Media
Copyright (C) 2016, Michael Larabel
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 results_custom_export extends pts_module_interface
{
const module_name = 'Custom Result Export Methods';
const module_version = '1.0.0';
const module_description = 'A simple example module about interfacing with Phoronix Test Suite core for dumping result files in a custom format.';
const module_author = 'Michael Larabel';
public static function module_info()
{
return null;
}
public static function user_commands()
{
return array('nf' => 'nf_format');
}
public static function nf_format($r)
{
if(pts_types::is_result_file($r[0]))
{
$result_file = new pts_result_file($r[0]);
$result_output = $result_file->get_title() . PHP_EOL;
$system_identifiers = array();
$system_hardware = array();
$system_software = array();
$test_times = array();
foreach($result_file->get_systems() as $system)
{
$system_identifiers[] = $system->get_identifier();
$system_hardware[] = $system->get_hardware();
$system_software[] = $system->get_software();
$test_times[$system->get_identifier()] = date('Y-m-d', strtotime($system->get_timestamp()));
}
/*
// Show the system identifiers?
for($i = 0; $i < count($system_identifiers); $i++)
{
$result_output .= $system_identifiers[$i] . ': ' . PHP_EOL . PHP_EOL;
$result_output .= "\t" . $system_hardware[$i] . PHP_EOL . PHP_EOL . "\t" . $system_software[$i] . PHP_EOL . PHP_EOL;
}*/
$result_lines = array();
foreach($result_file->get_result_objects() as $result_object)
{
foreach($result_object->test_result_buffer->buffer_items as &$buffer)
{
// DUMP in DATE/HARDWARE_TYPE/TEST_TYPE/TEST/ARGUMENTS/IDENTIFIER format
$l = array(
$test_times[$buffer->get_result_identifier()],
$result_object->test_profile->get_test_hardware_type(),
$result_object->test_profile->get_test_software_type(),
$result_object->test_profile->get_title() . ' ' . $result_object->test_profile->get_app_version(),
$result_object->get_arguments_description(),
$buffer->get_result_identifier()
);
$result_lines[implode('/', $l)] = $buffer->get_result_value();
}
}
ksort($result_lines);
$longest_key = max(array_map('strlen', array_keys($result_lines))) + 1;
foreach($result_lines as $key => $value)
{
$result_output .= sprintf('%-' . $longest_key . 'ls = %s', $key, $value) . PHP_EOL;
}
echo $result_output . PHP_EOL;
}
else
{
echo 'Not a recognized result file: ' . $r . PHP_EOL;
}
}
}
?>

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2008 - 2015, Phoronix Media
Copyright (C) 2008 - 2015, Michael Larabel
Copyright (C) 2008 - 2016, Phoronix Media
Copyright (C) 2008 - 2016, Michael Larabel
system_monitor.php: System sensor monitoring module for PTS
This program is free software; you can redistribute it and/or modify
@@ -25,12 +25,13 @@
class system_monitor extends pts_module_interface
{
const module_name = 'System Monitor';
const module_version = '3.2.0';
const module_version = '3.3.0';
const module_description = 'This module contains sensor monitoring support.';
const module_author = 'Michael Larabel';
private static $result_identifier = null;
private static $to_monitor = array();
private static $monitor_pids = array();
private static $monitor_test_count = 0;
private static $individual_test_run_request = null;
@@ -51,7 +52,7 @@ class system_monitor extends pts_module_interface
public static function module_environmental_variables()
{
return array('MONITOR', 'PERFORMANCE_PER_WATT', 'MONITOR_INTERVAL' );
return array('MONITOR', 'PERFORMANCE_PER_WATT', 'MONITOR_INTERVAL', 'MONITOR_PER_RUN' );
}
public static function module_info()
@@ -99,7 +100,7 @@ class system_monitor extends pts_module_interface
self::pts_start_monitoring();
}
catch (Exception $e)
catch(Exception $e)
{
echo PHP_EOL . "Unloading system monitor: " . $e->getMessage();
return pts_module::MODULE_UNLOAD;
@@ -114,14 +115,15 @@ class system_monitor extends pts_module_interface
return;
}
// We're going to run the test for the first time (but will probably repeat it several times).
self::$test_run_try_number = 0;
self::$individual_test_run_request = clone $test_run_request;
// Just to pad in some idling into the run process
sleep(self::$sensor_monitoring_frequency);
self::save_log_offsets('pre-test');
// We're going to run the test for the first time (but will probably repeat it several times).
self::$test_run_try_number = 0;
self::save_log_offsets('run');
self::$test_run_timer = time();
}
public static function __test_running($test_process)
@@ -133,20 +135,26 @@ class system_monitor extends pts_module_interface
$parent_pid = $proc_status['pid'];
file_put_contents('/sys/fs/cgroup/' . $controller . '/' . self::$cgroup_name .'/tasks', $parent_pid);
}
if(self::$per_test_try_monitoring)
{
self::save_log_offsets('try');
}
}
public static function __interim_test_run()
{
if(self::$per_test_try_monitoring)
{
self::save_log_offsets('interim');
self::$test_run_try_number++;
self::save_log_offsets('try');
}
}
public static function __post_test_run_success($test_run_request)
{
if(self::$per_test_try_monitoring)
{
self::save_log_offsets('interim');
self::$test_run_try_number++;
self::save_log_offsets('try');
}
self::$successful_test_run_request = clone $test_run_request;
@@ -192,6 +200,27 @@ class system_monitor extends pts_module_interface
{
self::process_summary_results($sensor, $test_run_manager);
}
foreach(self::$monitor_pids as $pid)
{
if(function_exists('posix_kill'))
{
posix_kill($pid, SIGTERM);
}
else if(pts_client::executable_in_path('kill'))
{
shell_exec('kill ' . $pid . ' > /dev/null 2>&1');
}
else
{
// TODO XXX
continue;
}
pcntl_waitpid($pid, $status);
}
self::$monitor_pids = array();
}
public static function __post_run_process()
{
@@ -211,6 +240,7 @@ class system_monitor extends pts_module_interface
if($is_instant === false)
{
$pid = pts_module::pts_timed_function('pts_monitor_update', self::$sensor_monitoring_frequency, array(array($sensor)));
self::$monitor_pids[] = $pid;
}
else
{
@@ -220,7 +250,8 @@ class system_monitor extends pts_module_interface
if(!empty($instant_sensors))
{
pts_module::pts_timed_function('pts_monitor_update', self::$sensor_monitoring_frequency, array($instant_sensors));
$pid = pts_module::pts_timed_function('pts_monitor_update', self::$sensor_monitoring_frequency, array($instant_sensors));
self::$monitor_pids[] = $pid;
}
}
@@ -228,14 +259,14 @@ class system_monitor extends pts_module_interface
public static function pts_monitor_update($sensor_list)
{
foreach($sensor_list as $sensor)
{
$sensor_value = phodevi::read_sensor($sensor);
{
$sensor_value = phodevi::read_sensor($sensor);
if($sensor_value != -1 && pts_module::is_file('logs/' . phodevi::sensor_object_identifier($sensor)))
{
pts_module::save_file('logs/' . phodevi::sensor_object_identifier($sensor), $sensor_value, true);
}
}
if($sensor_value != -1 && pts_module::is_file('logs/' . phodevi::sensor_object_identifier($sensor)))
{
pts_module::save_file('logs/' . phodevi::sensor_object_identifier($sensor), $sensor_value, true);
}
}
}
private static function parse_monitor_log($log_file, $start_offset = 0, $end_offset = -1)
@@ -260,7 +291,7 @@ class system_monitor extends pts_module_interface
if(!empty($line) && $line >= 0)
{
array_push($results, $line);
$results[] = $line;
}
}
@@ -282,17 +313,17 @@ class system_monitor extends pts_module_interface
if(!in_array('all.' . $sensor[0], $args))
{
array_push($args, 'all.' . $sensor[0]);
$args[] = 'all.' . $sensor[0];
}
array_push($args, phodevi::sensor_identifier($sensor));
$args[] = phodevi::sensor_identifier($sensor);
if($supported_devices !== NULL)
{
array_push($args, 'all.' . phodevi::sensor_identifier($sensor));
$args[] = 'all.' . phodevi::sensor_identifier($sensor);
foreach($supported_devices as $device)
{
array_push($args, phodevi::sensor_identifier($sensor) . '.' . $device);
$args[] = phodevi::sensor_identifier($sensor) . '.' . $device;
}
}
@@ -343,7 +374,7 @@ class system_monitor extends pts_module_interface
if($parameter !== NULL)
{
array_push($to_monitor[$type][$name], $parameter);
$to_monitor[$type][$name][] = $parameter;
}
}
@@ -397,10 +428,10 @@ class system_monitor extends pts_module_interface
if(count(self::$to_monitor) == 0)
{
throw new Exception('nothing to monitor');
throw new Exception('No Supported Sensors Selected To Monitor');
sleep(2);
}
}
private static function create_sensor_instances(&$sensor, &$sensor_parameters, $create_all)
{
if($create_all)
@@ -448,7 +479,7 @@ class system_monitor extends pts_module_interface
if($sensor[0] === 'cgroup')
{
$cgroup_controller = call_user_func(array($sensor[2], 'get_cgroup_controller'));
array_push(self::$cgroup_enabled_controllers, $cgroup_controller );
pts_arrays::unique_push(self::$cgroup_enabled_controllers, $cgroup_controller );
self::cgroup_create(self::$cgroup_name, $cgroup_controller);
$param = self::$cgroup_name;
}
@@ -456,7 +487,7 @@ class system_monitor extends pts_module_interface
if(call_user_func(array($sensor[2], 'parameter_check'), $param) === true)
{
$sensor_object = new $sensor[2]($instance, $param);
array_push(self::$to_monitor, $sensor_object);
self::$to_monitor[] = $sensor_object;
pts_module::save_file('logs/' . phodevi::sensor_object_identifier($sensor_object));
}
}
@@ -505,8 +536,7 @@ class system_monitor extends pts_module_interface
$current_user = exec('whoami');
$mkdir_cmd = 'mkdir ' . $cgroup_path;
$chmod_cmd = 'chown ' . $current_user . ' ' . $cgroup_path . '/tasks';
$command = $sudo_cmd . '"' . $mkdir_cmd . ' && ' . $chmod_cmd . '"';
var_dump($command);
$command = $sudo_cmd . '"' . $mkdir_cmd . ' && ' . $chmod_cmd . '"';
exec($command);
}
@@ -539,13 +569,13 @@ class system_monitor extends pts_module_interface
foreach(self::$to_monitor as &$sensor)
{
$log_f = pts_module::read_file('logs/' . phodevi::sensor_object_identifier($sensor));
$offset = count(explode(PHP_EOL, $log_f));
$offset = count(explode(PHP_EOL, $log_f)) - 1; // as log file ends with an empty line
if($type === 'interim')
if($type === 'try')
{
self::$test_run_tries_offsets[self::$test_run_try_number][phodevi::sensor_object_identifier($sensor)] = $offset;
self::$test_run_tries_offsets[phodevi::sensor_object_identifier($sensor)][self::$test_run_try_number] = $offset;
}
else if($type === 'pre-test')
else if($type === 'run')
{
self::$individual_test_run_offsets[phodevi::sensor_object_identifier($sensor)] = $offset;
}
@@ -594,7 +624,7 @@ class system_monitor extends pts_module_interface
$test_result->test_result_buffer->add_test_result(self::$result_identifier, pts_math::set_precision((1 / $test_result->active->get_result()) / $watt_average));
$result_file->add_result($test_result);
}
array_push(self::$perf_per_watt_collection, $test_result->active->get_result());
self::$perf_per_watt_collection[] = $test_result->active->get_result();
}
}
}
@@ -635,7 +665,7 @@ class system_monitor extends pts_module_interface
$sensor_results = self::parse_monitor_log('logs/' . phodevi::sensor_object_identifier($sensor),
self::$individual_test_run_offsets[phodevi::sensor_object_identifier($sensor)]);
if(count($sensor_results) > 2)
if(count($sensor_results) > 0)
{
$result_buffer->add_test_result(self::$result_identifier, implode(',', $sensor_results), implode(',', $sensor_results));
}
@@ -644,48 +674,60 @@ class system_monitor extends pts_module_interface
self::write_test_run_results($result_buffer, $result_file, $sensor);
self::$individual_test_run_offsets[phodevi::sensor_object_identifier($sensor)] = array();
self::$test_run_tries_offsets[phodevi::sensor_object_identifier($sensor)] = array();
}
private static function write_test_run_results(&$result_buffer, &$result_file, &$sensor)
{
//TODO result count checks should probably be done before cloning the test_result
// TODO result count checks should probably be done before cloning the test_result
// Copy the value each time as if you are directly writing the original data, each succeeding time in the loop the used arguments gets borked
if(!is_object(self::$individual_test_run_request))
return;
$test_result = clone self::$individual_test_run_request;
if (pts_module_manager::is_module_attached("matisk"))
{
// TODO find some better way than adding a number to distinguish the results between the MATISK runs
$arguments_description = phodevi::sensor_object_name($sensor) . ' Monitor (test ' . count($result_file->get_systems()) . ')';
$arguments_try_description = phodevi::sensor_object_name($sensor) . ' Per Test Try Monitor (test ' . count($result_file->get_systems()) . ')';
}
else
{
$arguments_description = phodevi::sensor_object_name($sensor) . ' Monitor';
$arguments_try_description = phodevi::sensor_object_name($sensor) . ' Per Test Try Monitor';
}
$test_result->test_profile->set_identifier(null);
$test_result->test_profile->set_result_proportion('LIB');
$test_result->test_profile->set_display_format('LINE_GRAPH');
$test_result->test_profile->set_result_scale(phodevi::read_sensor_object_unit($sensor));
$test_result->set_used_arguments_description(phodevi::sensor_object_name($sensor) . ' Monitor');
$test_result->set_used_arguments_description($arguments_description);
$test_result->set_used_arguments(phodevi::sensor_object_name($sensor) . ' ' . $test_result->get_arguments());
$test_result->test_result_buffer = $result_buffer;
if(self::$per_test_try_monitoring && $result_buffer->get_count() > 1)
{
$test_result->set_used_arguments_description(phodevi::sensor_object_name($sensor) . ' Per Test Try Monitor');
$test_result->set_used_arguments_description($arguments_try_description);
}
$result_file->add_result($test_result);
}
private static function prepare_per_try_results(&$sensor, &$result_buffer)
{
foreach(array_keys(self::$test_run_tries_offsets) as $try_number)
$sensor_offsets = self::$test_run_tries_offsets[phodevi::sensor_object_identifier($sensor)];
for($try_number = 1; $try_number <= self::$test_run_try_number; $try_number++)
{
if($try_number === 0)
{
$start_offset = self::$individual_test_run_offsets[phodevi::sensor_object_identifier($sensor)];
}
else
{
$start_offset = self::$test_run_tries_offsets[$try_number - 1][phodevi::sensor_object_identifier($sensor)];
}
$end_offset = self::$test_run_tries_offsets[$try_number][phodevi::sensor_object_identifier($sensor)];
$start_offset = $sensor_offsets[$try_number - 1];
$end_offset = $sensor_offsets[$try_number];
$sensor_results = self::parse_monitor_log('logs/' . phodevi::sensor_object_identifier($sensor),
$start_offset, $end_offset);
if(count($sensor_results) > 2)
{
$result_identifier = self::$result_identifier . " (try " . ($try_number + 1) . ")";
$result_identifier = self::$result_identifier . " (try " . ($try_number) . ")";
$result_value = implode(',', $sensor_results);
$result_buffer->add_test_result($result_identifier, $result_value, $result_value);
}

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2008 - 2015, Phoronix Media
Copyright (C) 2008 - 2015, Michael Larabel
Copyright (C) 2008 - 2016, Phoronix Media
Copyright (C) 2008 - 2016, 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
@@ -95,7 +95,7 @@ class timed_screenshot extends pts_module_interface
if(is_file($ss_file))
{
array_push(self::$screenshots, $ss_file);
self::$screenshots[] = $ss_file;
return $ss_file;
}
}

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2008 - 2014, Phoronix Media
Copyright (C) 2008 - 2014, Michael Larabel
Copyright (C) 2008 - 2016, Phoronix Media
Copyright (C) 2008 - 2016, Michael Larabel
update_checker.php: This module checks to see if the Phoronix Test Suite -- and its tests and suites -- are up to date.
This program is free software; you can redistribute it and/or modify
@@ -24,7 +24,7 @@
class update_checker extends pts_module_interface
{
const module_name = 'Update Checker';
const module_version = '0.2.0';
const module_version = '0.3.0';
const module_description = 'This module checks to see if the Phoronix Test Suite -- and its tests and suites -- are up to date.';
const module_author = 'Phoronix Media';
@@ -34,14 +34,11 @@ class update_checker extends pts_module_interface
if(IS_FIRST_RUN_TODAY && pts_network::internet_support_available())
{
// Check For pts-core updates
$latest_reported_version = pts_network::http_get_contents('http://www.phoronix-test-suite.com/LATEST');
$current_e = explode('.', PTS_VERSION);
$latest_e = explode('.', $latest_reported_version);
if($latest_reported_version != PTS_VERSION && $latest_e[0] >= $current_e[0] && ($latest_e[1] > $current_e[1] || ($latest_e[1] == $current_e[1] && $latest_e[2] >= $current_e[2])))
$latest_reported_version = pts_network::http_get_contents('http://www.phoronix-test-suite.com/LATEST_CORE');
if(is_numeric($latest_reported_version) && $latest_reported_version > PTS_CORE_VERSION)
{
// New version of PTS is available
pts_client::$display->generic_heading('An outdated version of the Phoronix Test Suite is installed.' . PHP_EOL . 'The version in use is v' . PTS_VERSION . ', but the latest is v' . $latest_reported_version . '.' . PHP_EOL . 'Visit http://www.phoronix-test-suite.com/ to update this software.');
pts_client::$display->generic_heading(strtoupper('An outdated version of the Phoronix Test Suite is installed.' . PHP_EOL . 'The version in use is ' . PTS_VERSION . ' (' . PTS_CORE_VERSION . '), but the latest is pts-core ' . $latest_reported_version . '.' . PHP_EOL . 'Visit http://www.phoronix-test-suite.com/ to update this software.'));
}
}

View File

@@ -0,0 +1,154 @@
<?php
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2016, Phoronix Media
Copyright (C) 2016, Michael Larabel
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 watchdog extends pts_module_interface
{
const module_name = 'System Event Watchdog';
const module_version = '1.0.0';
const module_description = 'This module has support for stopping/interrupting tests if various system issues occur, like a temperature sensor exceeds a defined threshold.';
const module_author = 'Michael Larabel';
private static $to_monitor = null;
private static $monitor_threshold = 0;
public static function module_environmental_variables()
{
return array('WATCHDOG_SENSOR', 'WATCHDOG_SENSOR_THRESHOLD');
}
public static function __startup()
{
$sensor_list = pts_strings::comma_explode(pts_module::read_variable('WATCHDOG_SENSOR'));
$to_monitor = array();
// A LOT OF THIS CODE IN THIS FUNCTION PORTED OVER FROM system_monitor MODULE
foreach($sensor_list as $sensor)
{
$sensor_split = pts_strings::trim_explode('.', $sensor);
$type = &$sensor_split[0];
$name = &$sensor_split[1];
$parameter = &$sensor_split[2];
if(empty($to_monitor[$type][$name]))
{
$to_monitor[$type][$name] = array();
}
if($parameter !== NULL)
{
$to_monitor[$type][$name][] = $parameter;
}
}
foreach(phodevi::supported_sensors() as $sensor)
{
if(array_key_exists($sensor[0], $to_monitor) && array_key_exists($sensor[1], $to_monitor[$sensor[0]]))
{
$supported_devices = call_user_func(array($sensor[2], 'get_supported_devices'));
$instance_no = 0;
if($supported_devices === NULL)
{
self::create_single_sensor_instance($sensor, 0, NULL);
}
else
{
foreach($supported_devices as $device)
{
self::create_single_sensor_instance($sensor, $instance_no++, $device);
}
}
}
}
// END OF PORTED CODE FROM system_monitor
if(empty(self::$to_monitor))
{
echo PHP_EOL . 'UNLOADING WATCHDOG AS NO SENSORS TO MONITOR' . PHP_EOL;
return pts_module::MODULE_UNLOAD;
}
$watchdog_threshold = getenv('WATCHDOG_SENSOR_THRESHOLD');
if(!is_numeric($watchdog_threshold) || $watchdog_threshold < 2)
{
echo PHP_EOL . 'UNLOADING WATCHDOG AS NO USEFUL DATA SET FOR WATCHDOG_SENSOR_THRESHOLD ENVIRONMENT VARIABLE' . PHP_EOL;
return pts_module::MODULE_UNLOAD;
}
self::$monitor_threshold = $watchdog_threshold;
echo PHP_EOL . 'WATCHDOG ACTIVATED - TESTS WILL ABORT IF ANY SENSOR CROSSES: ' . self::$monitor_threshold . PHP_EOL;
echo 'WATCHDOG MONITORING: ' . PHP_EOL;
$monitors = array();
foreach(self::$to_monitor as $sensor)
{
$monitors[] = array(strtoupper(phodevi::sensor_object_name($sensor)), phodevi::read_sensor($sensor), strtoupper(phodevi::read_sensor_object_unit($sensor)));
}
echo pts_user_io::display_text_table($monitors, ' ', 1) . PHP_EOL . PHP_EOL;
}
public static function __pre_run_process()
{
self::check_watchdog();
}
public static function __pre_test_run()
{
self::check_watchdog();
}
public static function __interim_test_run()
{
self::check_watchdog();
}
protected static function check_watchdog()
{
foreach(self::$to_monitor as $sensor)
{
$val = phodevi::read_sensor($sensor);
if($val > self::$monitor_threshold)
{
echo PHP_EOL . PHP_EOL . 'WATCHDOG: ' . strtoupper(phodevi::sensor_object_name($sensor)) . ' EXCEEDED THRESHOLD: ' . $val . ' ' . strtoupper(phodevi::read_sensor_object_unit($sensor)) . PHP_EOL;
$minutes_to_wait = 3;
$freq_to_poll = 5;
echo 'SUSPENDING TESTING; WILL WAIT UP TO ' . $minutes_to_wait . ' MINUTES TO SEE IF VALUE LOWERED. ' . PHP_EOL . PHP_EOL;
for($i = 0; $i < ($minutes_to_wait * 60); $i += $freq_to_poll)
{
sleep($freq_to_poll);
if(phodevi::read_sensor($sensor) < self::$monitor_threshold)
{
echo PHP_EOL . 'WATCHDOG RESTORING PROCESS: ' . strtoupper(phodevi::sensor_object_name($sensor)) . ': ' . phodevi::read_sensor($sensor) . ' ' . strtoupper(phodevi::read_sensor_object_unit($sensor)) . PHP_EOL;
return true;
}
}
echo 'WATCHDOG: EXITING PROGRAM' . PHP_EOL;
exit;
}
}
}
private static function create_single_sensor_instance($sensor, $instance, $param)
{
if(call_user_func(array($sensor[2], 'parameter_check'), $param) === true)
{
$sensor_object = new $sensor[2]($instance, $param);
self::$to_monitor[] = $sensor_object;
}
}
}
?>

View File

@@ -18,7 +18,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
* Author: Olivier PLATHEY *
*******************************************************************************/
// Modifications by Michael Larabel 2015 for PTS adaptation of FPDF
// Modifications by Michael Larabel 2015-2016 for PTS adaptation of FPDF
define('FPDF_VERSION','1.7');
@@ -86,8 +86,7 @@ var $PDFVersion; // PDF version number
* Public methods *
* *
*******************************************************************************/
function FPDF($orientation='P', $unit='mm', $size='A4')
{
public function __construct($orientation='P',$unit='mm',$size='A4') {
// Some checks
$this->_dochecks();
// Initialization of properties
@@ -945,6 +944,55 @@ function Image($file, $x=null, $y=null, $w=0, $h=0, $type='', $link='')
if($link)
$this->Link($x,$y,$w,$h,$link);
}
function ImageJPGInline($contents, $x=null, $y=null, $w=0, $h=0, $type='', $link='')
{
// Put an image on the page
$file = md5($contents);
if(!isset($this->images[$file]))
{
$info = $this->_parsejpginline($contents);
$info['i'] = count($this->images)+1;
$this->images[$file] = $info;
}
else
$info = $this->images[$file];
// Automatic width and height calculation if needed
if($w==0 && $h==0)
{
// Put image at 96 dpi
$w = -96;
$h = -96;
}
if($w<0)
$w = -$info['w']*72/$w/$this->k;
if($h<0)
$h = -$info['h']*72/$h/$this->k;
if($w==0)
$w = $h*$info['w']/$info['h'];
if($h==0)
$h = $w*$info['h']/$info['w'];
// Flowing mode
if($y===null)
{
if($this->y+$h>$this->PageBreakTrigger && !$this->InHeader && !$this->InFooter && $this->AcceptPageBreak())
{
// Automatic page break
$x2 = $this->x;
$this->AddPage($this->CurOrientation,$this->CurPageSize);
$this->x = $x2;
}
$y = $this->y;
$this->y += $h;
}
if($x===null)
$x = $this->x;
$this->_out(sprintf('q %.2F 0 0 %.2F %.2F %.2F cm /I%d Do Q',$w*$this->k,$h*$this->k,$x*$this->k,($this->h-($y+$h))*$this->k,$info['i']));
if($link)
$this->Link($x,$y,$w,$h,$link);
}
function GetX()
{
@@ -1309,6 +1357,23 @@ function _parsejpg($file)
$data = file_get_contents($file);
return array('w'=>$a[0], 'h'=>$a[1], 'cs'=>$colspace, 'bpc'=>$bpc, 'f'=>'DCTDecode', 'data'=>$data);
}
function _parsejpginline($data)
{
// Extract info from a JPEG file
$a = getimagesizefromstring($data);
if(!$a)
$this->Error('Missing or incorrect image file: ');
if($a[2]!=2)
$this->Error('Not a JPEG file: ');
if(!isset($a['channels']) || $a['channels']==3)
$colspace = 'DeviceRGB';
elseif($a['channels']==4)
$colspace = 'DeviceCMYK';
else
$colspace = 'DeviceGray';
$bpc = isset($a['bits']) ? $a['bits'] : 8;
return array('w'=>$a[0], 'h'=>$a[1], 'cs'=>$colspace, 'bpc'=>$bpc, 'f'=>'DCTDecode', 'data'=> $data);
}
function _parsepng($file)
{

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2009 - 2015, Phoronix Media
Copyright (C) 2009 - 2015, Michael Larabel
Copyright (C) 2009 - 2017, Phoronix Media
Copyright (C) 2009 - 2017, Michael Larabel
pts_concise_display_mode.php: The batch / concise display mode
This program is free software; you can redistribute it and/or modify
@@ -128,7 +128,7 @@ class pts_concise_display_mode implements pts_display_mode_interface
public function test_install_start($identifier)
{
$this->test_install_pos++;
echo $this->tab . $identifier . ':' . PHP_EOL;
echo $this->tab . pts_client::cli_colored_text($identifier, 'cyan', true) . ':' . PHP_EOL;
echo $this->tab . $this->tab . 'Test Installation ' . $this->test_install_pos . ' of ' . $this->test_install_count . PHP_EOL;
}
public function test_install_downloads($test_install_request)
@@ -220,7 +220,7 @@ class pts_concise_display_mode implements pts_display_mode_interface
$terminal_width = pts_client::terminal_width() > 1 ? pts_client::terminal_width() : $terminal_width;
$text_width = $terminal_width - (strlen($this->tab) * 3);
echo PHP_EOL . $this->tab . $this->tab . wordwrap('[NOTICE] ' . $message, $text_width, PHP_EOL . $this->tab . $this->tab) . PHP_EOL;
echo PHP_EOL . $this->tab . $this->tab . pts_client::cli_colored_text(wordwrap('[NOTICE] ' . $message, $text_width, PHP_EOL . $this->tab . $this->tab), 'gray', true) . PHP_EOL;
}
public function test_install_progress_start($process)
{
@@ -275,7 +275,7 @@ class pts_concise_display_mode implements pts_display_mode_interface
}
public function test_install_error($error_string)
{
echo $this->tab . $this->tab . $this->tab . $error_string . PHP_EOL;
echo $this->tab . $this->tab . $this->tab . pts_client::cli_colored_text($error_string, 'red', true) . PHP_EOL;
}
public function test_install_prompt($prompt_string)
{
@@ -294,14 +294,14 @@ class pts_concise_display_mode implements pts_display_mode_interface
}
public function test_run_start(&$test_run_manager, &$test_result)
{
echo PHP_EOL . PHP_EOL . $test_result->test_profile->get_title() . ($test_result->test_profile->get_app_version() != null ? ' ' . $test_result->test_profile->get_app_version() : null) . ':' . PHP_EOL . $this->tab . $test_result->test_profile->get_identifier();
$test_title_string = $test_result->test_profile->get_title() . ($test_result->test_profile->get_app_version() != null ? ' ' . $test_result->test_profile->get_app_version() : null) . ':' . PHP_EOL . $this->tab . $test_result->test_profile->get_identifier();
if(($test_description = $test_result->get_arguments_description()) != false)
{
echo ' [' . pts_client::swap_variables($test_description, array('pts_client', 'environmental_variables')) . ']';
$test_title_string .= ' [' . pts_client::swap_variables($test_description, array('pts_client', 'environmental_variables')) . ']';
}
echo PHP_EOL;
echo PHP_EOL . PHP_EOL . pts_client::cli_colored_text($test_title_string, 'cyan', true) . PHP_EOL;
echo $this->tab . 'Test ' . $test_run_manager->get_test_run_position() . ' of ' . $test_run_manager->get_test_run_count_reported() . PHP_EOL;
$this->trial_run_count_current = 0;
@@ -324,11 +324,11 @@ class pts_concise_display_mode implements pts_display_mode_interface
if((time() % 86400) + $remaining_length > 86400)
{
// If test run is past current calendar date
$est_end_time = date(' (H:i T M j)', time() + $remaining_length);
$est_end_time = date(' [H:i T M j]', time() + $remaining_length);
}
else
{
$est_end_time = date(' (H:i T)', time() + $remaining_length);
$est_end_time = date(' [H:i T]', time() + $remaining_length);
}
array_push($display_table, array($this->tab . 'Estimated Time To Completion:', pts_strings::format_time($remaining_length, 'SECONDS', true, 60) . $est_end_time));
@@ -344,10 +344,16 @@ class pts_concise_display_mode implements pts_display_mode_interface
{
$this->trial_run_count_current++;
echo PHP_EOL . $this->tab . $this->tab . 'Started Run ' . $this->trial_run_count_current . ' @ ' . date('H:i:s');
if($this->expected_trial_run_count > 1 && $this->trial_run_count_current > $this->expected_trial_run_count)
{
// add a mark since the results are in overtime, deviation likely too high and run count increased
echo ' *';
}
}
public function test_run_instance_error($error_string)
{
echo PHP_EOL . $this->tab . $this->tab . $error_string;
echo PHP_EOL . $this->tab . $this->tab . pts_client::cli_colored_text($error_string, 'red', true);
}
public function test_run_instance_output(&$to_output)
{
@@ -360,15 +366,7 @@ class pts_concise_display_mode implements pts_display_mode_interface
}
public function test_run_instance_complete(&$result)
{
if($this->expected_trial_run_count > 1 && $this->trial_run_count_current >= $this->expected_trial_run_count)
{
$values = $result->active->results;
if(count($values) > 1)
{
echo ($this->trial_run_count_current < 10 ? ' ' : null) . ' [Std. Dev: ' . pts_math::set_precision(pts_math::percent_standard_deviation($values), 2) . '%]';
}
}
return; // if anything to append to string of "Started Run"
}
public function test_run_end(&$test_result)
{
@@ -394,28 +392,64 @@ class pts_concise_display_mode implements pts_display_mode_interface
else if(in_array($test_result->test_profile->get_display_format(), array('FILLED_LINE_GRAPH', 'LINE_GRAPH')))
{
$values = explode(',', $test_result->active->get_result());
$end_print = null;
$end_print = PHP_EOL . $this->tab . ($test_result->get_arguments_description() ? $test_result->get_arguments_description() : 'Test Results') . ':' . PHP_EOL;
if($test_result->test_profile->get_result_proportion() == 'LIB')
{
$minimum_color = 'green';
$maximum_color = 'red';
}
else if($test_result->test_profile->get_result_proportion() == 'HIB')
{
$minimum_color = 'red';
$maximum_color = 'green';
}
if(count($values) > 1)
{
$avg = pts_math::set_precision(array_sum($values) / count($values), 2);
$min = pts_math::set_precision(min($values), 2);
$max = pts_math::set_precision(max($values), 2);
$end_print .= $this->tab . $this->tab . 'Average: ' . $avg . ' (' . $test_result->test_profile->get_result_scale() . ')' . PHP_EOL;
$end_print .= $this->tab . $this->tab . 'Minimum: ' . $min . ' (' . $test_result->test_profile->get_result_scale() . ')' . PHP_EOL;
$end_print .= $this->tab . $this->tab . 'Maximum: ' . $max . ' (' . $test_result->test_profile->get_result_scale() . ')' . PHP_EOL;
$end_print .= $this->tab . 'Average: ' . pts_client::cli_colored_text($avg, 'blue', true) . ' ' . $test_result->test_profile->get_result_scale() . PHP_EOL;
$end_print .= $this->tab . 'Minimum: ' . pts_client::cli_colored_text($min, $minimum_color, true) . ' ' . $test_result->test_profile->get_result_scale() . PHP_EOL;
$end_print .= $this->tab . 'Maximum: ' . pts_client::cli_colored_text($max, $maximum_color, true) . ' ' . $test_result->test_profile->get_result_scale() . PHP_EOL;
}
}
else
{
$end_print = PHP_EOL . $this->tab . 'Test Results:' . PHP_EOL;
$end_print = PHP_EOL . $this->tab . ($test_result->get_arguments_description() ? $test_result->get_arguments_description() : 'Test Results') . ':' . PHP_EOL;
$result_count = 0;
if($test_result->test_profile->get_result_proportion() == 'LIB')
{
$best_result = $test_result->active->get_min_value();
$worst_result = $test_result->active->get_max_value();
}
else if($test_result->test_profile->get_result_proportion() == 'HIB')
{
$best_result = $test_result->active->get_max_value();
$worst_result = $test_result->active->get_min_value();
}
foreach($test_result->active->results as $result)
{
$end_print .= $this->tab . $this->tab . $result . PHP_EOL;
$text_color = null;
if(count($test_result->active->results) > 1)
{
if($result == $best_result)
{
$text_color = 'green';
}
else if($result == $worst_result)
{
$text_color = 'red';
}
}
$end_print .= $this->tab . $this->tab . pts_client::cli_colored_text($result, $text_color, true) . PHP_EOL;
$result_count++;
}
$end_print .= PHP_EOL . $this->tab . pts_strings::result_quantifier_to_string($test_result->test_profile->get_result_quantifier()) . ': ' . $test_result->active->get_result() . ' ' . $test_result->test_profile->get_result_scale();
$end_print .= PHP_EOL . $this->tab . pts_strings::result_quantifier_to_string($test_result->test_profile->get_result_quantifier()) . ': ' . pts_client::cli_colored_text($test_result->active->get_result() . ' ' . $test_result->test_profile->get_result_scale(), 'blue', true);
if($test_result->active->get_min_result())
{
@@ -425,6 +459,10 @@ class pts_concise_display_mode implements pts_display_mode_interface
{
$end_print .= PHP_EOL . $this->tab . 'Maximum: ' . $test_result->active->get_max_result();
}
if($result_count > 2)
{
$end_print .= PHP_EOL . $this->tab . 'Deviation: ' . pts_math::set_precision(pts_math::percent_standard_deviation($test_result->active->results), 2) . '%';
}
if($test_result->active->get_result() == 0)
{
@@ -438,7 +476,7 @@ class pts_concise_display_mode implements pts_display_mode_interface
}
public function test_run_error($error_string)
{
echo $this->tab . $this->tab . $error_string . PHP_EOL;
echo $this->tab . $this->tab . pts_client::cli_colored_text($error_string, 'red', true) . PHP_EOL;
}
public function generic_prompt($prompt_string)
{
@@ -460,7 +498,7 @@ class pts_concise_display_mode implements pts_display_mode_interface
foreach(pts_strings::trim_explode(PHP_EOL, $string) as $line_count => $line_string)
{
// ($line_count > 0 ? $this->tab : null) .
echo $line_string . PHP_EOL;
echo pts_client::cli_colored_text($line_string, 'green', true) . PHP_EOL;
}
if($ending_line_break)
@@ -484,30 +522,30 @@ class pts_concise_display_mode implements pts_display_mode_interface
}
public function triggered_system_error($level, $message, $file, $line)
{
echo PHP_EOL . '[' . $level . '] ';
$error_msg = PHP_EOL . '[' . $level . '] ';
if(strpos($message, PHP_EOL) === false)
{
echo $message . ' ';
$error_msg .= $message . ' ';
}
else
{
foreach(pts_strings::trim_explode(PHP_EOL, $message) as $line_count => $line_string)
{
// ($line_count > 0 ? $this->tab : null)
echo $line_string . PHP_EOL . str_repeat(' ', strlen($level) + 3);
$error_msg .= $line_string . PHP_EOL . str_repeat(' ', strlen($level) + 3);
}
}
if($file != null)
{
echo 'in ' . basename($file, '.php');
$error_msg .= 'in ' . basename($file, '.php');
}
if($line != 0)
{
echo ':' . $line;
$error_msg .= ':' . $line;
}
echo PHP_EOL;
echo pts_client::cli_colored_text($error_msg, 'red', true) . PHP_EOL;
}
public function get_tab()
{

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2015, Phoronix Media
Copyright (C) 2015, Michael Larabel
Copyright (C) 2015 - 2016, Phoronix Media
Copyright (C) 2015 - 2016, Michael Larabel
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
@@ -41,22 +41,18 @@ class pts_short_display_mode extends pts_concise_display_mode
protected function print_test_identifier_prefix($test)
{
$ti = $test->test_profile->get_identifier();
return $ti . str_repeat(' ', ($this->longest_test_identifier_length - strlen($ti))) . ': ';
return pts_client::cli_just_bold($ti) . str_repeat(' ', ($this->longest_test_identifier_length - strlen($ti))) . ': ';
}
public function test_run_start(&$test_run_manager, &$test_result)
{
echo $this->print_test_identifier_prefix($test_result);
$after_print = pts_client::cli_colored_text('Test Started', 'green', true);
if(($test_description = $test_result->get_arguments_description()) != false)
{
echo pts_client::swap_variables($test_description, array('pts_client', 'environmental_variables'));
$after_print .= ' - ' . pts_client::swap_variables($test_description, array('pts_client', 'environmental_variables'));
}
else
{
echo 'Test Starting';
}
echo PHP_EOL;
echo $after_print .= PHP_EOL;
$this->trial_run_count_current = 0;
$this->expected_trial_run_count = $test_result->test_profile->get_times_to_run();
@@ -80,7 +76,7 @@ class pts_short_display_mode extends pts_concise_display_mode
public function test_run_instance_header(&$test_result)
{
$this->trial_run_count_current++;
echo $this->print_test_identifier_prefix($test_result) . 'Started Run ' . $this->trial_run_count_current . ' @ ' . date('H:i:s') . PHP_EOL;
//echo $this->print_test_identifier_prefix($test_result) . 'Started Run ' . $this->trial_run_count_current . ' @ ' . date('H:i:s') . PHP_EOL;
}
public function test_run_instance_complete(&$test_result)
{
@@ -113,10 +109,11 @@ class pts_short_display_mode extends pts_concise_display_mode
}
else
{
$end_print = pts_strings::result_quantifier_to_string($test_result->test_profile->get_result_quantifier()) . ': ' . $test_result->active->get_result() . ' ' . $test_result->test_profile->get_result_scale();
$end_print = pts_client::cli_just_bold(pts_strings::result_quantifier_to_string($test_result->test_profile->get_result_quantifier()) . ': ') . $test_result->active->get_result() . ' ' . $test_result->test_profile->get_result_scale();
}
echo $this->print_test_identifier_prefix($test_result) . $end_print;
echo $this->print_test_identifier_prefix($test_result) . $end_print . PHP_EOL;
echo $this->print_test_identifier_prefix($test_result) . pts_client::cli_colored_text('Test Ended', 'red', true) . PHP_EOL;
}
}

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2009 - 2012, Phoronix Media
Copyright (C) 2009 - 2012, Michael Larabel
Copyright (C) 2009 - 2017, Phoronix Media
Copyright (C) 2009 - 2017, Michael Larabel
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
@@ -52,7 +52,7 @@ class pts_argument_check
}
else if($this->get_function_check() == array('pts_types', 'identifier_to_object'))
{
$type = 'Test | Suite | OpenBenchmarking.org ID | Test Result';
$type = 'Test | Suite | OpenBenchmarking ID | Test Result';
}
else if($this->get_function_check() == array('pts_types', 'is_test_or_suite'))
{

View File

@@ -3,8 +3,8 @@
/*
Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2008 - 2015, Phoronix Media
Copyright (C) 2008 - 2015, Michael Larabel
Copyright (C) 2008 - 2017, Phoronix Media
Copyright (C) 2008 - 2017, Michael Larabel
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
@@ -29,6 +29,7 @@ class pts_client
private static $forked_pids = array();
protected static $phoromatic_servers = array();
protected static $debug_mode = false;
protected static $full_output = false;
public static function create_lock($lock_file)
{
@@ -41,6 +42,31 @@ class pts_client
chmod($lock_file, 0644);
return self::$lock_pointers[$lock_file] != false && flock(self::$lock_pointers[$lock_file], LOCK_EX | LOCK_NB);
}
public static function is_locked($lock_file)
{
$fp = fopen($lock_file, 'w');
$is_locked = $fp && !flock($fp, LOCK_EX | LOCK_NB);
$fp && fclose($fp);
return $is_locked;
}
public static function release_lock($lock_file)
{
// Remove lock
if(isset(self::$lock_pointers[$lock_file]) == false)
{
pts_file_io::unlink($lock_file);
return false;
}
if(is_resource(self::$lock_pointers[$lock_file]))
{
fclose(self::$lock_pointers[$lock_file]);
}
pts_file_io::unlink($lock_file);
unset(self::$lock_pointers[$lock_file]);
}
public static function init()
{
pts_core::init();
@@ -180,7 +206,7 @@ class pts_client
{
if(!in_array($store_var, $module_store_list))
{
array_push($module_store_list, $store_var);
$module_store_list[] = $store_var;
}
}
}
@@ -277,6 +303,43 @@ class pts_client
return $runtime_variables;
}
public static function supports_colored_text_output()
{
return (function_exists('posix_isatty') && posix_isatty(STDOUT)) || (PTS_IS_CLIENT && getenv('LS_COLORS'));
}
public static function cli_colored_text($str, $color, $bold = false)
{
if(!self::supports_colored_text_output() || empty($color))
{
return $str;
}
$attribute = ($bold ? '1' : '0');
$colors = array(
'black' => $attribute . ';30',
'gray' => '1;30', // gray not bold doesn't look good in all consoles
'blue' => $attribute . ';34',
'green' => $attribute . ';32',
'red' => $attribute . ';31',
'cyan' => $attribute . ';36',
);
if(!isset($colors[$color]))
{
return $str;
}
return "\033[" . $colors[$color] . 'm' . $str . "\033[0m";
}
public static function cli_just_bold($str)
{
if(!self::supports_colored_text_output())
{
return $str;
}
return "\033[1m$str\033[0m";
}
public static function save_test_result($save_to = null, $save_results = null, $render_graphs = true, $result_identifier = null)
{
// Saves PTS result file
@@ -332,13 +395,13 @@ class pts_client
if(phodevi::is_linux())
{
// the kernel config file might just be too large to upload for now
array_push($system_log_files, '/boot/config-' . php_uname('r'));
$system_log_files[] = '/boot/config-' . php_uname('r');
}
*/
foreach($system_log_files as $file)
{
if(is_file($file) && is_readable($file))
if(is_file($file) && is_readable($file) && filesize($file) < 1000000)
{
// copy() can't be used in this case since it will result in a blank file for /proc/ file-system
$file_contents = file_get_contents($file);
@@ -360,6 +423,7 @@ class pts_client
'cpufreq-info',
'glxinfo',
'clinfo',
'vulkaninfo',
'uname -a',
// 'udisks --dump',
'upower --dump',
@@ -367,12 +431,12 @@ class pts_client
if(phodevi::is_bsd())
{
array_push($system_log_commands, 'sysctl -a');
array_push($system_log_commands, 'kenv');
$system_log_commands[] = 'sysctl -a';
$system_log_commands[] = 'kenv';
}
if(is_readable('/dev/mem'))
{
array_push($system_log_commands, 'dmidecode');
$system_log_commands[] = 'dmidecode';
}
foreach($system_log_commands as $command_string)
@@ -383,6 +447,13 @@ class pts_client
{
$cmd_output = shell_exec('cd ' . dirname($command_bin) . ' && ./' . $command_string . ' 2>&1');
if(strlen($cmd_output) > 900000)
{
// Don't preserve really large logs, likely filled with lots of junk
$cmd_output = null;
continue;
}
// Try to filter out any serial numbers, etc.
phodevi_vfs::cleanse_file($cmd_output, $command[0]);
$cmd_output = pts_strings::remove_line_timestamps($cmd_output);
@@ -425,6 +496,8 @@ class pts_client
}
file_put_contents($system_log_dir . 'environment-variables', $variable_dump);
}
pts_module_manager::module_process('__post_test_run_system_logs', $system_log_dir);
}
}
@@ -458,7 +531,7 @@ class pts_client
break;
}
}
public static function program_requirement_checks($only_show_required = false)
public static function program_requirement_checks($only_show_required = false, $always_report = false)
{
$extension_checks = pts_needed_extensions();
@@ -466,14 +539,21 @@ class pts_client
$printed_optional_header = false;
foreach($extension_checks as $extension)
{
if($extension[1] == false)
if($extension[1] == false || $always_report)
{
if($always_report)
{
$printed_required_header = true;
$printed_optional_header = true;
echo ($extension[1] == false ? 'MISSING' : 'PRESENT') . ' - ';
}
if($extension[0] == 1)
{
// Oops, this extension is required
if($printed_required_header == false)
{
echo PHP_EOL . 'The following PHP extensions are REQUIRED by the Phoronix Test Suite:' . PHP_EOL . PHP_EOL;
echo PHP_EOL . 'The following PHP extensions are REQUIRED:' . PHP_EOL . PHP_EOL;
$printed_required_header = true;
}
}
@@ -492,7 +572,7 @@ class pts_client
}
}
echo sprintf('%-8ls %-30ls' . PHP_EOL, $extension[2], $extension[3]);
echo sprintf('%-9ls %-30ls' . PHP_EOL, $extension[2], $extension[3]);
}
}
@@ -500,7 +580,7 @@ class pts_client
{
echo PHP_EOL;
if($printed_required_header)
if($printed_required_header && !$always_report)
{
exit;
}
@@ -665,7 +745,7 @@ class pts_client
}
public static function register_phoromatic_server($server_ip, $http_port)
{
array_push(self::$phoromatic_servers, array('ip' => $server_ip, 'http_port' => $http_port));
self::$phoromatic_servers[] = array('ip' => $server_ip, 'http_port' => $http_port);
}
public static function available_phoromatic_servers()
{
@@ -674,7 +754,7 @@ class pts_client
foreach(self::$phoromatic_servers as $server)
{
array_push($possible_servers, array($server['ip'], $server['http_port']));
$possible_servers[] = array($server['ip'], $server['http_port']);
}
$user_config_phoromatic_servers = pts_config::read_user_config('PhoronixTestSuite/Options/General/PhoromaticServers', '');
@@ -683,7 +763,7 @@ class pts_client
$static_server = explode(':', $static_server);
if(count($static_server) == 2)
{
array_push($possible_servers, array($static_server[0], $static_server[1]));
$possible_servers[] = array($static_server[0], $static_server[1]);
}
}
@@ -695,7 +775,7 @@ class pts_client
$ps_file_line = explode(':', trim($ps_file_line));
if(count($ps_file_line) == 2 && ip2long($ps_file_line[0]) !== false && is_numeric($ps_file_line) && $ps_file_line > 100)
{
array_push($possible_servers, array($ps_file_line[0], $ps_file_line[1]));
$possible_servers[] = array($ps_file_line[0], $ps_file_line[1]);
}
}
}
@@ -885,11 +965,12 @@ class pts_client
{
if(pts_file_io::mkdir($save_to_dir . '/result-graphs') == false)
{
// Directory must exist, so remove any old graph files first
// Don't delete old files now, in case any modules (e.g. FlameGrapher) output something in there ahead of time
/*// Directory must exist, so remove any old graph files first
foreach(pts_file_io::glob($save_to_dir . '/result-graphs/*') as $old_file)
{
unlink($old_file);
}
}*/
}
}
@@ -937,7 +1018,7 @@ class pts_client
$test_titles = array();
foreach($result_objects as &$result_object)
{
array_push($test_titles, $result_object->test_profile->get_title());
$test_titles[] = $result_object->test_profile->get_title();
}
$offset = 0;
@@ -960,7 +1041,7 @@ class pts_client
{
if(isset($test_titles[$key]) && $this_title == $test_titles[$key])
{
array_push($table_keys, $this_title_index);
$table_keys[] = $this_title_index;
}
}
}
@@ -977,7 +1058,13 @@ class pts_client
}
$graph = pts_render::render_graph($result_object, $result_file, $save_to, $extra_attributes);
array_push($generated_graphs, $graph);
if($graph == false)
{
continue;
}
$generated_graphs[] = $graph;
}
// Generate mini / overview graphs
@@ -1057,22 +1144,6 @@ class pts_client
{
return pts_config::read_bool_config('PhoronixTestSuite/Options/OpenBenchmarking/AnonymousUsageReporting', 0);
}
public static function release_lock($lock_file)
{
// Remove lock
if(isset(self::$lock_pointers[$lock_file]) == false)
{
return false;
}
if(is_resource(self::$lock_pointers[$lock_file]))
{
fclose(self::$lock_pointers[$lock_file]);
}
pts_file_io::unlink($lock_file);
unset(self::$lock_pointers[$lock_file]);
}
public static function check_command_for_function($option, $check_function)
{
$in_option = false;
@@ -1187,7 +1258,7 @@ class pts_client
trigger_error('Phoronix Test Suite Argument Missing.', E_USER_ERROR);
}
echo PHP_EOL . 'CORRECT SYNTAX:' . PHP_EOL . 'phoronix-test-suite ' . str_replace('_', '-', $command_alias) . ' ' . implode(' ', $argument_checks) . PHP_EOL . PHP_EOL;
echo PHP_EOL . pts_client::cli_just_bold('CORRECT SYNTAX:') . PHP_EOL . 'phoronix-test-suite ' . str_replace('_', '-', $command_alias) . ' ' . implode(' ', $argument_checks) . PHP_EOL . PHP_EOL;
if(method_exists($command, 'invalid_command'))
{
@@ -1466,7 +1537,7 @@ class pts_client
}
else
{
$possible_browsers = array('firefox', 'mozilla', 'x-www-browser', 'open', 'xdg-open', 'iceweasel', 'konqueror', 'epiphany', 'google-chrome');
$possible_browsers = array('firefox', 'mozilla', 'x-www-browser', 'iceweasel', 'konqueror', 'epiphany', 'google-chrome', 'midori', 'epiphany-browser', 'epiphany', 'midori', 'qupzilla', 'open', 'xdg-open');
foreach($possible_browsers as &$b)
{
@@ -1514,7 +1585,7 @@ class pts_client
if(!in_array($identifier, $ignore_ids))
{
array_push($results, $identifier);
$results[] = $identifier;
}
}
@@ -1538,7 +1609,7 @@ class pts_client
}
else if($pid)
{
array_push(self::$forked_pids, $pid);
self::$forked_pids[] = $pid;
}
else
{
@@ -1598,7 +1669,7 @@ class pts_client
else if($pid)
{
// PARENT
array_push(self::$forked_pids, $pid);
self::$forked_pids[] = $pid;
return true;
}
else

View File

@@ -99,6 +99,7 @@ class pts_config
$config->addXmlNodeFromReader('PhoronixTestSuite/Options/General/UsePhodeviCache', $read_config);
$config->addXmlNodeFromReader('PhoronixTestSuite/Options/General/DefaultDisplayMode', $read_config);
$config->addXmlNodeFromReader('PhoronixTestSuite/Options/General/PhoromaticServers', $read_config);
$config->addXmlNodeFromReader('PhoronixTestSuite/Options/General/FullOutput', $read_config);
$config->addXmlNodeFromReader('PhoronixTestSuite/Options/Modules/LoadModules', $read_config);
@@ -121,6 +122,7 @@ class pts_config
$config->addXmlNodeFromReader('PhoronixTestSuite/Options/TestResultValidation/LimitDynamicToTestLength', $read_config);
$config->addXmlNodeFromReader('PhoronixTestSuite/Options/TestResultValidation/StandardDeviationThreshold', $read_config);
$config->addXmlNodeFromReader('PhoronixTestSuite/Options/TestResultValidation/ExportResultsTo', $read_config);
$config->addXmlNodeFromReader('PhoronixTestSuite/Options/TestResultValidation/MinimalTestTime', $read_config);
$config->addXmlNodeFromReader('PhoronixTestSuite/Options/BatchMode/SaveResults', $read_config);
$config->addXmlNodeFromReader('PhoronixTestSuite/Options/BatchMode/OpenBrowser', $read_config);

Some files were not shown because too many files have changed in this diff Show More