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
Adeeb Shihadeh 2 years ago committed by GitHub
parent 6dc5e28ef9
commit a3dcc5cd97
  1. 1
      Jenkinsfile
  2. 1
      release/files_common
  3. 8
      selfdrive/test/helpers.py
  4. 6
      selfdrive/test/test_onroad.py
  5. 46
      selfdrive/test/test_time_to_onroad.py

1
Jenkinsfile vendored

@ -153,6 +153,7 @@ pipeline {
["build master-ci", "cd $SOURCE_DIR/release && TARGET_DIR=$TEST_DIR EXTRA_FILES='tools/' ./build_devel.sh"], ["build master-ci", "cd $SOURCE_DIR/release && TARGET_DIR=$TEST_DIR EXTRA_FILES='tools/' ./build_devel.sh"],
["build openpilot", "cd selfdrive/manager && ./build.py"], ["build openpilot", "cd selfdrive/manager && ./build.py"],
["check dirty", "release/check-dirty.sh"], ["check dirty", "release/check-dirty.sh"],
["time to onroad", "cd selfdrive/test/ && pytest test_time_to_onroad.py"],
["onroad tests", "cd selfdrive/test/ && ./test_onroad.py"], ["onroad tests", "cd selfdrive/test/ && ./test_onroad.py"],
["test car interfaces", "cd selfdrive/car/tests/ && ./test_car_interfaces.py"], ["test car interfaces", "cd selfdrive/car/tests/ && ./test_car_interfaces.py"],
]) ])

@ -293,6 +293,7 @@ selfdrive/test/__init__.py
selfdrive/test/helpers.py selfdrive/test/helpers.py
selfdrive/test/setup_device_ci.sh selfdrive/test/setup_device_ci.sh
selfdrive/test/test_onroad.py selfdrive/test/test_onroad.py
selfdrive/test/test_time_to_onroad.py
selfdrive/ui/.gitignore selfdrive/ui/.gitignore
selfdrive/ui/SConscript selfdrive/ui/SConscript

@ -3,13 +3,19 @@ import time
from functools import wraps from functools import wraps
import cereal.messaging as messaging import cereal.messaging as messaging
from common.params import Params
from selfdrive.manager.process_config import managed_processes from selfdrive.manager.process_config import managed_processes
from system.hardware import PC from system.hardware import PC
from system.version import training_version, terms_version from system.version import training_version, terms_version
def set_params_enabled(): def set_params_enabled():
from common.params import Params os.environ['PASSIVE'] = "0"
os.environ['REPLAY'] = "1"
os.environ['SKIP_FW_QUERY'] = "1"
os.environ['FINGERPRINT'] = "TOYOTA COROLLA TSS2 2019"
os.environ['LOGPRINT'] = "debug"
params = Params() params = Params()
params.put("HasAcceptedTerms", terms_version) params.put("HasAcceptedTerms", terms_version)
params.put("CompletedTrainingVersion", training_version) params.put("CompletedTrainingVersion", training_version)

@ -95,12 +95,6 @@ class TestOnroad(unittest.TestCase):
return return
# setup env # setup env
os.environ['PASSIVE'] = "0"
os.environ['REPLAY'] = "1"
os.environ['SKIP_FW_QUERY'] = "1"
os.environ['FINGERPRINT'] = "TOYOTA COROLLA TSS2 2019"
os.environ['LOGPRINT'] = "debug"
params = Params() params = Params()
params.clear_all() params.clear_all()
set_params_enabled() set_params_enabled()

@ -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…
Cancel
Save