thought interleaving addrs might help, but we can fine tune later

pull/30443/head
Shane Smiskol 1 year ago
parent 00e0b428ae
commit 153301384b
  1. 31
      selfdrive/car/tests/test_models.py

@ -157,13 +157,13 @@ class TestCarModelBase(unittest.TestCase):
assert cls.CP assert cls.CP
assert cls.CP.carFingerprint == cls.car_model assert cls.CP.carFingerprint == cls.car_model
cls.car_state_dict = {'panda': {'gas_pressed': False}, 'CS': {'gasPressed': False}} # cls.car_state_dict = {'panda': {'gas_pressed': False}, 'CS': {'gasPressed': False}}
cls.init_gas_pressed = False # cls.init_gas_pressed = False
@classmethod @classmethod
def tearDownClass(cls): def tearDownClass(cls):
del cls.can_msgs del cls.can_msgs
gc.collect() # gc.collect()
def setUp(self): def setUp(self):
self.CI = self.CarInterface(self.CP.copy(), self.CarController, self.CarState) self.CI = self.CarInterface(self.CP.copy(), self.CarController, self.CarState)
@ -328,15 +328,28 @@ class TestCarModelBase(unittest.TestCase):
if self.CP.dashcamOnly: if self.CP.dashcamOnly:
self.skipTest("no need to check panda safety for dashcamOnly") self.skipTest("no need to check panda safety for dashcamOnly")
valid_addrs = [(addr, bus) for bus, addrs in self.fingerprint.items() for addr in addrs] valid_addrs = [(addr, bus, size) for bus, addrs in self.fingerprint.items() for addr, size in addrs.items()]
address, bus = data.draw(st.sampled_from(valid_addrs))
# addrs = [data.draw(st.sampled_from(valid_addrs)) for _ in range(10)]
# addrs = data.draw(st.sets(st.sampled_from(valid_addrs), min_size=10, max_size=10))
addrs = st.lists(st.sampled_from(valid_addrs), min_size=10, max_size=10, unique=True)
# print(addrs)
# return
# address, bus = data.draw(st.sampled_from(valid_addrs))
# address = 0x201 # address = 0x201
# bus = 0 # bus = 0
# print('addr, bus:', address, bus) # print('addr, bus:', address, bus)
size = self.fingerprint[bus][address] # size = self.fingerprint[bus][address]
msg_strategy = st.binary(min_size=size, max_size=size) # msg_strategy = st.binary(min_size=size, max_size=size)
msgs = data.draw(st.lists(msg_strategy, min_size=20)) msgs = [(addr, bus, data.draw(st.binary(min_size=size, max_size=size))) for addr, bus, size in data.draw(addrs) for _ in range(20)]
random.shuffle(msgs)
print(msgs)
return
# msgs = data.draw(st.lists(msg_strategy, min_size=20))
# print(msgs)
prev_panda_gas = self.safety.get_gas_pressed_prev() prev_panda_gas = self.safety.get_gas_pressed_prev()
prev_panda_brake = self.safety.get_brake_pressed_prev() prev_panda_brake = self.safety.get_brake_pressed_prev()
@ -345,7 +358,7 @@ class TestCarModelBase(unittest.TestCase):
prev_panda_cruise_engaged = self.safety.get_cruise_engaged_prev() prev_panda_cruise_engaged = self.safety.get_cruise_engaged_prev()
prev_panda_acc_main_on = self.safety.get_acc_main_on() prev_panda_acc_main_on = self.safety.get_acc_main_on()
for dat in msgs: for address, bus, dat in msgs:
to_send = libpanda_py.make_CANPacket(address, bus, dat) to_send = libpanda_py.make_CANPacket(address, bus, dat)
self.safety.safety_rx_hook(to_send) self.safety.safety_rx_hook(to_send)

Loading…
Cancel
Save