diff --git a/scripts/wk/cfg/hw.py b/scripts/wk/cfg/hw.py index c71363eb..17a735ee 100644 --- a/scripts/wk/cfg/hw.py +++ b/scripts/wk/cfg/hw.py @@ -183,8 +183,9 @@ TMUX_LAYOUT = OrderedDict({ 'I/O Benchmark': {'height': 1000, 'Check': False}, }) # VOLUME THRESHOLDS in percent -VOLUME_WARNING_THRESHOLD = 70 -VOLUME_FAILURE_THRESHOLD = 85 +VOLUME_WARNING_THRESHOLD = 70 +VOLUME_FAILURE_THRESHOLD = 85 +VOLUME_SIZE_THRESHOLD = 30 # In GB if __name__ == '__main__': diff --git a/scripts/wk/hw/diags.py b/scripts/wk/hw/diags.py index 245b0245..bbcd8ead 100644 --- a/scripts/wk/hw/diags.py +++ b/scripts/wk/hw/diags.py @@ -981,12 +981,6 @@ def run_diags(state, menu, quick_mode=False, test_mode=False) -> None: # Post disk results hw_osticket.post_disk_results(state, NUM_DISK_TESTS) - # Drop Disk Utilization reports (only needed for OST) - for test_group in state.test_groups: - if test_group.name == 'Disk Utilization': - for test in test_group.test_objects: - test.report = [] - # Show results show_results(state) @@ -1020,6 +1014,12 @@ def show_results(state) -> None: std.print_report(state.system.generate_report()) std.print_standard(' ') + # Drop Disk Utilization reports (only needed for OST) + for test_group in state.test_groups: + if test_group.name == 'Disk Utilization': + for test in test_group.test_objects: + test.report = [] + # Disk Tests disk_tests_enabled = [ group.name for group in state.test_groups if 'Disk' in group.name diff --git a/scripts/wk/hw/volumes.py b/scripts/wk/hw/volumes.py index 6d0d2d6d..6beefd60 100644 --- a/scripts/wk/hw/volumes.py +++ b/scripts/wk/hw/volumes.py @@ -4,8 +4,8 @@ import logging from wk import os as wk_os -from wk.cfg.hw import VOLUME_FAILURE_THRESHOLD -from wk.std import PLATFORM, bytes_to_string +from wk.cfg.hw import VOLUME_FAILURE_THRESHOLD, VOLUME_SIZE_THRESHOLD +from wk.std import PLATFORM, GenericError, bytes_to_string # STATIC VARIABLES @@ -40,14 +40,17 @@ def add_child_dev_line(test_obj, child) -> None: elif PLATFORM == 'Linux': free = int(child['fsavail']) used = int(child['fsused']) - percent_used = (used / size) * 100 - except TypeError: + if free == 0: + raise GenericError('Most likely a false positive.') + percent_used = (used / size) * 100 + except (GenericError, TypeError): # Bail early test_obj.report.append(f'{dev_info}... Mounted on {child["mountpoint"]}') return # Check for failures - if percent_used >= VOLUME_FAILURE_THRESHOLD: + if (percent_used >= VOLUME_FAILURE_THRESHOLD + and size >= VOLUME_SIZE_THRESHOLD * 1024**3): test_obj.failed = True vol_full = True @@ -74,7 +77,7 @@ def add_root_dev_line(test_obj) -> None: vol_full = False # Get sizes - percent_used = 0 + percent_used = -1 size = dev.size try: if PLATFORM == 'Darwin': @@ -84,8 +87,10 @@ def add_root_dev_line(test_obj) -> None: elif PLATFORM == 'Linux': free = int(dev.raw_details['fsavail']) used = int(dev.raw_details['fsused']) + if free == 0: + raise GenericError('Most likely a false positive.') percent_used = (used / size) * 100 - except TypeError: + except (GenericError, TypeError): # Bail early test_obj.report.append( f'{dev_info}... Mounted on {dev.raw_details["mountpoint"]}', @@ -137,7 +142,9 @@ def check_volume_utilization(test_obj) -> None: def mount_all_volumes(dev) -> None: """Mount all volumes for dev using.""" if PLATFORM == 'Darwin': - wk_os.mac.mount_disk(device_path=dev.path) + # NOTE: Disabled due to a bug they should already be mounted by macOS + #wk_os.mac.mount_disk(device_path=dev.path) + pass elif PLATFORM == 'Linux': wk_os.linux.mount_volumes( device_path=dev.path,