mirror of
https://github.com/dragonpilot/dragonpilot.git
synced 2026-06-24 07:22:04 +08:00
ensure startup is clean (#31504)
* strict * cleanup --------- Co-authored-by: Comma Device <device@comma.ai>
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user