mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-02-18 22:23:56 +08:00
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
This commit is contained in:
1
Jenkinsfile
vendored
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 openpilot", "cd selfdrive/manager && ./build.py"],
|
||||
["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"],
|
||||
["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/setup_device_ci.sh
|
||||
selfdrive/test/test_onroad.py
|
||||
selfdrive/test/test_time_to_onroad.py
|
||||
|
||||
selfdrive/ui/.gitignore
|
||||
selfdrive/ui/SConscript
|
||||
|
||||
@@ -3,13 +3,19 @@ import time
|
||||
from functools import wraps
|
||||
|
||||
import cereal.messaging as messaging
|
||||
from common.params import Params
|
||||
from selfdrive.manager.process_config import managed_processes
|
||||
from system.hardware import PC
|
||||
from system.version import training_version, terms_version
|
||||
|
||||
|
||||
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.put("HasAcceptedTerms", terms_version)
|
||||
params.put("CompletedTrainingVersion", training_version)
|
||||
|
||||
@@ -95,12 +95,6 @@ class TestOnroad(unittest.TestCase):
|
||||
return
|
||||
|
||||
# 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.clear_all()
|
||||
set_params_enabled()
|
||||
|
||||
46
selfdrive/test/test_time_to_onroad.py
Executable file
46
selfdrive/test/test_time_to_onroad.py
Executable file
@@ -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()
|
||||
Reference in New Issue
Block a user