mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-08-19 22:23:44 +08:00
29 lines
1.3 KiB
Python
29 lines
1.3 KiB
Python
import copy
|
|
from openpilot.common.test import OpenpilotTestCase
|
|
from openpilot.common.parameterized import parameterized
|
|
from openpilot.common.fuzzy import capnp_random_dict, fuzzy_test
|
|
|
|
from openpilot.cereal import log
|
|
from opendbc.car.toyota.values import CAR as TOYOTA
|
|
import openpilot.selfdrive.test.process_replay.process_replay as pr
|
|
|
|
# These processes currently fail because of unrealistic data breaking assumptions
|
|
# that openpilot makes causing error with NaN, inf, int size, array indexing ...
|
|
# TODO: Make each one testable
|
|
NOT_TESTED = ['selfdrived', 'controlsd', 'card', 'plannerd', 'calibrationd', 'dmonitoringd', 'paramsd', 'dmonitoringmodeld', 'modeld']
|
|
|
|
TEST_CASES = [(cfg.proc_name, copy.deepcopy(cfg)) for cfg in pr.CONFIGS if cfg.proc_name not in NOT_TESTED]
|
|
|
|
class TestFuzzProcesses(OpenpilotTestCase):
|
|
|
|
# TODO: make this faster and increase examples
|
|
@parameterized.expand(TEST_CASES)
|
|
@fuzzy_test(max_examples=10)
|
|
def test_fuzz_process(self, proc_name, cfg, fuzzy):
|
|
msgs = [capnp_random_dict(fuzzy, log.Event.schema, event, real_floats=True) for event in sorted(cfg.pubs)]
|
|
for i, msg in enumerate(msgs):
|
|
msg["logMonoTime"] = i * 1_000_000_000
|
|
lr = [log.Event.new_message(**m).as_reader() for m in msgs]
|
|
cfg.timeout = 5
|
|
pr.replay_process(cfg, lr, fingerprint=TOYOTA.TOYOTA_COROLLA_TSS2, disable_progress=True)
|