diff --git a/selfdrive/test/test_cpu_usage.py b/selfdrive/test/test_cpu_usage.py index eba08fd872..b9bd374824 100755 --- a/selfdrive/test/test_cpu_usage.py +++ b/selfdrive/test/test_cpu_usage.py @@ -62,25 +62,31 @@ def print_cpu_usage(first_proc, last_proc): print(result) return r +def all_running(): + running = manager.get_running() + return all(p in running and running[p].is_alive() for p in manager.car_started_processes) + return_code = 1 def test_thread(): - global return_code - proc_sock = messaging.sub_sock('procLog', conflate=True) + try: + global return_code + proc_sock = messaging.sub_sock('procLog', conflate=True, timeout=1000) - # wait until everything's started and get first sample - time.sleep(30) - first_proc = messaging.recv_sock(proc_sock, wait=True) + # wait until everything's started and get first sample + time.sleep(30) + first_proc = messaging.recv_sock(proc_sock, wait=True) + if first_proc is None or not all_running(): + print("\n\nTEST FAILED: all car started processes not running\n\n") + raise Exception - # run for a minute and get last sample - time.sleep(60) - last_proc = messaging.recv_sock(proc_sock, wait=True) - - running = manager.get_running() - all_running = all(p in running and running[p].is_alive() for p in manager.car_started_processes) - return_code = print_cpu_usage(first_proc, last_proc) - if not all_running: - return_code = 1 - _thread.interrupt_main() + # run for a minute and get last sample + time.sleep(60) + last_proc = messaging.recv_sock(proc_sock, wait=True) + return_code = print_cpu_usage(first_proc, last_proc) + if not all_running(): + return_code = 1 + finally: + _thread.interrupt_main() if __name__ == "__main__":