You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
3.4 KiB
86 lines
3.4 KiB
import unittest
|
|
import random
|
|
|
|
from selfdrive.can.tests.packer_old import CANPacker as CANPackerOld
|
|
from selfdrive.can.packer import CANPacker
|
|
from selfdrive.car.toyota.toyotacan import (
|
|
create_ipas_steer_command, create_steer_command, create_accel_command,
|
|
create_fcw_command, create_ui_command
|
|
)
|
|
from common.realtime import sec_since_boot
|
|
|
|
|
|
class TestPackerMethods(unittest.TestCase):
|
|
def setUp(self):
|
|
self.cp_old = CANPackerOld("toyota_rav4_hybrid_2017_pt_generated")
|
|
self.cp = CANPacker("toyota_rav4_hybrid_2017_pt_generated")
|
|
|
|
def test_correctness(self):
|
|
# Test all commands, randomize the params.
|
|
for _ in range(1000):
|
|
# Toyota
|
|
steer = random.randint(-1, 1)
|
|
enabled = (random.randint(0, 2) % 2 == 0)
|
|
apgs_enabled = (random.randint(0, 2) % 2 == 0)
|
|
m_old = create_ipas_steer_command(self.cp_old, steer, enabled, apgs_enabled)
|
|
m = create_ipas_steer_command(self.cp, steer, enabled, apgs_enabled)
|
|
self.assertEqual(m_old, m)
|
|
|
|
steer = (random.randint(0, 2) % 2 == 0)
|
|
steer_req = (random.randint(0, 2) % 2 == 0)
|
|
raw_cnt = random.randint(1, 65536)
|
|
m_old = create_steer_command(self.cp_old, steer, steer_req, raw_cnt)
|
|
m = create_steer_command(self.cp, steer, steer_req, raw_cnt)
|
|
self.assertEqual(m_old, m)
|
|
|
|
accel = (random.randint(0, 2) % 2 == 0)
|
|
pcm_cancel = (random.randint(0, 2) % 2 == 0)
|
|
standstill_req = (random.randint(0, 2) % 2 == 0)
|
|
lead = (random.randint(0, 2) % 2 == 0)
|
|
m_old = create_accel_command(self.cp_old, accel, pcm_cancel, standstill_req, lead)
|
|
m = create_accel_command(self.cp, accel, pcm_cancel, standstill_req, lead)
|
|
self.assertEqual(m_old, m)
|
|
|
|
fcw = random.randint(1, 65536)
|
|
m_old = create_fcw_command(self.cp_old, fcw)
|
|
m = create_fcw_command(self.cp, fcw)
|
|
self.assertEqual(m_old, m)
|
|
|
|
steer = (random.randint(0, 2) % 2 == 0)
|
|
chime = random.randint(1, 65536)
|
|
left_line = (random.randint(0, 2) % 2 == 0)
|
|
right_line = (random.randint(0, 2) % 2 == 0)
|
|
left_lane_depart = (random.randint(0, 2) % 2 == 0)
|
|
right_lane_depart = (random.randint(0, 2) % 2 == 0)
|
|
m_old = create_ui_command(self.cp_old, steer, chime, left_line, right_line, left_lane_depart, right_lane_depart)
|
|
m = create_ui_command(self.cp, steer, chime, left_line, right_line, left_lane_depart, right_lane_depart)
|
|
self.assertEqual(m_old, m)
|
|
|
|
def test_performance(self):
|
|
n1 = sec_since_boot()
|
|
recursions = 100000
|
|
steer = (random.randint(0, 2) % 2 == 0)
|
|
chime = random.randint(1, 65536)
|
|
left_line = (random.randint(0, 2) % 2 == 0)
|
|
right_line = (random.randint(0, 2) % 2 == 0)
|
|
left_lane_depart = (random.randint(0, 2) % 2 == 0)
|
|
right_lane_depart = (random.randint(0, 2) % 2 == 0)
|
|
|
|
for _ in range(recursions):
|
|
create_ui_command(self.cp_old, steer, chime, left_line, right_line, left_lane_depart, right_lane_depart)
|
|
n2 = sec_since_boot()
|
|
elapsed_old = n2 - n1
|
|
|
|
# print('Old API, elapsed time: {} secs'.format(elapsed_old))
|
|
n1 = sec_since_boot()
|
|
for _ in range(recursions):
|
|
create_ui_command(self.cp, steer, chime, left_line, right_line, left_lane_depart, right_lane_depart)
|
|
n2 = sec_since_boot()
|
|
elapsed_new = n2 - n1
|
|
# print('New API, elapsed time: {} secs'.format(elapsed_new))
|
|
self.assertTrue(elapsed_new < elapsed_old / 2)
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|
|
|