openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.

46 lines
1.2 KiB

#!/usr/bin/env python3
import os
import time
import subprocess
import cereal.messaging as messaging
from openpilot.common.basedir import BASEDIR
from openpilot.common.timeout import Timeout
from openpilot.selfdrive.test.helpers import set_params_enabled
def test_time_to_onroad():
# launch
set_params_enabled()
manager_path = os.path.join(BASEDIR, "selfdrive/manager/manager.py")
proc = subprocess.Popen(["python", manager_path])
start_time = time.monotonic()
sm = messaging.SubMaster(['controlsState', 'deviceState'])
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 engageability
with Timeout(10, "timed out waiting for engageable"):
while True:
sm.update(1000)
if sm['controlsState'].engageable:
break
time.sleep(1)
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):
sm.update(100)
assert sm['controlsState'].engageable
finally:
proc.terminate()
if proc.wait(60) is None:
proc.kill()