Main Prime95 sections working
* Still need check results and update progress sections
This commit is contained in:
parent
30ba651674
commit
dc606a8780
4 changed files with 88 additions and 24 deletions
|
|
@ -186,7 +186,8 @@ class State():
|
||||||
self.started = False
|
self.started = False
|
||||||
self.tests = {
|
self.tests = {
|
||||||
'Prime95 & Temps': {'Enabled': False, 'Order': 1,
|
'Prime95 & Temps': {'Enabled': False, 'Order': 1,
|
||||||
'Result': '', 'Started': False, 'Status': ''},
|
'Result': '', 'Sensor Data': get_sensor_data(),
|
||||||
|
'Started': False, 'Status': ''},
|
||||||
'NVMe / SMART': {'Enabled': False, 'Order': 2},
|
'NVMe / SMART': {'Enabled': False, 'Order': 2},
|
||||||
'badblocks': {'Enabled': False, 'Order': 3},
|
'badblocks': {'Enabled': False, 'Order': 3},
|
||||||
'I/O Benchmark': {'Enabled': False, 'Order': 4},
|
'I/O Benchmark': {'Enabled': False, 'Order': 4},
|
||||||
|
|
@ -614,41 +615,106 @@ def run_keyboard_test():
|
||||||
|
|
||||||
def run_mprime_test(state):
|
def run_mprime_test(state):
|
||||||
"""Test CPU with Prime95 and track temps."""
|
"""Test CPU with Prime95 and track temps."""
|
||||||
# Prep
|
state.tests['Prime95 & Temps']['Started'] = True
|
||||||
_sensors_out = '{}/sensors.out'.format(global_vars['TmpDir'])
|
update_progress_pane(state)
|
||||||
with open(_sensors_out, 'w') as f:
|
_sensor_data = state.tests['Prime95 & Temps']['Sensor Data']
|
||||||
f.write(' ')
|
|
||||||
sleep(1)
|
# Update top pane
|
||||||
monitor_proc = popen_program(
|
|
||||||
['hw-sensors-monitor', _sensors_out],
|
|
||||||
pipe=True)
|
|
||||||
_title = '{}\n{}{}{}'.format(
|
_title = '{}\n{}{}{}'.format(
|
||||||
TOP_PANE_TEXT, 'Prime95 & Temps',
|
TOP_PANE_TEXT, 'Prime95 & Temps',
|
||||||
': ' if 'Model name' in state.lscpu else '',
|
': ' if 'Model name' in state.lscpu else '',
|
||||||
state.lscpu.get('Model name', ''))
|
state.lscpu.get('Model name', ''))
|
||||||
tmux_update_pane(state.panes['Top'], text=_title)
|
tmux_update_pane(state.panes['Top'], text=_title)
|
||||||
state.tests['Prime95 & Temps']['Started'] = True
|
|
||||||
update_progress_pane(state)
|
# Start live sensor monitor
|
||||||
|
_sensors_out = '{}/sensors.out'.format(global_vars['TmpDir'])
|
||||||
|
with open(_sensors_out, 'w') as f:
|
||||||
|
f.write(' ')
|
||||||
|
f.flush()
|
||||||
|
sleep(0.5)
|
||||||
|
monitor_proc = popen_program(
|
||||||
|
['hw-sensors-monitor', _sensors_out],
|
||||||
|
pipe=True)
|
||||||
|
|
||||||
|
# Create monitor and worker panes
|
||||||
state.panes['mprime'] = tmux_split_window(
|
state.panes['mprime'] = tmux_split_window(
|
||||||
lines=10, vertical=True, text='Prime95 output goes here...')
|
lines=10, vertical=True, text=' ')
|
||||||
state.panes['Temps'] = tmux_split_window(
|
state.panes['Temps'] = tmux_split_window(
|
||||||
behind=True, percent=80, vertical=True, watch=_sensors_out)
|
behind=True, percent=80, vertical=True, watch=_sensors_out)
|
||||||
tmux_resize_pane(global_vars['Env']['TMUX_PANE'], y=3)
|
tmux_resize_pane(global_vars['Env']['TMUX_PANE'], y=3)
|
||||||
|
|
||||||
# Start live monitor
|
|
||||||
pause()
|
|
||||||
monitor_proc.kill()
|
|
||||||
|
|
||||||
# Get idle temps
|
# Get idle temps
|
||||||
|
clear_screen()
|
||||||
|
try_and_print(
|
||||||
|
message='Getting idle temps...', indent=0,
|
||||||
|
function=save_average_temp, cs='Done',
|
||||||
|
sensor_data=_sensor_data, temp_label='Idle')
|
||||||
|
|
||||||
# Stress CPU
|
# Stress CPU
|
||||||
# Get max temp
|
run_program(['apple-fans', 'max'])
|
||||||
|
tmux_update_pane(
|
||||||
|
state.panes['mprime'],
|
||||||
|
command=['hw-diags-prime95', global_vars['TmpDir']])
|
||||||
|
time_limit = int(MPRIME_LIMIT) * 60
|
||||||
|
try:
|
||||||
|
for i in range(time_limit):
|
||||||
|
clear_screen()
|
||||||
|
sec_left = time_limit - i
|
||||||
|
min_left = int(sec_left / 60)
|
||||||
|
if min_left > 0:
|
||||||
|
print_standard(
|
||||||
|
'Running Prime95 ({} minute{} left)'.format(
|
||||||
|
min_left,
|
||||||
|
's' if min_left != 1 else ''))
|
||||||
|
else:
|
||||||
|
print_standard(
|
||||||
|
'Running Prime95 ({} second{} left)'.format(
|
||||||
|
sec_left,
|
||||||
|
's' if sec_left != 1 else ''))
|
||||||
|
print_warning('If running too hot, press CTRL+c to abort the test')
|
||||||
|
update_sensor_data(_sensor_data)
|
||||||
|
sleep(1)
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
# Catch CTRL+C
|
||||||
|
aborted = True
|
||||||
|
state.tests['Prime95 & Temps']['Result'] = 'Aborted'
|
||||||
|
print_warning('\nAborted.')
|
||||||
|
update_progress_pane(state)
|
||||||
|
|
||||||
|
# Restart live monitor
|
||||||
|
monitor_proc = popen_program(
|
||||||
|
['hw-sensors-monitor', _sensors_out],
|
||||||
|
pipe=True)
|
||||||
|
|
||||||
|
# Stop Prime95 (twice for good measure)
|
||||||
|
tmux_kill_pane(state.panes['mprime'])
|
||||||
|
run_program(['killall', '-s', 'INT', 'mprime'], check=False)
|
||||||
|
|
||||||
# Get cooldown temp
|
# Get cooldown temp
|
||||||
|
run_program(['apple-fans', 'auto'])
|
||||||
|
clear_screen()
|
||||||
|
try_and_print(
|
||||||
|
message='Letting CPU cooldown for bit...', indent=0,
|
||||||
|
function=sleep, cs='Done', seconds=10)
|
||||||
|
try_and_print(
|
||||||
|
message='Getting cooldown temps...', indent=0,
|
||||||
|
function=save_average_temp, cs='Done',
|
||||||
|
sensor_data=_sensor_data, temp_label='Cooldown')
|
||||||
|
|
||||||
|
# Check results
|
||||||
|
# TODO
|
||||||
|
|
||||||
# Done
|
# Done
|
||||||
sleep(3)
|
|
||||||
state.tests['Prime95 & Temps']['Result'] = 'Unknown'
|
state.tests['Prime95 & Temps']['Result'] = 'Unknown'
|
||||||
update_progress_pane(state)
|
update_progress_pane(state)
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
tmux_kill_pane(state.panes['mprime'], state.panes['Temps'])
|
||||||
|
monitor_proc.kill()
|
||||||
|
|
||||||
|
# TODO Testing
|
||||||
|
print('\n'.join(generate_report(_sensor_data, 'Idle', 'Max', 'Cooldown')))
|
||||||
|
|
||||||
def run_network_test():
|
def run_network_test():
|
||||||
"""Run network test."""
|
"""Run network test."""
|
||||||
clear_screen()
|
clear_screen()
|
||||||
|
|
|
||||||
|
|
@ -46,14 +46,12 @@ def generate_report(sensor_data, *temp_labels, colors=True):
|
||||||
for _source, _data in sorted(_sources.items()):
|
for _source, _data in sorted(_sources.items()):
|
||||||
# Source
|
# Source
|
||||||
_line = '{:18} '.format(fix_sensor_str(_source))
|
_line = '{:18} '.format(fix_sensor_str(_source))
|
||||||
_temps = []
|
|
||||||
# Temps (skip label for Current)
|
# Temps (skip label for Current)
|
||||||
for _label in temp_labels:
|
for _label in temp_labels:
|
||||||
_temps.append('{}{}{}'.format(
|
_line += '{}{}{} '.format(
|
||||||
_label.lower() if _label != 'Current' else '',
|
_label.lower() if _label != 'Current' else '',
|
||||||
': ' if _label != 'Current' else '',
|
': ' if _label != 'Current' else '',
|
||||||
get_temp_str(_data.get(_label, '???'), colors=colors)))
|
get_temp_str(_data.get(_label, '???'), colors=colors))
|
||||||
_line += ', '.join(_temps)
|
|
||||||
report.append(_line)
|
report.append(_line)
|
||||||
report.append(' ')
|
report.append(' ')
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@ def tmux_kill_pane(*panes):
|
||||||
"""Kill tmux pane by id."""
|
"""Kill tmux pane by id."""
|
||||||
cmd = ['tmux', 'kill-pane', '-t']
|
cmd = ['tmux', 'kill-pane', '-t']
|
||||||
for pane_id in panes:
|
for pane_id in panes:
|
||||||
print(pane_id)
|
|
||||||
run_program(cmd+[pane_id], check=False)
|
run_program(cmd+[pane_id], check=False)
|
||||||
|
|
||||||
def tmux_poll_pane(pane_id):
|
def tmux_poll_pane(pane_id):
|
||||||
|
|
|
||||||
|
|
@ -14,5 +14,6 @@ if [ ! -d "$1" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Run Prime95
|
# Run Prime95
|
||||||
mprime -t | grep -iv --line-buffered 'stress.txt' | tee -a "$1/prime.log"
|
cd "$1"
|
||||||
|
mprime -t | grep -iv --line-buffered 'stress.txt' | tee -a "prime.log"
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue