Prime95 section complete

This commit is contained in:
2Shirt 2018-12-10 22:54:56 -07:00
parent d9554314d5
commit 6c06a67fdf
Signed by: 2Shirt
GPG key ID: 152FAC923B0E132C
2 changed files with 51 additions and 32 deletions

View file

@ -674,7 +674,9 @@ def run_mprime_test(state, test):
try_and_print(
message='Getting idle temps...', indent=0,
function=save_average_temp, cs='Done',
sensor_data=test.sensor_data, temp_label='Idle')
sensor_data=test.sensor_data, temp_label='Idle',
seconds=3)
# TODO: Remove seconds kwarg above
# Stress CPU
print_log('Starting Prime95')
@ -684,7 +686,9 @@ def run_mprime_test(state, test):
state.panes['mprime'],
command=['hw-diags-prime95', global_vars['TmpDir']],
working_dir=global_vars['TmpDir'])
time_limit = int(MPRIME_LIMIT) * 60
#time_limit = int(MPRIME_LIMIT) * 60
# TODO: restore above line
time_limit = 10
try:
for i in range(time_limit):
clear_screen()
@ -716,19 +720,23 @@ def run_mprime_test(state, test):
pipe=True)
# Stop Prime95 (twice for good measure)
tmux_kill_pane(state.panes['mprime'])
run_program(['killall', '-s', 'INT', 'mprime'], check=False)
sleep(1)
tmux_kill_pane(state.panes['mprime'])
# 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)
function=sleep, cs='Done', seconds=3)
# TODO: Above seconds should be 10
try_and_print(
message='Getting cooldown temps...', indent=0,
function=save_average_temp, cs='Done',
sensor_data=test.sensor_data, temp_label='Cooldown')
sensor_data=test.sensor_data, temp_label='Cooldown',
seconds=3)
# TODO: Remove seconds kwarg above
# Move logs to Ticket folder
for item in os.scandir(global_vars['TmpDir']):
@ -761,44 +769,47 @@ def run_mprime_test(state, test):
if re.search(r'(error|fail)', line, re.IGNORECASE):
test.failed = True
test.update_status('NS')
_tmp.append(' {YELLOW}{line}{CLEAR}'.format(**COLORS))
_tmp.append(' {YELLOW}{line}{CLEAR}'.format(line=line, **COLORS))
if _tmp:
test.report.append('{BLUE}Log: results.txt{CLEAR}'.format(**COLORS))
test.report.extend(_tmp)
# prime.log (CS check)
if log == 'prime.log':
_tmp_pass = []
_tmp_warn = []
_tmp = {'Pass': {}, 'Warn': {}}
for line in lines:
if re.search(
r'completed.*0 errors, 0 warnings', line, re.IGNORECASE):
_tmp_pass.append(line)
elif re.search(
r'completed.*\d+ errors, \d+ warnings', line, re.IGNORECASE):
# If the first re.search does not match and this one does then
# that means that either errors or warnings, or both, are non-zero
_tmp_warn.append(line)
if len(_tmp_warn) > 0:
test.failed = True
test.passed = False
test.update_status('NS')
elif len(_tmp_pass) > 0:
test.passed = True
test.update_status('CS')
if len(_tmp_pass) + len(_tmp_warn) > 0:
_r = re.search(
r'(completed.*(\d+) errors, (\d+) warnings)',
line,
re.IGNORECASE)
if _r:
if int(_r.group(2)) + int(_r.group(3)) > 0:
# Encountered errors and/or warnings
_tmp['Warn'][_r.group(1)] = None
else:
# No errors
_tmp['Pass'][_r.group(1)] = None
if len(_tmp['Warn']) > 0:
# NS
test.failed = True
test.passed = False
test.update_status('NS')
elif len(_tmp['Pass']) > 0:
test.passed = True
test.update_status('CS')
if len(_tmp['Pass']) + len(_tmp['Warn']) > 0:
test.report.append('{BLUE}Log: prime.log{CLEAR}'.format(**COLORS))
for line in _tmp_pass:
for line in sorted(_tmp['Pass'].keys()):
test.report.append(' {}'.format(line))
for line in _tmp_warn:
test.report.append(' {YELLOW}{line}{CLEAR}'.format(line, **COLORS))
test.report.append(' ')
for line in sorted(_tmp['Warn'].keys()):
test.report.append(' {YELLOW}{line}{CLEAR}'.format(line=line, **COLORS))
# Finalize report
if not (test.aborted or test.failed or test.passed):
test.update_status('Unknown')
test.report.append('{BLUE}Temps{CLEAR}'.format(**COLORS))
for line in generate_report(test.sensor_data, 'Idle', 'Max', 'Cooldown'):
for line in generate_report(
test.sensor_data, 'Idle', 'Max', 'Cooldown', core_only=True):
test.report.append(' {}'.format(line))
# Done
@ -864,6 +875,7 @@ def secret_screensaver(screensaver=None):
def show_results(state):
"""Show results for all tests."""
clear_screen()
for k, v in state.tests.items():
print_success('{}:'.format(k))
for obj in v['Objects']:
@ -871,7 +883,8 @@ def show_results(state):
print(line)
print_log(strip_colors(line))
print_standard(' ')
print_standard(' ')
if 'Prime95' not in k:
print_standard(' ')
def update_main_options(state, selection, main_options):
"""Update menu and state based on selection."""

View file

@ -29,17 +29,22 @@ def fix_sensor_str(s):
s = s.title()
s = s.replace('Coretemp', 'CoreTemp')
s = s.replace('Acpi', 'ACPI')
s = s.replace('ACPItz', 'ACPI TZ')
s = s.replace('Isa ', 'ISA ')
s = s.replace('Id ', 'ID ')
s = re.sub(r'(\D+)(\d+)', r'\1 \2', s, re.IGNORECASE)
s = s.replace(' ', ' ')
return s
def generate_report(sensor_data, *temp_labels, colors=True):
def generate_report(
sensor_data, *temp_labels,
colors=True, core_only=False):
"""Generate report based on temp_labels, returns list if str."""
report = []
for _section, _adapters in sorted(sensor_data.items()):
# CoreTemps then Other temps
if core_only and 'Core' not in _section:
continue
for _adapter, _sources in sorted(_adapters.items()):
# Adapter
report.append(fix_sensor_str(_adapter))
@ -53,7 +58,8 @@ def generate_report(sensor_data, *temp_labels, colors=True):
': ' if _label != 'Current' else '',
get_temp_str(_data.get(_label, '???'), colors=colors))
report.append(_line)
report.append(' ')
if not core_only:
report.append(' ')
# Handle empty reports (i.e. no sensors detected)
if not report: