|
|
|
@ -9,6 +9,7 @@ import cereal.messaging as messaging |
|
|
|
|
from cereal import car |
|
|
|
|
from common.basedir import PARAMS |
|
|
|
|
from common.params import Params |
|
|
|
|
from common.spinner import Spinner |
|
|
|
|
from panda import Panda |
|
|
|
|
from selfdrive.boardd.boardd import can_list_to_can_capnp |
|
|
|
|
from selfdrive.car import make_can_msg |
|
|
|
@ -33,7 +34,9 @@ os.environ['PARAMS_PATH'] = PARAMS |
|
|
|
|
@with_processes(['boardd']) |
|
|
|
|
def test_boardd_loopback(): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# wait for boardd to init |
|
|
|
|
spinner = Spinner() |
|
|
|
|
time.sleep(2) |
|
|
|
|
|
|
|
|
|
# boardd blocks on CarVin and CarParams |
|
|
|
@ -47,7 +50,10 @@ def test_boardd_loopback(): |
|
|
|
|
|
|
|
|
|
time.sleep(1) |
|
|
|
|
|
|
|
|
|
for i in range(1000): |
|
|
|
|
n = 1000 |
|
|
|
|
for i in range(n): |
|
|
|
|
spinner.update(f"boardd loopback {i}/{n}") |
|
|
|
|
|
|
|
|
|
sent_msgs = defaultdict(set) |
|
|
|
|
for _ in range(random.randrange(10)): |
|
|
|
|
to_send = [] |
|
|
|
@ -73,3 +79,5 @@ def test_boardd_loopback(): |
|
|
|
|
# if a set isn't empty, messages got dropped |
|
|
|
|
for bus in range(3): |
|
|
|
|
assert not len(sent_msgs[bus]), f"loop {i}: bus {bus} missing {len(sent_msgs[bus])} messages" |
|
|
|
|
|
|
|
|
|
spinner.close() |
|
|
|
|