Skip to content

Commit 57474ad

Browse files
FabianEckermanncodebot
authored andcommitted
cu_cp: Enhance meas manager unittest
1 parent 3b27692 commit 57474ad

File tree

3 files changed

+88
-10
lines changed

3 files changed

+88
-10
lines changed

tests/unittests/cu_cp/cell_meas_manager/cell_meas_manager_test.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ TEST_F(cell_meas_manager_test, when_serving_cell_found_then_neighbor_cells_are_a
7979
for (unsigned cid = 0; cid < 2; ++cid) {
8080
optional<rrc_meas_cfg> meas_cfg = manager->get_measurement_config(cid);
8181
check_default_meas_cfg(meas_cfg, meas_obj_id);
82-
meas_obj_id = uint_to_meas_obj_id(meas_obj_id_to_uint(meas_obj_id) + 1);
82+
meas_obj_id = uint_to_meas_obj_id(meas_obj_id_to_uint(meas_obj_id) + 2);
8383
}
8484
}
8585

@@ -125,3 +125,15 @@ TEST_F(cell_meas_manager_test, when_incomplete_cell_config_is_updated_then_valid
125125
optional<rrc_meas_cfg> meas_cfg = manager->get_measurement_config(nci);
126126
check_default_meas_cfg(meas_cfg, meas_obj_id_t::min);
127127
}
128+
129+
TEST_F(cell_meas_manager_test, when_empty_cell_config_is_used_then_meas_cfg_is_not_set)
130+
{
131+
// Create a manager without ncells and without report config.
132+
create_manager_without_ncells_and_periodic_report();
133+
134+
nr_cell_id_t cid = 0;
135+
optional<rrc_meas_cfg> meas_cfg = manager->get_measurement_config(cid);
136+
137+
// Make sure meas_cfg is empty.
138+
verify_empty_meas_cfg(meas_cfg);
139+
}

tests/unittests/cu_cp/cell_meas_manager/cell_meas_manager_test_helpers.cpp

Lines changed: 74 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,12 @@ void cell_meas_manager_test::create_default_manager()
4141
// Add 2 cells - one being the neighbor of the other one
4242

4343
cell_meas_config cell_cfg;
44-
cell_cfg.serving_cell_cfg.nci = 0;
44+
cell_cfg.serving_cell_cfg.nci = 0;
45+
cell_cfg.periodic_report_cfg_id = uint_to_report_cfg_id(1);
4546

4647
neighbor_cell_meas_config ncell_meas_cfg;
4748
ncell_meas_cfg.nci = 1;
48-
ncell_meas_cfg.report_cfg_ids.push_back(uint_to_report_cfg_id(1));
49+
ncell_meas_cfg.report_cfg_ids.push_back(uint_to_report_cfg_id(2));
4950
cell_cfg.ncells.push_back(ncell_meas_cfg);
5051

5152
cell_cfg.serving_cell_cfg.band.emplace() = nr_band::n78;
@@ -65,7 +66,7 @@ void cell_meas_manager_test::create_default_manager()
6566
cell_cfg.ncells.clear();
6667
ncell_meas_cfg.nci = 0;
6768
ncell_meas_cfg.report_cfg_ids.clear();
68-
ncell_meas_cfg.report_cfg_ids.push_back(uint_to_report_cfg_id(1));
69+
ncell_meas_cfg.report_cfg_ids.push_back(uint_to_report_cfg_id(2));
6970
cell_cfg.ncells.push_back(ncell_meas_cfg);
7071

7172
cell_cfg.serving_cell_cfg.band.emplace() = nr_band::n78;
@@ -79,10 +80,25 @@ void cell_meas_manager_test::create_default_manager()
7980
}
8081
cfg.cells.emplace(cell_cfg.serving_cell_cfg.nci, cell_cfg);
8182

83+
// Add periodic event.
84+
rrc_report_cfg_nr periodic_report_cfg;
85+
auto& periodical_cfg = periodic_report_cfg.periodical.emplace();
86+
87+
periodical_cfg.rs_type = srs_cu_cp::rrc_nr_rs_type::ssb;
88+
periodical_cfg.report_interv = 1024;
89+
periodical_cfg.report_amount = -1;
90+
periodical_cfg.report_quant_cell.rsrp = true;
91+
periodical_cfg.report_quant_cell.rsrq = true;
92+
periodical_cfg.report_quant_cell.sinr = true;
93+
periodical_cfg.max_report_cells = 4;
94+
95+
periodic_report_cfg.periodical = periodical_cfg;
96+
cfg.report_config_ids.emplace(uint_to_report_cfg_id(1), periodic_report_cfg);
97+
8298
// Add A3 event.
83-
rrc_report_cfg_nr report_cfg;
84-
auto& event_trigger_cfg = report_cfg.event_triggered.emplace();
85-
auto& event_a3 = report_cfg.event_triggered.value().event_id.event_a3.emplace();
99+
rrc_report_cfg_nr a3_report_cfg;
100+
auto& event_trigger_cfg = a3_report_cfg.event_triggered.emplace();
101+
auto& event_a3 = a3_report_cfg.event_triggered.value().event_id.event_a3.emplace();
86102

87103
event_a3.a3_offset.rsrp.emplace() = 6;
88104
event_a3.hysteresis = 0;
@@ -102,9 +118,58 @@ void cell_meas_manager_test::create_default_manager()
102118
report_quant_rs_idxes.sinr = true;
103119
event_trigger_cfg.report_quant_rs_idxes = report_quant_rs_idxes;
104120

105-
report_cfg.event_triggered = event_trigger_cfg;
121+
a3_report_cfg.event_triggered = event_trigger_cfg;
122+
cfg.report_config_ids.emplace(uint_to_report_cfg_id(2), a3_report_cfg);
123+
124+
manager = create_cell_meas_manager(cfg, mobility_manager);
125+
ASSERT_NE(manager, nullptr);
126+
}
127+
128+
void cell_meas_manager_test::create_manager_without_ncells_and_periodic_report()
129+
{
130+
cell_meas_manager_cfg cfg;
131+
132+
// Add serving cell
133+
134+
cell_meas_config cell_cfg;
135+
cell_cfg.serving_cell_cfg.nci = 0;
136+
137+
cell_cfg.serving_cell_cfg.band.emplace() = nr_band::n78;
138+
cell_cfg.serving_cell_cfg.ssb_arfcn.emplace() = 632628;
139+
cell_cfg.serving_cell_cfg.ssb_scs.emplace() = subcarrier_spacing::kHz30;
140+
{
141+
rrc_ssb_mtc ssb_mtc;
142+
ssb_mtc.dur = 1;
143+
ssb_mtc.periodicity_and_offset.sf5.emplace() = 0;
144+
cell_cfg.serving_cell_cfg.ssb_mtc.emplace() = ssb_mtc;
145+
}
146+
cfg.cells.emplace(cell_cfg.serving_cell_cfg.nci, cell_cfg);
147+
148+
// Add A3 event.
149+
rrc_report_cfg_nr a3_report_cfg;
150+
auto& event_trigger_cfg = a3_report_cfg.event_triggered.emplace();
151+
auto& event_a3 = a3_report_cfg.event_triggered.value().event_id.event_a3.emplace();
152+
153+
event_a3.a3_offset.rsrp.emplace() = 6;
154+
event_a3.hysteresis = 0;
155+
event_a3.time_to_trigger = 100;
156+
157+
event_trigger_cfg.rs_type = srs_cu_cp::rrc_nr_rs_type::ssb;
158+
event_trigger_cfg.report_interv = 1024;
159+
event_trigger_cfg.report_amount = -1;
160+
event_trigger_cfg.report_quant_cell.rsrp = true;
161+
event_trigger_cfg.report_quant_cell.rsrq = true;
162+
event_trigger_cfg.report_quant_cell.sinr = true;
163+
event_trigger_cfg.max_report_cells = 4;
164+
165+
rrc_meas_report_quant report_quant_rs_idxes;
166+
report_quant_rs_idxes.rsrp = true;
167+
report_quant_rs_idxes.rsrq = true;
168+
report_quant_rs_idxes.sinr = true;
169+
event_trigger_cfg.report_quant_rs_idxes = report_quant_rs_idxes;
106170

107-
cfg.report_config_ids.emplace(uint_to_report_cfg_id(1), report_cfg);
171+
a3_report_cfg.event_triggered = event_trigger_cfg;
172+
cfg.report_config_ids.emplace(uint_to_report_cfg_id(1), a3_report_cfg);
108173

109174
manager = create_cell_meas_manager(cfg, mobility_manager);
110175
ASSERT_NE(manager, nullptr);
@@ -113,7 +178,7 @@ void cell_meas_manager_test::create_default_manager()
113178
void cell_meas_manager_test::check_default_meas_cfg(const optional<rrc_meas_cfg>& meas_cfg, meas_obj_id_t meas_obj_id)
114179
{
115180
ASSERT_TRUE(meas_cfg.has_value());
116-
ASSERT_EQ(meas_cfg.value().meas_obj_to_add_mod_list.size(), 1);
181+
ASSERT_EQ(meas_cfg.value().meas_obj_to_add_mod_list.size(), 2);
117182
ASSERT_EQ((unsigned)meas_cfg.value().meas_obj_to_add_mod_list.begin()->meas_obj_id, meas_obj_id_to_uint(meas_obj_id));
118183
// TODO: Add checks for more values
119184
}

tests/unittests/cu_cp/cell_meas_manager/cell_meas_manager_test_helpers.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class cell_meas_manager_test : public ::testing::Test
3535
void create_empty_manager();
3636
void create_default_manager();
3737
void create_default_manager_with_cell_params();
38+
void create_manager_without_ncells_and_periodic_report();
3839
void check_default_meas_cfg(const optional<rrc_meas_cfg>& meas_cfg, meas_obj_id_t meas_obj_id);
3940
void verify_empty_meas_cfg(const optional<rrc_meas_cfg>& meas_cfg);
4041

0 commit comments

Comments
 (0)