@@ -38,14 +38,19 @@ class test_pucch_resource_manager : public ::testing::Test
3838 pucch_cfg{ue_cell_cfg.cfg_dedicated ().ul_config .value ().init_ul_bwp .pucch_cfg .value ()},
3939 sl_tx (slot_point(0 , 0 ))
4040 {
41+ uplink_config ul_cfg = test_helpers::make_test_ue_uplink_config (cell_config_builder_params{});
42+ ul_cfg.init_ul_bwp .pucch_cfg .value ().sr_res_list .front ().pucch_res_id = 10 ;
43+ pucch_cfg_ue_2 = ul_cfg.init_ul_bwp .pucch_cfg .value ();
4144 res_manager.slot_indication (sl_tx);
4245 };
4346
4447protected:
4548 cell_configuration cell_cfg;
4649 ue_cell_configuration ue_cell_cfg;
4750 // Helper variable.
48- const pucch_config& pucch_cfg;
51+ const pucch_config& pucch_cfg;
52+ // Config with alternative configuration for SR using PUCCH resource idx 10.
53+ pucch_config pucch_cfg_ue_2;
4954 pucch_resource_manager res_manager;
5055 slot_point sl_tx;
5156
@@ -366,13 +371,32 @@ TEST_F(test_pucch_resource_manager, test_allocation_release_sr_resource)
366371 // Release resource and verify it was successful.
367372 ASSERT_TRUE (res_manager.release_sr_resource (sl_tx, to_rnti (0x4601 )));
368373
369- // Assigne a different UE and verify it is assigned a resource.
374+ // Allocate SR to another UE and verify it is assigned a resource.
370375 const pucch_resource* sr_resource_ue2 = res_manager.reserve_sr_res_available (sl_tx, to_rnti (0x4602 ), pucch_cfg);
371376 ASSERT_FALSE (nullptr == sr_resource_ue2);
372377 unsigned sr_pucch_res_idx = pucch_cfg.pucch_res_list .size () - 1 ;
373378 ASSERT_EQ (&pucch_cfg.pucch_res_list [sr_pucch_res_idx], sr_resource_ue2);
374379}
375380
381+ // Tests SRs for 2 UEs using different PUCCH resource indices.
382+ TEST_F (test_pucch_resource_manager, test_allocation_2_sr_resource)
383+ {
384+ res_manager.reserve_sr_res_available (sl_tx, to_rnti (0x4601 ), pucch_cfg);
385+ res_manager.reserve_sr_res_available (sl_tx, to_rnti (0x4602 ), pucch_cfg_ue_2);
386+
387+ // Attempt to allocate UEs over already used SR resources.
388+ ASSERT_EQ (nullptr , res_manager.reserve_sr_res_available (sl_tx, to_rnti (0x4603 ), pucch_cfg));
389+ ASSERT_EQ (nullptr , res_manager.reserve_sr_res_available (sl_tx, to_rnti (0x4604 ), pucch_cfg_ue_2));
390+
391+ // Release resource and verify it was successful.
392+ ASSERT_TRUE (res_manager.release_sr_resource (sl_tx, to_rnti (0x4601 )));
393+ ASSERT_TRUE (res_manager.release_sr_resource (sl_tx, to_rnti (0x4602 )));
394+
395+ // Attempt to allocate UEs over released SR resources.
396+ ASSERT_NE (nullptr , res_manager.reserve_sr_res_available (sl_tx, to_rnti (0x4603 ), pucch_cfg));
397+ ASSERT_NE (nullptr , res_manager.reserve_sr_res_available (sl_tx, to_rnti (0x4604 ), pucch_cfg_ue_2));
398+ }
399+
376400int main (int argc, char ** argv)
377401{
378402 srslog::fetch_basic_logger (" TEST" ).set_level (srslog::basic_levels::info);
0 commit comments