commit
82377bc1ab
3 changed files with 33 additions and 6 deletions
|
|
@ -1262,6 +1262,7 @@ def run_mprime_test(state, test):
|
||||||
test.update_status()
|
test.update_status()
|
||||||
update_progress_pane(state)
|
update_progress_pane(state)
|
||||||
test.sensor_data = get_sensor_data()
|
test.sensor_data = get_sensor_data()
|
||||||
|
test.thermal_abort = False
|
||||||
|
|
||||||
# Update tmux layout
|
# Update tmux layout
|
||||||
tmux_update_pane(
|
tmux_update_pane(
|
||||||
|
|
@ -1303,6 +1304,7 @@ def run_mprime_test(state, test):
|
||||||
command=['hw-diags-prime95', global_vars['TmpDir']],
|
command=['hw-diags-prime95', global_vars['TmpDir']],
|
||||||
working_dir=global_vars['TmpDir'])
|
working_dir=global_vars['TmpDir'])
|
||||||
time_limit = int(MPRIME_LIMIT) * 60
|
time_limit = int(MPRIME_LIMIT) * 60
|
||||||
|
thermal_limit = int(THERMAL_LIMIT)
|
||||||
try:
|
try:
|
||||||
for i in range(time_limit):
|
for i in range(time_limit):
|
||||||
clear_screen()
|
clear_screen()
|
||||||
|
|
@ -1319,15 +1321,19 @@ def run_mprime_test(state, test):
|
||||||
# Not using print wrappers to avoid flooding the log
|
# Not using print wrappers to avoid flooding the log
|
||||||
print(_status_str)
|
print(_status_str)
|
||||||
print('{YELLOW}{msg}{CLEAR}'.format(msg=test.abort_msg, **COLORS))
|
print('{YELLOW}{msg}{CLEAR}'.format(msg=test.abort_msg, **COLORS))
|
||||||
update_sensor_data(test.sensor_data)
|
update_sensor_data(test.sensor_data, thermal_limit)
|
||||||
|
|
||||||
# Wait
|
# Wait
|
||||||
sleep(1)
|
sleep(1)
|
||||||
except KeyboardInterrupt:
|
except (KeyboardInterrupt, ThermalLimitReachedError) as err:
|
||||||
# Catch CTRL+C
|
# CTRL+c pressed or thermal limit reached
|
||||||
test.aborted = True
|
test.aborted = True
|
||||||
test.update_status('Aborted')
|
if isinstance(err, KeyboardInterrupt):
|
||||||
print_warning('\nAborted.')
|
test.update_status('Aborted')
|
||||||
|
elif isinstance(err, ThermalLimitReachedError):
|
||||||
|
test.failed = True
|
||||||
|
test.thermal_abort = True
|
||||||
|
test.update_status('NS')
|
||||||
update_progress_pane(state)
|
update_progress_pane(state)
|
||||||
|
|
||||||
# Restart live monitor
|
# Restart live monitor
|
||||||
|
|
@ -1428,6 +1434,16 @@ def run_mprime_test(state, test):
|
||||||
test.sensor_data, 'Idle', 'Max', 'Cooldown', core_only=True):
|
test.sensor_data, 'Idle', 'Max', 'Cooldown', core_only=True):
|
||||||
test.report.append(' {}'.format(line))
|
test.report.append(' {}'.format(line))
|
||||||
|
|
||||||
|
# Add abort message(s)
|
||||||
|
if test.aborted:
|
||||||
|
test.report.append(
|
||||||
|
' {YELLOW}Aborted{CLEAR}'.format(**COLORS))
|
||||||
|
if test.thermal_abort:
|
||||||
|
test.report.append(
|
||||||
|
' {RED}CPU reached temperature limit of {temp}°C{CLEAR}'.format(
|
||||||
|
temp=THERMAL_LIMIT,
|
||||||
|
**COLORS))
|
||||||
|
|
||||||
# Done
|
# Done
|
||||||
update_progress_pane(state)
|
update_progress_pane(state)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,11 @@ TEMP_LIMITS = {
|
||||||
REGEX_COLORS = re.compile(r'\033\[\d+;?1?m')
|
REGEX_COLORS = re.compile(r'\033\[\d+;?1?m')
|
||||||
|
|
||||||
|
|
||||||
|
# Error Classes
|
||||||
|
class ThermalLimitReachedError(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
def clear_temps(sensor_data):
|
def clear_temps(sensor_data):
|
||||||
"""Clear saved temps but keep structure, returns dict."""
|
"""Clear saved temps but keep structure, returns dict."""
|
||||||
for _section, _adapters in sensor_data.items():
|
for _section, _adapters in sensor_data.items():
|
||||||
|
|
@ -214,7 +219,7 @@ def save_average_temp(sensor_data, temp_label, seconds=10):
|
||||||
_data[temp_label] = sum(_data['Temps']) / len(_data['Temps'])
|
_data[temp_label] = sum(_data['Temps']) / len(_data['Temps'])
|
||||||
|
|
||||||
|
|
||||||
def update_sensor_data(sensor_data):
|
def update_sensor_data(sensor_data, thermal_limit=None):
|
||||||
"""Read sensors and update existing sensor_data, returns dict."""
|
"""Read sensors and update existing sensor_data, returns dict."""
|
||||||
json_data = get_raw_sensor_data()
|
json_data = get_raw_sensor_data()
|
||||||
for _section, _adapters in sensor_data.items():
|
for _section, _adapters in sensor_data.items():
|
||||||
|
|
@ -230,6 +235,11 @@ def update_sensor_data(sensor_data):
|
||||||
# Dumb workound for Dell sensors with changing source names
|
# Dumb workound for Dell sensors with changing source names
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# Check if thermal limit reached
|
||||||
|
if thermal_limit and _section == 'CoreTemps':
|
||||||
|
if max(_data['Current'], _data['Max']) >= thermal_limit:
|
||||||
|
raise ThermalLimitReachedError('CoreTemps reached limit')
|
||||||
|
|
||||||
|
|
||||||
def join_columns(column1, column2, width=55):
|
def join_columns(column1, column2, width=55):
|
||||||
return '{:<{}}{}'.format(
|
return '{:<{}}{}'.format(
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ KIT_NAME_SHORT='WK'
|
||||||
SUPPORT_MESSAGE='Please let 2Shirt know by opening an issue on GitHub'
|
SUPPORT_MESSAGE='Please let 2Shirt know by opening an issue on GitHub'
|
||||||
# Live Linux
|
# Live Linux
|
||||||
MPRIME_LIMIT='7' # of minutes to run Prime95 during hw-diags
|
MPRIME_LIMIT='7' # of minutes to run Prime95 during hw-diags
|
||||||
|
THERMAL_LIMIT='95' # Prime95 abort temperature in Celsius
|
||||||
ROOT_PASSWORD='Abracadabra'
|
ROOT_PASSWORD='Abracadabra'
|
||||||
TECH_PASSWORD='Abracadabra'
|
TECH_PASSWORD='Abracadabra'
|
||||||
# Server IP addresses
|
# Server IP addresses
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue