time to onroad test (#28242)
* time to onroad test
* run few times
* test on stripped builds
* manager
* cleanup
* split those out
* run first
---------
Co-authored-by: Comma Device <device@comma.ai>
old-commit-hash: 39c5d492bf
beeps
parent
6dc5e28ef9
commit
a3dcc5cd97
5 changed files with 55 additions and 7 deletions
@ -0,0 +1,46 @@ |
|||||||
|
#!/usr/bin/env python3 |
||||||
|
import os |
||||||
|
import time |
||||||
|
import subprocess |
||||||
|
import pytest |
||||||
|
|
||||||
|
import cereal.messaging as messaging |
||||||
|
from common.basedir import BASEDIR |
||||||
|
from common.timeout import Timeout |
||||||
|
from 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() |
Loading…
Reference in new issue