diff --git a/selfdrive/selfdrived/tests/test_alertmanager.py b/selfdrive/selfdrived/tests/test_alertmanager.py index b75a4d1cbe..b9a6c9d0a6 100644 --- a/selfdrive/selfdrived/tests/test_alertmanager.py +++ b/selfdrive/selfdrived/tests/test_alertmanager.py @@ -11,6 +11,7 @@ class TestAlertManager: Enforce that an alert lasts for max(alert duration, duration the alert is added) """ for duration in range(1, 100): + print('duration', duration) alert = None while not isinstance(alert, Alert): event = random.choice([e for e in EVENTS.values() if len(e)]) @@ -18,22 +19,47 @@ class TestAlertManager: alert.duration = duration - # check two cases: - # - alert is added to AM for <= the alert's duration - # - alert is added to AM for > alert's duration - for greater in (True, False): - if greater: - add_duration = duration + random.randint(1, 10) - else: - add_duration = random.randint(1, duration) - show_duration = max(duration, add_duration) - + # check one case: + # - if alert is re-added to AM before it ends the duration is extended + if duration > 1: AM = AlertManager() - for frame in range(duration+10): - if frame < add_duration: + show_duration = duration * 2 + for frame in range(duration * 2 + 10): + print(frame) + if frame == 0: + AM.add_many(frame, [alert, ]) + print('added!') + + if frame == duration: + # add alert one frame before it ends + assert AM.current_alert == alert AM.add_many(frame, [alert, ]) - AM.process_alerts(frame, {}) + print('added!') + AM.process_alerts(frame, set()) + print('alert', AM.current_alert) shown = AM.current_alert != EmptyAlert should_show = frame <= show_duration - assert shown == should_show, f"{frame=} {add_duration=} {duration=}" + print('shown', shown, 'should_show', should_show) + print() + assert shown == should_show, f"{frame=} {duration=}" + + # # check two cases: + # # - alert is added to AM for <= the alert's duration + # # - alert is added to AM for > alert's duration + # for greater in (True, False): + # if greater: + # add_duration = duration + random.randint(1, 10) + # else: + # add_duration = random.randint(1, duration) + # show_duration = max(duration, add_duration) + # + # AM = AlertManager() + # for frame in range(duration+10): + # if frame < add_duration: + # AM.add_many(frame, [alert, ]) + # AM.process_alerts(frame, set()) + # + # shown = AM.current_alert != EmptyAlert + # should_show = frame <= show_duration + # assert shown == should_show, f"{frame=} {add_duration=} {duration=}"