no more multi can msgs

pull/30443/head
Shane Smiskol 2 years ago
parent 012e7b94cb
commit 0d6c50f606
  1. 2
      opendbc
  2. 2
      panda
  3. 35
      selfdrive/car/tests/test_models.py

@ -1 +1 @@
Subproject commit f3eaf877a65f5323d431ec434d19c83f2e1ffea6
Subproject commit ceea5a4bcb11b2c05f8fa8a291c6ad8127f194c4

@ -1 +1 @@
Subproject commit 0f40708e248121ff0843a753081c618e919760c2
Subproject commit 7fcc5b8dadbd44f253068dffd4b7f9e43ec05c5a

@ -192,7 +192,7 @@ class TestCarModelBase(unittest.TestCase):
suppress_health_check=[HealthCheck.filter_too_much, HealthCheck.too_slow, HealthCheck.large_base_example],
)
@given(data=st.data())
@seed(0) # for reproduction
# @seed(0) # for reproduction
def test_panda_safety_carstate_fuzzy(self, data):
state_has_changed = lambda prev_state, new_state: prev_state != new_state
# cfg = self.CP.safetyConfigs[-1]
@ -217,14 +217,13 @@ class TestCarModelBase(unittest.TestCase):
# print(self.fingerprint)
# address = data.draw(st.integers(0x201, 0x226))
bus = 0
# ORIG:
# msg_strategy = st.tuples(st.integers(min_value=0, max_value=0), st.integers(min_value=0x100, max_value=0x400), st.binary(min_size=8, max_size=8))
# msg_strategy = st.tuples(st.integers(min_value=0xaa, max_value=0xaa), st.binary(min_size=8, max_size=8))
msg_strategy = st.binary(min_size=size, max_size=size)
msgs = data.draw(st.lists(msg_strategy, min_size=50))
msgs = data.draw(st.lists(msg_strategy, min_size=20))
# print(len(msgs))
prev_panda_gas = self.safety.get_gas_pressed_prev()
@ -239,25 +238,31 @@ class TestCarModelBase(unittest.TestCase):
# for bus, address, dat in msgs:
# since all toyotas can detect fake interceptor, but we want to test PCM gas too
for dat1, dat2, dat3, dat4 in zip(*[iter(msgs)] * 4):
for dat in msgs:
# set interceptor detected so we don't accidentally trigger gas_pressed with other message
self.safety.set_gas_interceptor_detected(self.CP.enableGasInterceptor)
# if not self.CP.enableGasInterceptor:
# self.safety.set_gas_interceptor_detected(False)
print()
for dat in (dat1, dat2, dat3, dat4):
to_send = libpanda_py.make_CANPacket(address, bus, dat)
did_rx = self.safety.safety_rx_hook(to_send)
to_send = libpanda_py.make_CANPacket(address, bus, dat)
did_rx = self.safety.safety_rx_hook(to_send)
# test multiple CAN packets as well as multiple messages per CAN packet
for (_dat1, _dat2) in ((dat1, dat2), (dat3, dat4)):
can = messaging.new_message('can', 2)
can.can = [log.CanData(address=address, dat=_dat1, src=bus), log.CanData(address=address, dat=_dat2, src=bus)]
print('rxing', dict(address=address, _dat1=_dat1, _dat2=_dat2, src=bus))
can = messaging.new_message('can', 1)
can.can = [log.CanData(address=address, dat=dat, src=bus)]
print('rxing', dict(address=address, dat=dat, src=bus))
CC = car.CarControl.new_message()
CS = self.CI.update(CC, (can.to_bytes(),))
CC = car.CarControl.new_message()
CS = self.CI.update(CC, (can.to_bytes(),))
# test multiple CAN packets as well as multiple messages per CAN packet
# for (_dat1, _dat2) in ((dat1, dat2), (dat3, dat4)):
# can = messaging.new_message('can', 2)
# can.can = [log.CanData(address=address, dat=_dat1, src=bus), log.CanData(address=address, dat=_dat2, src=bus)]
# print('rxing', dict(address=address, _dat1=_dat1, _dat2=_dat2, src=bus))
#
# CC = car.CarControl.new_message()
# CS = self.CI.update(CC, (can.to_bytes(),))
if self.safety.get_gas_pressed_prev():
self.init_gas_pressed = True
@ -266,7 +271,7 @@ class TestCarModelBase(unittest.TestCase):
# if self.safety.get_gas_interceptor_detected():# and state_has_changed(start_gas, self.safety.get_gas_pressed_prev()):
# print('ret.gas', CS.gas, 'safety gas', self.safety.get_gas_interceptor_prev())
print('both', CS.brakePressed, 'safety brake', self.safety.get_brake_pressed_prev())
# print('both', CS.gasPressed, self.safety.get_gas_pressed_prev(), 'int')
if self.safety.get_gas_pressed_prev() != prev_panda_gas:
print()
print('ret.gas', CS.gas, 'safety gas', self.safety.get_gas_interceptor_prev())

Loading…
Cancel
Save