ensure startup is clean (#31504)

* strict

* cleanup

---------

Co-authored-by: Comma Device <device@comma.ai>
pull/31511/head
Adeeb Shihadeh 1 year ago committed by GitHub
parent b28daef34a
commit c6eae405a5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 1
      selfdrive/test/helpers.py
  2. 1
      selfdrive/test/test_onroad.py
  3. 34
      selfdrive/test/test_time_to_onroad.py

@ -11,7 +11,6 @@ from openpilot.system.version import training_version, terms_version
def set_params_enabled():
os.environ['REPLAY'] = "1"
os.environ['FINGERPRINT'] = "TOYOTA COROLLA TSS2 2019"
os.environ['LOGPRINT'] = "debug"

@ -114,6 +114,7 @@ class TestOnroad(unittest.TestCase):
params = Params()
params.remove("CurrentRoute")
set_params_enabled()
os.environ['REPLAY'] = '1'
os.environ['TESTING_CLOSET'] = '1'
if os.path.exists(Paths.log_root()):
shutil.rmtree(Paths.log_root())

@ -18,33 +18,39 @@ def test_time_to_onroad():
proc = subprocess.Popen(["python", manager_path])
start_time = time.monotonic()
sm = messaging.SubMaster(['controlsState', 'deviceState', 'onroadEvents'])
sm = messaging.SubMaster(['controlsState', 'deviceState', 'onroadEvents', 'sendcan'])
try:
# wait for onroad
with Timeout(20, "timed out waiting to go onroad"):
while True:
sm.update(1000)
if sm['deviceState'].started:
break
time.sleep(1)
# wait for onroad. timeout assumes panda is up to date
with Timeout(10, "timed out waiting to go onroad"):
while not sm['deviceState'].started:
sm.update(100)
# wait for engageability
try:
with Timeout(10, "timed out waiting for engageable"):
sendcan_frame = None
while True:
sm.update(1000)
if sm['controlsState'].engageable:
sm.update(100)
# sendcan is only sent once we're initialized
if sm.seen['controlsState'] and sendcan_frame is None:
sendcan_frame = sm.frame
if sendcan_frame is not None and sm.recv_frame['sendcan'] > sendcan_frame:
sm.update(100)
assert sm['controlsState'].engageable, f"events: {sm['onroadEvents']}"
break
time.sleep(1)
finally:
print(f"onroad events: {sm['onroadEvents']}")
print(f"engageable after {time.monotonic() - start_time:.2f}s")
# once we're enageable, must be for the next few seconds
for _ in range(500):
# once we're enageable, must stay for the next few seconds
st = time.monotonic()
while (time.monotonic() - st) < 10.:
sm.update(100)
assert sm.all_alive(), sm.alive
assert sm['controlsState'].engageable, f"events: {sm['onroadEvents']}"
finally:
proc.terminate()
if proc.wait(60) is None:
if proc.wait(20) is None:
proc.kill()

Loading…
Cancel
Save