Skip to content

Commit df10dc9

Browse files
FabianEckermanncodebot
authored andcommitted
cu_cp: extract rrc timers in unit tests from test message
1 parent 8776670 commit df10dc9

8 files changed

+39
-17
lines changed

tests/unittests/cu_cp/cu_cp_initial_context_setup_test.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,8 +273,6 @@ class cu_cp_initial_context_setup_test : public cu_cp_test_environment, public :
273273
ngap_message ngap_pdu;
274274
f1ap_message f1ap_pdu;
275275
e1ap_message e1ap_pdu;
276-
277-
std::chrono::milliseconds rrc_procedure_extra_time{500};
278276
};
279277

280278
TEST_F(cu_cp_initial_context_setup_test, when_ue_context_setup_fails_then_initial_context_setup_fails)

tests/unittests/cu_cp/cu_cp_pdu_session_resource_modify_test.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -279,15 +279,12 @@ class cu_cp_pdu_session_resource_modify_test : public cu_cp_test_environment, pu
279279
return true;
280280
}
281281

282-
std::chrono::milliseconds rrc_procedure_extra_time{500};
283-
std::chrono::milliseconds t310{1000};
284-
std::chrono::milliseconds t311{3000};
285-
286282
[[nodiscard]] bool timeout_rrc_reconfiguration_and_await_pdu_session_modify_response()
287283
{
288284
// Fail RRC Reconfiguration (UE doesn't respond) and wait for PDU Session Resource Setup Response
289285
if (tick_until(
290-
t310 + t311 + rrc_procedure_extra_time + this->get_cu_cp_cfg().rrc.rrc_procedure_guard_time_ms,
286+
rrc_test_timer_values.t310 + rrc_test_timer_values.t311 + rrc_procedure_extra_time +
287+
this->get_cu_cp_cfg().rrc.rrc_procedure_guard_time_ms,
291288
[&]() { return false; },
292289
false)) {
293290
return false;

tests/unittests/cu_cp/cu_cp_pdu_session_resource_setup_test.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -200,15 +200,12 @@ class cu_cp_pdu_session_resource_setup_test : public cu_cp_test_environment, pub
200200
pdu_sessions_failed_to_modify);
201201
}
202202

203-
std::chrono::milliseconds rrc_procedure_extra_time{500};
204-
std::chrono::milliseconds t310{1000};
205-
std::chrono::milliseconds t311{3000};
206-
207203
[[nodiscard]] bool timeout_rrc_reconfiguration_and_await_pdu_session_setup_response()
208204
{
209205
// Fail RRC Reconfiguration (UE doesn't respond) and wait for PDU Session Resource Setup Response
210206
if (tick_until(
211-
t310 + t311 + rrc_procedure_extra_time + this->get_cu_cp_cfg().rrc.rrc_procedure_guard_time_ms,
207+
rrc_test_timer_values.t310 + rrc_test_timer_values.t311 + rrc_procedure_extra_time +
208+
this->get_cu_cp_cfg().rrc.rrc_procedure_guard_time_ms,
212209
[&]() { return false; },
213210
false)) {
214211
return false;

tests/unittests/cu_cp/cu_cp_reestablishment_test.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -362,9 +362,6 @@ class cu_cp_reestablishment_test : public cu_cp_test_environment, public ::testi
362362
pci_t old_pci = 0;
363363
amf_ue_id_t amf_ue_id = amf_ue_id_t::min;
364364
gnb_cu_up_ue_e1ap_id_t cu_up_e1ap_id = gnb_cu_up_ue_e1ap_id_t::min;
365-
366-
std::chrono::milliseconds rrc_procedure_extra_time{500};
367-
std::chrono::milliseconds t300{400};
368365
};
369366

370367
TEST_F(cu_cp_reestablishment_test, when_old_ue_does_not_exist_then_reestablishment_fails)
@@ -518,7 +515,7 @@ TEST_F(cu_cp_reestablishment_test, when_old_ue_is_busy_with_a_procedure_then_ree
518515

519516
// RRC Setup timeout for old UE.
520517
std::chrono::milliseconds timeout =
521-
t300 + rrc_procedure_extra_time + this->get_cu_cp_cfg().rrc.rrc_procedure_guard_time_ms;
518+
rrc_test_timer_values.t300 + rrc_procedure_extra_time + this->get_cu_cp_cfg().rrc.rrc_procedure_guard_time_ms;
522519
for (unsigned i = 0; i != timeout.count(); ++i) {
523520
this->tick();
524521
}

tests/unittests/cu_cp/cu_cp_test_environment.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@
1515
#include "tests/test_doubles/rrc/rrc_test_message_validators.h"
1616
#include "tests/test_doubles/rrc/rrc_test_messages.h"
1717
#include "tests/unittests/cu_cp/test_doubles/mock_cu_up.h"
18+
#include "tests/unittests/cu_cp/test_helpers.h"
1819
#include "tests/unittests/e1ap/common/e1ap_cu_cp_test_messages.h"
1920
#include "tests/unittests/ngap/ngap_test_messages.h"
21+
#include "srsran/asn1/f1ap/f1ap_pdu_contents.h"
2022
#include "srsran/asn1/f1ap/f1ap_pdu_contents_ue.h"
2123
#include "srsran/asn1/ngap/ngap_pdu_contents.h"
2224
#include "srsran/asn1/rrc_nr/dl_ccch_msg.h"
@@ -361,7 +363,9 @@ bool cu_cp_test_environment::run_f1_setup(unsigned
361363
gnb_du_id_t gnb_du_id,
362364
std::vector<test_helpers::served_cell_item_info> cells)
363365
{
364-
get_du(du_idx).push_ul_pdu(test_helpers::generate_f1_setup_request(gnb_du_id, std::move(cells)));
366+
f1ap_message f1_setup_req = test_helpers::generate_f1_setup_request(gnb_du_id, cells);
367+
rrc_test_timer_values = get_timers(f1_setup_req.pdu.init_msg().value.f1_setup_request());
368+
get_du(du_idx).push_ul_pdu(f1_setup_req);
365369
f1ap_message f1ap_pdu;
366370
bool result = this->wait_for_f1ap_tx_pdu(du_idx, f1ap_pdu);
367371
return result;

tests/unittests/cu_cp/cu_cp_test_environment.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,9 @@ class cu_cp_test_environment
229229
const std::vector<pdu_session_id_t>& expected_pdu_sessions_to_setup,
230230
const std::vector<pdu_session_id_t>& expected_pdu_sessions_failed_to_setup);
231231

232+
rrc_timers_t rrc_test_timer_values;
233+
std::chrono::milliseconds rrc_procedure_extra_time{500};
234+
232235
private:
233236
class worker_manager;
234237

tests/unittests/cu_cp/test_helpers.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
#include "test_helpers.h"
1212
#include "../rrc/rrc_ue_test_helpers.h"
1313
#include "tests/test_doubles/rrc/rrc_test_messages.h"
14+
#include "srsran/asn1/f1ap/f1ap.h"
15+
#include "srsran/asn1/f1ap/f1ap_pdu_contents.h"
1416
#include "srsran/security/integrity.h"
1517

1618
using namespace srsran;
@@ -57,3 +59,23 @@ byte_buffer srsran::srs_cu_cp::generate_rrc_reconfiguration_complete_pdu(unsigne
5759

5860
return pdu_with_count;
5961
}
62+
63+
rrc_timers_t srsran::srs_cu_cp::get_timers(const asn1::f1ap::f1_setup_request_s& f1_setup_req)
64+
{
65+
rrc_timers_t timers;
66+
67+
auto& sib1_container = f1_setup_req->gnb_du_served_cells_list[0]->gnb_du_served_cells_item().gnb_du_sys_info.sib1_msg;
68+
69+
// Unpack SIB1 to store timers.
70+
asn1::rrc_nr::sib1_s sib1_msg;
71+
asn1::cbit_ref bref2(sib1_container);
72+
if (sib1_msg.unpack(bref2) != asn1::SRSASN_SUCCESS) {
73+
report_fatal_error("Failed to unpack SIB1");
74+
}
75+
timers.t300 = std::chrono::milliseconds{sib1_msg.ue_timers_and_consts.t300.to_number()};
76+
timers.t301 = std::chrono::milliseconds{sib1_msg.ue_timers_and_consts.t301.to_number()};
77+
timers.t310 = std::chrono::milliseconds{sib1_msg.ue_timers_and_consts.t310.to_number()};
78+
timers.t311 = std::chrono::milliseconds{sib1_msg.ue_timers_and_consts.t311.to_number()};
79+
80+
return timers;
81+
}

tests/unittests/cu_cp/test_helpers.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "lib/cu_cp/cu_up_processor/cu_up_processor_impl_interface.h"
1616
#include "lib/cu_cp/du_processor/du_processor.h"
1717
#include "lib/cu_cp/ue_manager/ue_manager_impl.h"
18+
#include "srsran/asn1/f1ap/f1ap.h"
1819
#include "srsran/cu_cp/cu_cp_types.h"
1920
#include "srsran/support/async/async_task.h"
2021
#include "srsran/support/async/fifo_async_task_scheduler.h"
@@ -35,6 +36,9 @@ byte_buffer generate_rrc_setup_complete();
3536
// Generate RRC Reconfiguration Complete PDU.
3637
byte_buffer generate_rrc_reconfiguration_complete_pdu(unsigned transaction_id, uint8_t count);
3738

39+
// Extract RRC timers from F1 Setup Request.
40+
rrc_timers_t get_timers(const asn1::f1ap::f1_setup_request_s& f1_setup_req);
41+
3842
struct dummy_du_processor_cu_cp_notifier : public du_processor_cu_cp_notifier {
3943
public:
4044
explicit dummy_du_processor_cu_cp_notifier(ue_manager* ue_mng_ = nullptr) : ue_mng(ue_mng_) {}

0 commit comments

Comments
 (0)