From b916cf297b157284393e19cc1a1ab4f68a5acb76 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 15 Dec 2023 17:26:13 -0800 Subject: [PATCH] more clean up --- selfdrive/car/tests/test_models.py | 32 ++++++++++-------------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/selfdrive/car/tests/test_models.py b/selfdrive/car/tests/test_models.py index 9e016eecba..26d11d7ce5 100755 --- a/selfdrive/car/tests/test_models.py +++ b/selfdrive/car/tests/test_models.py @@ -2,7 +2,6 @@ import capnp import os import importlib -import time import pytest import random import unittest @@ -10,7 +9,7 @@ from collections import defaultdict, Counter from typing import List, Optional, Tuple from parameterized import parameterized_class import hypothesis.strategies as st -from hypothesis import HealthCheck, Phase, assume, given, settings, seed +from hypothesis import HealthCheck, Phase, given, settings, seed from cereal import messaging, log, car from openpilot.common.basedir import BASEDIR @@ -158,8 +157,6 @@ class TestCarModelBase(unittest.TestCase): assert cls.CP assert cls.CP.carFingerprint == cls.car_model - cls.car_state_dict = {'panda': {'gas_pressed': False}, 'CS': {'gasPressed': False}} - @classmethod def tearDownClass(cls): del cls.can_msgs @@ -178,8 +175,6 @@ class TestCarModelBase(unittest.TestCase): self.assertEqual(0, set_status, f"failed to set safetyModel {cfg}") self.safety.init_tests() - self.CS_prev = car.CarState.new_message() - def test_car_params(self): if self.CP.dashcamOnly: self.skipTest("no need to check carParams for dashcamOnly") @@ -319,20 +314,18 @@ class TestCarModelBase(unittest.TestCase): checking for panda state mismatches. """ - # TODO: how much of test_panda_safety_carstate can we re-use? if self.CP.dashcamOnly: self.skipTest("no need to check panda safety for dashcamOnly") valid_addrs = [(addr, bus, size) for bus, addrs in self.fingerprint.items() for addr, size in addrs.items()] address, bus, size = data.draw(st.sampled_from(valid_addrs)) - # address = 0x201 - # bus = 0 - # print('addr, bus:', address, bus) - # size = self.fingerprint[bus][address] msg_strategy = st.binary(min_size=size, max_size=size) msgs = data.draw(st.lists(msg_strategy, min_size=20)) + # due to panda updating state selectively, only edges are expected to match + # TODO: warm up CarState with real CAN messages to check edge of both sources + # (toyota's gasPressed is the inverse of a signal being set) prev_panda_gas = self.safety.get_gas_pressed_prev() prev_panda_brake = self.safety.get_brake_pressed_prev() prev_panda_regen_braking = self.safety.get_regen_braking_prev() @@ -341,13 +334,11 @@ class TestCarModelBase(unittest.TestCase): prev_panda_acc_main_on = self.safety.get_acc_main_on() for dat in msgs: - to_send = libpanda_py.make_CANPacket(address, bus, dat) self.safety.safety_rx_hook(to_send) 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(),)) @@ -361,18 +352,17 @@ class TestCarModelBase(unittest.TestCase): # CC = car.CarControl.new_message() # CS = self.CI.update(CC, (can.to_bytes(),)) - # due to panda updating state selectively, only edges are expected to match # print('ret.gas', CS.gas, 'safety gas', self.safety.get_gas_interceptor_prev()) # print('both', CS.gasPressed, self.safety.get_gas_pressed_prev(), 'int') - if self.safety.get_gas_pressed_prev() != prev_panda_gas:# or CS.gasPressed != self.CS_prev.gasPressed: + if self.safety.get_gas_pressed_prev() != prev_panda_gas: print() print('ret.gas', CS.gas, 'safety gas', self.safety.get_gas_interceptor_prev()) print('both', CS.gasPressed, self.safety.get_gas_pressed_prev(), 'int') print('can.can', can.can) self.assertEqual(CS.gasPressed, self.safety.get_gas_pressed_prev()) - if self.safety.get_brake_pressed_prev() != prev_panda_brake:# or CS.brakePressed != self.CS_prev.brakePressed: + if self.safety.get_brake_pressed_prev() != prev_panda_brake: brake_pressed = CS.brakePressed if CS.brakePressed and not self.safety.get_brake_pressed_prev(): if self.CP.carFingerprint in (HONDA.PILOT, HONDA.RIDGELINE) and CS.brake > 0.05: @@ -383,21 +373,21 @@ class TestCarModelBase(unittest.TestCase): # print('both', CS.brakePressed, self.safety.get_brake_pressed_prev()) self.assertEqual(brake_pressed, self.safety.get_brake_pressed_prev()) - if self.safety.get_regen_braking_prev() != prev_panda_regen_braking:# or CS.regenBraking != self.CS_prev.regenBraking: + if self.safety.get_regen_braking_prev() != prev_panda_regen_braking: print('regen change!') print('both', CS.regenBraking, self.safety.get_regen_braking_prev()) self.assertEqual(CS.regenBraking, self.safety.get_regen_braking_prev()) # print('both', not CS.standstill, 'safety moving', self.safety.get_vehicle_moving()) - if self.safety.get_vehicle_moving() != prev_panda_vehicle_moving:# or CS.standstill != self.CS_prev.standstill: + if self.safety.get_vehicle_moving() != prev_panda_vehicle_moving: self.assertEqual(not CS.standstill, self.safety.get_vehicle_moving()) if not (self.CP.carName == "honda" and self.CP.carFingerprint not in HONDA_BOSCH): - if self.safety.get_cruise_engaged_prev() != prev_panda_cruise_engaged:# or CS.cruiseState.enabled != self.CS_prev.cruiseState.enabled: + if self.safety.get_cruise_engaged_prev() != prev_panda_cruise_engaged: self.assertEqual(CS.cruiseState.enabled, self.safety.get_cruise_engaged_prev()) if self.CP.carName == "honda": - if self.safety.get_acc_main_on() != prev_panda_acc_main_on:# or CS.cruiseState.available != self.CS_prev.cruiseState.available: + if self.safety.get_acc_main_on() != prev_panda_acc_main_on: self.assertEqual(CS.cruiseState.available, self.safety.get_acc_main_on()) prev_panda_gas = self.safety.get_gas_pressed_prev() @@ -407,8 +397,6 @@ class TestCarModelBase(unittest.TestCase): prev_panda_cruise_engaged = self.safety.get_cruise_engaged_prev() prev_panda_acc_main_on = self.safety.get_acc_main_on() - self.CS_prev = CS - def test_panda_safety_carstate(self): """ Assert that panda safety matches openpilot's carState