From dbb5c6c06c74cfef13b2a5d166ddee4c2e9a8231 Mon Sep 17 00:00:00 2001 From: Pedro Alvarez Date: Tue, 18 Feb 2020 19:12:29 +0000 Subject: [PATCH] Adding PDCP LTE SRB1 test. Test failing for now. --- lib/test/upper/pdcp_base_test.h | 24 ++++++++++++++++++++++-- lib/test/upper/pdcp_lte_test.h | 2 +- lib/test/upper/pdcp_lte_test_rx.cc | 21 +++++++++++++++++---- 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/lib/test/upper/pdcp_base_test.h b/lib/test/upper/pdcp_base_test.h index 0bc116e48..902388786 100644 --- a/lib/test/upper/pdcp_base_test.h +++ b/lib/test/upper/pdcp_base_test.h @@ -100,15 +100,35 @@ private: class rrc_dummy : public srsue::rrc_interface_pdcp { public: - rrc_dummy(srslte::log* log_) {} + rrc_dummy(srslte::log* log_) { log = log_; } - void write_pdu(uint32_t lcid, srslte::unique_byte_buffer_t pdu) {} void write_pdu_bcch_bch(srslte::unique_byte_buffer_t pdu) {} void write_pdu_bcch_dlsch(srslte::unique_byte_buffer_t pdu) {} void write_pdu_pcch(srslte::unique_byte_buffer_t pdu) {} void write_pdu_mch(uint32_t lcid, srslte::unique_byte_buffer_t pdu) {} std::string get_rb_name(uint32_t lcid) { return "None"; } + + srslte::log* log; + + // Members for testing + uint32_t rx_count = 0; + srslte::unique_byte_buffer_t last_pdu; + + // Methods for testing + void get_last_pdu(const srslte::unique_byte_buffer_t& pdu) + { + memcpy(pdu->msg, last_pdu->msg, last_pdu->N_bytes); + pdu->N_bytes = last_pdu->N_bytes; + return; + } + + void write_pdu(uint32_t lcid, srslte::unique_byte_buffer_t pdu) + { + log->info_hex(pdu->msg, pdu->N_bytes, "RRC PDU"); + rx_count++; + last_pdu.swap(pdu); + } }; class gw_dummy : public srsue::gw_interface_pdcp diff --git a/lib/test/upper/pdcp_lte_test.h b/lib/test/upper/pdcp_lte_test.h index d51bf198f..5e0adcaf5 100644 --- a/lib/test/upper/pdcp_lte_test.h +++ b/lib/test/upper/pdcp_lte_test.h @@ -55,7 +55,7 @@ pdcp_security_cfg sec_cfg = { k_int, k_enc, srslte::INTEGRITY_ALGORITHM_ID_128_EIA2, - srslte::CIPHERING_ALGORITHM_ID_128_EEA2, + srslte::CIPHERING_ALGORITHM_ID_EEA0, }; // Test SDUs for tx diff --git a/lib/test/upper/pdcp_lte_test_rx.cc b/lib/test/upper/pdcp_lte_test_rx.cc index 5a322f527..b3bb55bd3 100644 --- a/lib/test/upper/pdcp_lte_test_rx.cc +++ b/lib/test/upper/pdcp_lte_test_rx.cc @@ -46,6 +46,7 @@ int test_rx(std::vector events, pdcp_lte_test_helper pdcp_hlp_rx(cfg_rx, sec_cfg, log); srslte::pdcp_entity_lte* pdcp_rx = &pdcp_hlp_rx.pdcp; gw_dummy* gw_rx = &pdcp_hlp_rx.gw; + rrc_dummy* rrc_rx = &pdcp_hlp_rx.rrc; srslte::timer_handler* timers_rx = &pdcp_hlp_rx.timers; pdcp_hlp_rx.set_pdcp_initial_state(init_state); @@ -59,11 +60,23 @@ int test_rx(std::vector events, } } + log->debug("%d", gw_rx->rx_count); + log->debug("%d", rrc_rx->rx_count); // Test if the number of RX packets - TESTASSERT(gw_rx->rx_count == n_sdus_exp); - srslte::unique_byte_buffer_t sdu_act = allocate_unique_buffer(*pool); - gw_rx->get_last_pdu(sdu_act); - TESTASSERT(compare_two_packets(sdu_exp, sdu_act) == 0); + if (rb_type == srslte::PDCP_RB_IS_DRB) { + TESTASSERT(gw_rx->rx_count == n_sdus_exp); + srslte::unique_byte_buffer_t sdu_act = allocate_unique_buffer(*pool); + gw_rx->get_last_pdu(sdu_act); + TESTASSERT(compare_two_packets(sdu_exp, sdu_act) == 0); + } else { + log->debug("%d", rrc_rx->rx_count); + TESTASSERT(rrc_rx->rx_count == n_sdus_exp); + srslte::unique_byte_buffer_t sdu_act = allocate_unique_buffer(*pool); + rrc_rx->get_last_pdu(sdu_act); + log->debug("%d", sdu_act->N_bytes); + log->debug("%d", sdu_exp->N_bytes); + TESTASSERT(compare_two_packets(sdu_exp, sdu_act) == 0); + } return 0; }