phodevi: Bug fixes

This commit is contained in:
Michael Larabel
2024-03-24 14:10:15 -05:00
parent c2605245ac
commit d719e4aa23
11 changed files with 35 additions and 70 deletions

View File

@@ -3,7 +3,7 @@ PHORONIX TEST SUITE CHANGE-LOG
Phoronix Test Suite 10.8.5 Phoronix Test Suite 10.8.5
[GIT] [GIT]
pts-core: PHP 8.2 warning fixes pts-core: PHP 8.2/8.3 warning fixes
pts-core: Various bug fixes pts-core: Various bug fixes
phodevi: Hardware/software detection updates phodevi: Hardware/software detection updates

View File

@@ -105,7 +105,7 @@ class shell implements pts_option_interface
// SENSORS // SENSORS
$terminal_width = pts_client::terminal_width(); $terminal_width = pts_client::terminal_width();
$sensors = array(); $sensors = array();
foreach(phodevi::supported_sensors(array('cpu_usage', 'cpu_temp', 'sys_temp', 'sys_power', 'gpu_usage', 'gpu_temp', 'memory_usage')) as $sensor) foreach(phodevi::query_sensors(array('cpu_usage', 'cpu_temp', 'sys_temp', 'sys_power', 'gpu_usage', 'gpu_temp', 'memory_usage')) as $sensor)
{ {
$supported_devices = call_user_func(array($sensor[2], 'get_supported_devices')); $supported_devices = call_user_func(array($sensor[2], 'get_supported_devices'));

View File

@@ -29,7 +29,7 @@ class system_sensors implements pts_option_interface
{ {
pts_client::$display->generic_heading('Supported Sensors For This System'); pts_client::$display->generic_heading('Supported Sensors For This System');
$tabled = array(); $tabled = array();
foreach(phodevi::supported_sensors() as $sensor) foreach(phodevi::query_sensors() as $sensor)
{ {
$supported_devices = call_user_func(array($sensor[2], 'get_supported_devices')); $supported_devices = call_user_func(array($sensor[2], 'get_supported_devices'));
@@ -52,13 +52,6 @@ class system_sensors implements pts_option_interface
} }
} }
echo pts_user_io::display_text_table($tabled) . PHP_EOL; echo pts_user_io::display_text_table($tabled) . PHP_EOL;
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;
} }
} }

View File

@@ -231,7 +231,7 @@ class phoromatic extends pts_module_interface
$j['phoromatic']['client-log'] = $phoromatic_log; $j['phoromatic']['client-log'] = $phoromatic_log;
} }
foreach(phodevi::supported_sensors() as $sensor) foreach(phodevi::query_sensors() as $sensor)
{ {
$j['phoromatic']['stats']['sensors'][phodevi::sensor_name($sensor)] = array('value' => phodevi::read_sensor($sensor), 'unit' => phodevi::read_sensor_unit($sensor)); $j['phoromatic']['stats']['sensors'][phodevi::sensor_name($sensor)] = array('value' => phodevi::read_sensor($sensor), 'unit' => phodevi::read_sensor_unit($sensor));
} }

View File

@@ -420,7 +420,7 @@ class system_monitor extends pts_module_interface
private static function process_sensor_list(&$sensor_parameters) private static function process_sensor_list(&$sensor_parameters)
{ {
$monitor_all = array_key_exists('all', $sensor_parameters); $monitor_all = array_key_exists('all', $sensor_parameters);
foreach(phodevi::supported_sensors() as $sensor) foreach(phodevi::query_sensors() as $sensor)
{ {
// instantiate sensor class if: // instantiate sensor class if:
// a) we want to monitor all the available sensors, // a) we want to monitor all the available sensors,

View File

@@ -57,7 +57,7 @@ class watchdog extends pts_module_interface
$to_monitor[$type][$name][] = $parameter; $to_monitor[$type][$name][] = $parameter;
} }
} }
foreach(phodevi::supported_sensors() as $sensor) foreach(phodevi::query_sensors() as $sensor)
{ {
if(array_key_exists($sensor[0], $to_monitor) && array_key_exists($sensor[1], $to_monitor[$sensor[0]])) if(array_key_exists($sensor[0], $to_monitor) && array_key_exists($sensor[1], $to_monitor[$sensor[0]]))
{ {

View File

@@ -212,7 +212,7 @@ class pts_stress_run_manager extends pts_test_run_manager
// SENSOR SETUP WORK // SENSOR SETUP WORK
$sensor_interval_frequency = is_numeric($total_loop_time) && $total_loop_time > 1 ? max($total_loop_time / 1000, 3) : 6; $sensor_interval_frequency = is_numeric($total_loop_time) && $total_loop_time > 1 ? max($total_loop_time / 1000, 3) : 6;
$sensor_time_since_last_poll = time(); $sensor_time_since_last_poll = time();
foreach(phodevi::supported_sensors(array('cpu_temp', 'cpu_usage', 'gpu_usage', 'gpu_temp', 'hdd_read_speed', 'hdd_write_speed', 'memory_usage', 'swap_usage', 'sys_temp')) as $sensor) foreach(phodevi::query_sensors(array('cpu_temp', 'cpu_usage', 'gpu_usage', 'gpu_temp', 'hdd_read_speed', 'hdd_write_speed', 'memory_usage', 'swap_usage', 'sys_temp')) as $sensor)
{ {
$supported_devices = call_user_func(array($sensor[2], 'get_supported_devices')); $supported_devices = call_user_func(array($sensor[2], 'get_supported_devices'));

View File

@@ -811,6 +811,12 @@ class phodevi_cpu extends phodevi_device_interface
case '0xd82': case '0xd82':
$new_info .= ' Cortex-X4'; $new_info .= ' Cortex-X4';
break; break;
case '0xd88':
$new_info .= ' Cortex-A520E';
break;
case '0xd89':
$new_info .= ' Cortex-A720E';
break;
} }
} }
else if($implementer == '0x61') else if($implementer == '0x61')
@@ -1425,7 +1431,7 @@ class phodevi_cpu extends phodevi_device_interface
173 => 'Granite Rapids', 173 => 'Granite Rapids',
174 => 'Granite Rapids', 174 => 'Granite Rapids',
175 => 'Sierra Forest', 175 => 'Sierra Forest',
181 => 'Meteor Lake', 181 => 'Arrow Lake',
182 => 'Grand Ridge', 182 => 'Grand Ridge',
183 => 'Raptor Lake', 183 => 'Raptor Lake',
186 => 'Raptor Lake', 186 => 'Raptor Lake',

View File

@@ -3,8 +3,8 @@
/* /*
Phoronix Test Suite Phoronix Test Suite
URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/ URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
Copyright (C) 2009 - 2019, Phoronix Media Copyright (C) 2009 - 2024, Phoronix Media
Copyright (C) 2009 - 2019, Michael Larabel Copyright (C) 2009 - 2024, Michael Larabel
phodevi.php: The object for interacting with the PTS device framework phodevi.php: The object for interacting with the PTS device framework
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
@@ -84,15 +84,11 @@ class phodevi extends phodevi_base
} }
} }
} }
public static function available_sensors($limit_sensors = false) public static function available_sensors()
{ {
static $available_sensors = null; static $available_sensors = null;
if($limit_sensors != false) if($available_sensors == null)
{
return self::select_sensors($limit_sensors);
}
else if($available_sensors == null)
{ {
$available_sensors = array(); $available_sensors = array();
@@ -107,29 +103,10 @@ class phodevi extends phodevi_base
return $available_sensors; return $available_sensors;
} }
public static function select_sensors($limit_sensors = false)
{
if(!defined('PHP_VERSION_ID') || PHP_VERSION_ID < 50300)
{
// Phodevi sensors don't work prior to PHP 5.3
return array();
}
$selected = array();
foreach(self::available_sensors() as $sensor)
{
if($limit_sensors == false || (is_array($limit_sensors) && in_array($sensor[2], $limit_sensors)))
{
array_push($selected, $sensor);
}
}
return $selected;
}
public static function is_sensor_supported($sensor) public static function is_sensor_supported($sensor)
{ {
$supported = false; $supported = false;
$sensors = self::supported_sensors(); $sensors = self::query_sensors();
foreach($sensors as $s) foreach($sensors as $s)
{ {
if($s[0] == $sensor[0] && $s[1] == $sensor[1]) if($s[0] == $sensor[0] && $s[1] == $sensor[1])
@@ -141,18 +118,26 @@ class phodevi extends phodevi_base
return $supported; return $supported;
} }
public static function supported_sensors($limit_sensors = false) public static function query_sensors($limit_sensor_selection = false)
{ {
static $supported_sensors = null; static $supported_sensors = null;
if($limit_sensors != false) if($limit_sensor_selection != false)
{ {
return self::select_sensors($limit_sensors); $selected = array();
foreach(self::available_sensors() as $sensor)
{
if($limit_sensor_selection == false || (is_array($limit_sensor_selection) && in_array($sensor[2], $limit_sensor_selection)))
{
array_push($selected, $sensor);
}
}
return $selected;
} }
else if($supported_sensors == null) else if($supported_sensors == null)
{ {
$supported_sensors = array(); $supported_sensors = array();
foreach(self::available_sensors($limit_sensors) as $sensor) foreach(self::available_sensors() as $sensor)
{ {
if(self::sensor_supported($sensor)) if(self::sensor_supported($sensor))
{ {
@@ -163,26 +148,6 @@ class phodevi extends phodevi_base
return $supported_sensors; return $supported_sensors;
} }
public static function unsupported_sensors()
{
static $unsupported_sensors = null;
if($unsupported_sensors == null)
{
$unsupported_sensors = array();
$supported_sensors = self::supported_sensors();
foreach(self::available_sensors() as $sensor)
{
if(!in_array($sensor, $supported_sensors))
{
array_push($unsupported_sensors, $sensor);
}
}
}
return $unsupported_sensors;
}
public static function read_sensor($sensor) public static function read_sensor($sensor)
{ {
if($sensor instanceof phodevi_sensor) if($sensor instanceof phodevi_sensor)

View File

@@ -38,7 +38,7 @@ class phodevi_sensor_monitor
$monitor_all = in_array('all', $to_monitor); $monitor_all = in_array('all', $to_monitor);
$this->sensors_to_monitor = array(); $this->sensors_to_monitor = array();
foreach(phodevi::supported_sensors() as $sensor) foreach(phodevi::query_sensors() as $sensor)
{ {
if($monitor_all || in_array(phodevi::sensor_identifier($sensor), $to_monitor) || in_array('all.' . $sensor[0], $to_monitor)) if($monitor_all || in_array(phodevi::sensor_identifier($sensor), $to_monitor) || in_array('all.' . $sensor[0], $to_monitor))
{ {

View File

@@ -1002,7 +1002,7 @@ class pts_result_viewer_embed
$stime = strtotime($sys->get_timestamp()); $stime = strtotime($sys->get_timestamp());
$t .= '<div class="div_table_cell"><input type="number" min="0" step="0.001" name="ppd_' . $ppdx . '" value="' . ($ppd && $ppd !== true ? strip_tags($ppd) : '0') . '" /></div> $t .= '<div class="div_table_cell"><input type="number" min="0" step="0.001" name="ppd_' . $ppdx . '" value="' . ($ppd && $ppd !== true ? strip_tags($ppd) : '0') . '" /></div>
<div class="div_table_cell">' . date(($stime > $start_of_year ? 'F d' : 'F d Y'), $stime) . '</div> <div class="div_table_cell">' . date(($stime > $start_of_year ? 'F d' : 'F d Y'), $stime) . '</div>
<div class="div_table_cell"> &nbsp; ' . (isset($test_run_times[$si]) && $test_run_times[$si] > 0 ? pts_strings::format_time($test_run_times[$si], 'SECONDS', true, 60) : ' ') . '</div>'; <div class="div_table_cell"> &nbsp; ' . (isset($test_run_times[$si]) && $test_run_times[$si] > 0 && $test_run_times[$si] < 604800 ? pts_strings::format_time($test_run_times[$si], 'SECONDS', true, 60) : ' ') . '</div>';
if($can_delete_results && !empty($public_id)) if($can_delete_results && !empty($public_id))
{ {
@@ -1030,9 +1030,10 @@ class pts_result_viewer_embed
$t .= '<div class="div_table_cell"> </div>'; $t .= '<div class="div_table_cell"> </div>';
} }
$avg_run_time = array_sum($test_run_times) / count($test_run_times);
$t .= '<div class="div_table_cell">' . self::html_select_menu('ppt', 'ppt', null, array('D' => 'Dollar', 'DPH' => 'Dollar / Hour'), true) . '</div> $t .= '<div class="div_table_cell">' . self::html_select_menu('ppt', 'ppt', null, array('D' => 'Dollar', 'DPH' => 'Dollar / Hour'), true) . '</div>
<div class="div_table_cell"> </div> <div class="div_table_cell"> </div>
<div class="div_table_cell"> &nbsp; <em>' . pts_strings::format_time(array_sum($test_run_times) / count($test_run_times), 'SECONDS', true, 60) . '</em></div> <div class="div_table_cell"> &nbsp; <em>' . ($avg_run_time > 0 && $avg_run_time < 604800 ? pts_strings::format_time($avg_run_time, 'SECONDS', true, 60) : '') . '</em></div>
<div class="div_table_cell">'; <div class="div_table_cell">';
if($can_delete_results) if($can_delete_results)