private static function set_monitoring_interval() { if (pts_module::read_variable('MONITOR_INTERVAL') != null) { $proposed_interval = pts_module::read_variable('MONITOR_INTERVAL'); if (is_numeric($proposed_interval) && $proposed_interval >= 0.5) { self::$sensor_monitoring_frequency = $proposed_interval; } } }
public static function __post_test_run_process(&$result_file) { if (self::$individual_monitoring == false || count(self::$to_monitor) == 0) { return; } // The self::$test_run_timer to contain how long each individual test run lasted, should anything else past this point want to use the info... self::$test_run_timer = time() - self::$test_run_timer; // Let the system return to brief idling.. sleep(self::$sensor_monitoring_frequency * 8); if (pts_module::read_variable('PERFORMANCE_PER_WATT')) { $sensor = array('sys', 'power'); $sensor_results = self::parse_monitor_log('logs/' . phodevi::sensor_identifier($sensor), self::$individual_test_run_offsets[phodevi::sensor_identifier($sensor)]); if (count($sensor_results) > 2 && self::$successful_test_run_request) { // 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 $test_result = clone self::$successful_test_run_request; $process_perf_per_watt = true; $watt_average = array_sum($sensor_results) / count($sensor_results); switch (phodevi::read_sensor_unit($sensor)) { case 'Milliwatts': $watt_average = $watt_average / 1000; case 'Watts': break; default: $process_perf_per_watt = false; } if ($process_perf_per_watt && $watt_average > 0 && $test_result->test_profile->get_display_format() == 'BAR_GRAPH') { $test_result->test_profile->set_identifier(null); //$test_result->set_used_arguments_description(phodevi::sensor_name('sys.power') . ' Monitor'); //$test_result->set_used_arguments(phodevi::sensor_name('sys.power') . ' ' . $test_result->get_arguments()); $test_result->test_result_buffer = new pts_test_result_buffer(); if ($test_result->test_profile->get_result_proportion() == 'HIB') { $test_result->test_profile->set_result_scale($test_result->test_profile->get_result_scale() . ' Per Watt'); $test_result->test_result_buffer->add_test_result(self::$result_identifier, pts_math::set_precision($test_result->active->get_result() / $watt_average)); $result_file->add_result($test_result); } else { if ($test_result->test_profile->get_result_proportion() == 'LIB') { $test_result->test_profile->set_result_proportion('HIB'); $test_result->test_profile->set_result_scale('Performance Per Watt'); $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()); } } } foreach (self::$to_monitor as $sensor) { $sensor_results = self::parse_monitor_log('logs/' . phodevi::sensor_identifier($sensor), self::$individual_test_run_offsets[phodevi::sensor_identifier($sensor)]); if (count($sensor_results) > 2) { // 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 $test_result = clone self::$individual_test_run_request; $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_unit($sensor)); $test_result->set_used_arguments_description(phodevi::sensor_name($sensor) . ' Monitor'); $test_result->set_used_arguments(phodevi::sensor_name($sensor) . ' ' . $test_result->get_arguments()); $test_result->test_result_buffer = new pts_test_result_buffer(); $test_result->test_result_buffer->add_test_result(self::$result_identifier, implode(',', $sensor_results), implode(',', $sensor_results)); $result_file->add_result($test_result); } self::$individual_test_run_offsets[phodevi::sensor_identifier($sensor)] = array(); } self::$successful_test_run_request = null; self::$individual_test_run_request = null; self::$monitor_test_count++; // Let the system rest before jumping to next test... sleep(self::$sensor_monitoring_frequency * 6); }