1111#include " lib/mac/mac_ctrl/mac_controller.h"
1212#include " lib/mac/rnti_manager.h"
1313#include " mac_ctrl_test_dummies.h"
14- #include " tests/unittests/mac/mac_test_helpers.h"
1514#include " srsran/support/async/async_test_utils.h"
1615#include " srsran/support/executors/manual_task_worker.h"
17- #include " srsran/support/test_utils.h "
16+ #include < gtest/gtest.h >
1817
1918using namespace srsran ;
2019
21- void test_mac_ctrl_ue_procedures ()
20+ class mac_controller_test : public ::testing::Test
2221{
23- test_delimit_logger delimiter{" Test UE procedures" };
22+ protected:
23+ mac_controller_test ()
24+ {
25+ srslog::fetch_basic_logger (" MAC" , true ).set_level (srslog::basic_levels::debug);
26+ srslog::init ();
27+ }
28+
29+ void start_ue_creation (mac_ue_create_request req)
30+ {
31+ t = mac_ctrl.handle_ue_create_request (req);
32+ t_launcher.emplace (t);
33+ }
2434
2535 manual_task_worker worker{128 };
2636 dummy_ue_executor_mapper ul_exec_mapper{worker};
@@ -32,45 +42,54 @@ void test_mac_ctrl_ue_procedures()
3242 mac_scheduler_dummy_adapter sched_cfg_adapter;
3343 rnti_manager rnti_table;
3444
35- mac_controller mac_ctrl ( maccfg, ul_unit, dl_unit, rnti_table, sched_cfg_adapter) ;
45+ mac_controller mac_ctrl{ maccfg, ul_unit, dl_unit, rnti_table, sched_cfg_adapter} ;
3646
47+ async_task<mac_ue_create_response> t;
48+ optional<lazy_task_launcher<mac_ue_create_response>> t_launcher;
49+ };
50+
51+ TEST_F (mac_controller_test, ue_procedures)
52+ {
3753 // Action 1: Create UE
38- mac_ue_create_request ue_create_msg{};
39- ue_create_msg.ue_index = to_du_ue_index (1 );
40- ue_create_msg.cell_index = to_du_cell_index (0 );
41- ue_create_msg.crnti = to_rnti (0x4601 );
42- async_task<mac_ue_create_response> t = mac_ctrl.handle_ue_create_request (ue_create_msg);
43- lazy_task_launcher<mac_ue_create_response> t_launcher (t);
54+ mac_ue_create_request ue_create_msg{to_du_cell_index (0 ), to_du_ue_index (1 ), to_rnti (0x4601 )};
55+ start_ue_creation (ue_create_msg);
4456
4557 // Status: UE creation started in MAC UL but not in MAC DL
46- TESTASSERT (ul_unit.last_ue_create_request .has_value ());
47- TESTASSERT_EQ (ue_create_msg.ue_index , ul_unit.last_ue_create_request ->ue_index );
48- TESTASSERT_EQ (ue_create_msg.crnti , ul_unit.last_ue_create_request ->crnti );
49- TESTASSERT ( not dl_unit.last_ue_create_request .has_value ());
50- TESTASSERT ( not t.ready ());
58+ ASSERT_TRUE (ul_unit.last_ue_create_request .has_value ());
59+ ASSERT_EQ (ue_create_msg.ue_index , ul_unit.last_ue_create_request ->ue_index );
60+ ASSERT_EQ (ue_create_msg.crnti , ul_unit.last_ue_create_request ->crnti );
61+ ASSERT_FALSE ( dl_unit.last_ue_create_request .has_value ());
62+ ASSERT_FALSE ( t.ready ());
5163
5264 // Action 2: MAC UL UE Creation finishes
5365 ul_unit.expected_result = true ;
5466 ul_unit.ue_created_ev .set ();
5567
5668 // Status: MAC DL UE Creation starts
57- TESTASSERT (dl_unit.last_ue_create_request .has_value ());
58- TESTASSERT_EQ (ue_create_msg.ue_index , dl_unit.last_ue_create_request ->ue_index );
59- TESTASSERT_EQ (ue_create_msg.crnti , dl_unit.last_ue_create_request ->crnti );
60- TESTASSERT ( not t.ready ());
69+ ASSERT_TRUE (dl_unit.last_ue_create_request .has_value ());
70+ ASSERT_EQ (ue_create_msg.ue_index , dl_unit.last_ue_create_request ->ue_index );
71+ ASSERT_EQ (ue_create_msg.crnti , dl_unit.last_ue_create_request ->crnti );
72+ ASSERT_FALSE ( t.ready ());
6173
6274 // Action 3: MAC DL UE Creation finishes
6375 dl_unit.expected_result = true ;
6476 dl_unit.ue_created_ev .set ();
6577
78+ // Status: Scheduler UE Creation starts.
79+ ASSERT_TRUE (sched_cfg_adapter.last_ue_create_request .has_value ());
80+ ASSERT_EQ (sched_cfg_adapter.last_ue_create_request ->ue_index , ue_create_msg.ue_index );
81+ ASSERT_FALSE (t.ready ());
82+
83+ // Action 4: Scheduler UE Creation finishes
84+ sched_cfg_adapter.ue_created_ev .set (true );
85+
6686 // Status: MAC DL UE Creation finished. MAC CTRL UE Creation finished as well.
67- TESTASSERT (dl_unit.last_ue_create_request .has_value ());
68- TESTASSERT (t.ready ());
69- TESTASSERT_EQ (ue_create_msg.ue_index , t.get ().ue_index );
70- TESTASSERT_EQ (t.get ().allocated_crnti , ue_create_msg.crnti );
71- TESTASSERT (mac_ctrl.find_ue (ue_create_msg.ue_index ) != nullptr );
72- TESTASSERT (mac_ctrl.find_by_rnti (ue_create_msg.crnti ) != nullptr );
73- TESTASSERT_EQ (ue_create_msg.ue_index , mac_ctrl.find_ue (ue_create_msg.ue_index )->du_ue_index );
87+ ASSERT_TRUE (t.ready ());
88+ ASSERT_EQ (ue_create_msg.ue_index , t.get ().ue_index );
89+ ASSERT_EQ (t.get ().allocated_crnti , ue_create_msg.crnti );
90+ ASSERT_TRUE (mac_ctrl.find_ue (ue_create_msg.ue_index ) != nullptr );
91+ ASSERT_TRUE (mac_ctrl.find_by_rnti (ue_create_msg.crnti ) != nullptr );
92+ ASSERT_EQ (ue_create_msg.ue_index , mac_ctrl.find_ue (ue_create_msg.ue_index )->du_ue_index );
7493
7594 // Action 4: Delete UE
7695 mac_ue_delete_request ue_delete_msg{};
@@ -81,20 +100,11 @@ void test_mac_ctrl_ue_procedures()
81100 lazy_task_launcher<mac_ue_delete_response> t_launcher2 (t2);
82101
83102 // Status: UE deleted from MAC DL, UL and CTRL
84- TESTASSERT (dl_unit.last_ue_delete_request .has_value ());
85- TESTASSERT_EQ (ue_delete_msg.ue_index , dl_unit.last_ue_create_request ->ue_index );
86- TESTASSERT (ul_unit.last_ue_delete_request .has_value ());
87- TESTASSERT_EQ (ue_delete_msg.ue_index , ul_unit.last_ue_create_request ->ue_index );
88- TESTASSERT (t2.ready ());
89- TESTASSERT (mac_ctrl.find_ue (ue_create_msg.ue_index ) == nullptr );
90- TESTASSERT (mac_ctrl.find_by_rnti (ue_create_msg.crnti ) == nullptr );
91- }
92-
93- int main ()
94- {
95- srslog::fetch_basic_logger (" MAC" , true ).set_level (srslog::basic_levels::debug);
96-
97- srslog::init ();
98-
99- test_mac_ctrl_ue_procedures ();
103+ ASSERT_TRUE (dl_unit.last_ue_delete_request .has_value ());
104+ ASSERT_EQ (ue_delete_msg.ue_index , dl_unit.last_ue_create_request ->ue_index );
105+ ASSERT_TRUE (ul_unit.last_ue_delete_request .has_value ());
106+ ASSERT_EQ (ue_delete_msg.ue_index , ul_unit.last_ue_create_request ->ue_index );
107+ ASSERT_TRUE (t2.ready ());
108+ ASSERT_TRUE (mac_ctrl.find_ue (ue_create_msg.ue_index ) == nullptr );
109+ ASSERT_TRUE (mac_ctrl.find_by_rnti (ue_create_msg.crnti ) == nullptr );
100110}
0 commit comments