boardd: split usbprotocol unittest and fix paren order in data length assert (#23065)

pull/23069/head
Igor Biletskyy 3 years ago committed by GitHub
parent 048cc3ac9f
commit 65ca9be82a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      selfdrive/boardd/panda.cc
  2. 25
      selfdrive/boardd/tests/test_boardd_usbprotocol.cc

@ -384,7 +384,7 @@ void Panda::pack_can_buffer(const capnp::List<cereal::CanData>::Reader &can_data
} }
auto can_data = cmsg.getDat(); auto can_data = cmsg.getDat();
uint8_t data_len_code = len_to_dlc(can_data.size()); uint8_t data_len_code = len_to_dlc(can_data.size());
assert(can_data.size() <= (hw_type == cereal::PandaState::PandaType::RED_PANDA) ? 64 : 8); assert(can_data.size() <= ((hw_type == cereal::PandaState::PandaType::RED_PANDA) ? 64 : 8));
assert(can_data.size() == dlc_to_len[data_len_code]); assert(can_data.size() == dlc_to_len[data_len_code]);
can_header header; can_header header;

@ -16,7 +16,7 @@ int random_int(int min, int max) {
} }
struct PandaTest : public Panda { struct PandaTest : public Panda {
PandaTest(uint32_t bus_offset, int can_list_size); PandaTest(uint32_t bus_offset, int can_list_size, cereal::PandaState::PandaType hw_type);
void test_can_send(); void test_can_send();
void test_can_recv(); void test_can_recv();
@ -27,9 +27,11 @@ struct PandaTest : public Panda {
capnp::List<cereal::CanData>::Reader can_data_list; capnp::List<cereal::CanData>::Reader can_data_list;
}; };
PandaTest::PandaTest(uint32_t bus_offset_, int can_list_size) : can_list_size(can_list_size), Panda(bus_offset_) { PandaTest::PandaTest(uint32_t bus_offset_, int can_list_size, cereal::PandaState::PandaType hw_type) : can_list_size(can_list_size), Panda(bus_offset_) {
this->hw_type = hw_type;
int data_limit = ((hw_type == cereal::PandaState::PandaType::RED_PANDA) ? std::size(dlc_to_len) : 8);
// prepare test data // prepare test data
for (int i = 0; i < std::size(dlc_to_len); ++i) { for (int i = 0; i < data_limit; ++i) {
std::random_device rd; std::random_device rd;
std::independent_bits_engine<std::default_random_engine, CHAR_BIT, unsigned char> rbe(rd()); std::independent_bits_engine<std::default_random_engine, CHAR_BIT, unsigned char> rbe(rd());
@ -101,10 +103,23 @@ void PandaTest::test_can_recv() {
} }
} }
TEST_CASE("send/recv can packets") { TEST_CASE("send/recv CAN 2.0 packets") {
auto bus_offset = GENERATE(0, 4); auto bus_offset = GENERATE(0, 4);
auto can_list_size = GENERATE(1, 3, 5, 10, 30, 60, 100, 200); auto can_list_size = GENERATE(1, 3, 5, 10, 30, 60, 100, 200);
PandaTest test(bus_offset, can_list_size); PandaTest test(bus_offset, can_list_size, cereal::PandaState::PandaType::DOS);
SECTION("can_send") {
test.test_can_send();
}
SECTION("can_receive") {
test.test_can_recv();
}
}
TEST_CASE("send/recv CAN FD packets") {
auto bus_offset = GENERATE(0, 4);
auto can_list_size = GENERATE(1, 3, 5, 10, 30, 60, 100, 200);
PandaTest test(bus_offset, can_list_size, cereal::PandaState::PandaType::RED_PANDA);
SECTION("can_send") { SECTION("can_send") {
test.test_can_send(); test.test_can_send();

Loading…
Cancel
Save