@@ -87,7 +87,9 @@ class cu_cp_pdu_session_resource_setup_test : public cu_cp_test_environment, pub
8787 }
8888
8989 [[nodiscard]] bool send_pdu_session_resource_setup_request_and_await_pdu_session_setup_response (
90- const ngap_message& pdu_session_resource_setup_request)
90+ const ngap_message& pdu_session_resource_setup_request,
91+ const std::vector<pdu_session_id_t >& expected_pdu_sessions_to_setup = {},
92+ const std::vector<pdu_session_id_t >& expected_pdu_sessions_failed_to_setup = {})
9193 {
9294 report_fatal_error_if_not (not this ->get_amf ().try_pop_rx_pdu (ngap_pdu),
9395 " there are still NGAP messages to pop from AMF" );
@@ -102,7 +104,8 @@ class cu_cp_pdu_session_resource_setup_test : public cu_cp_test_environment, pub
102104 " Failed to receive PDU Session Resource Setup Response" );
103105 report_fatal_error_if_not (test_helpers::is_valid_pdu_session_resource_setup_response (ngap_pdu),
104106 " Invalid PDU Session Resource Setup Response" );
105- report_fatal_error_if_not (test_helpers::is_expected_pdu_session_resource_setup_response (ngap_pdu, {}, {psi}),
107+ report_fatal_error_if_not (test_helpers::is_expected_pdu_session_resource_setup_response (
108+ ngap_pdu, expected_pdu_sessions_to_setup, expected_pdu_sessions_failed_to_setup),
106109 " Unsuccessful PDU Session Resource Setup Response" );
107110 return true ;
108111 }
@@ -257,7 +260,7 @@ TEST_F(cu_cp_pdu_session_resource_setup_test,
257260{
258261 // Inject NGAP PDU Session Resource Setup Request and await PDU Session Setup Response
259262 ASSERT_TRUE (send_pdu_session_resource_setup_request_and_await_pdu_session_setup_response (
260- generate_pdu_session_resource_setup_request_with_unconfigured_fiveqi ()));
263+ generate_pdu_session_resource_setup_request_with_unconfigured_fiveqi (), {}, {psi} ));
261264}
262265
263266TEST_F (cu_cp_pdu_session_resource_setup_test, when_bearer_context_setup_failure_received_then_setup_fails)
@@ -376,7 +379,9 @@ TEST_F(cu_cp_pdu_session_resource_setup_test, when_pdu_session_setup_for_existin
376379 // Inject NGAP PDU Session Resource Setup Request and await PDU Session Setup Response
377380 ASSERT_TRUE (send_pdu_session_resource_setup_request_and_await_pdu_session_setup_response (
378381 generate_valid_pdu_session_resource_setup_request_message (
379- ue_ctx->amf_ue_id .value (), ue_ctx->ran_ue_id .value (), {{psi, {pdu_session_type_t ::ipv4, {{qfi, 9 }}}}})));
382+ ue_ctx->amf_ue_id .value (), ue_ctx->ran_ue_id .value (), {{psi, {pdu_session_type_t ::ipv4, {{qfi, 9 }}}}}),
383+ {},
384+ {psi}));
380385}
381386
382387TEST_F (cu_cp_pdu_session_resource_setup_test, when_setup_for_pdu_sessions_with_two_qos_flows_received_setup_succeeds)
@@ -484,3 +489,30 @@ TEST_F(cu_cp_pdu_session_resource_setup_test, when_two_consecutive_setups_arrive
484489 // Setup second PDU session
485490 ASSERT_TRUE (setup_pdu_session (psi2, drb_id_t ::drb2, qfi2, generate_rrc_reconfiguration_complete_pdu (0 , 8 ), false ));
486491}
492+
493+ TEST_F (cu_cp_pdu_session_resource_setup_test, when_maximum_nof_drbs_per_ue_is_exeeded_pdu_session_setup_fails)
494+ {
495+ // Setup eight PDU sessions.
496+ unsigned transaction_id = 3 ;
497+ for (uint8_t i = 1 ; i <= 8 ; i++) {
498+ ASSERT_TRUE (setup_pdu_session (uint_to_pdu_session_id (i),
499+ uint_to_drb_id (i),
500+ uint_to_qos_flow_id (i),
501+ generate_rrc_reconfiguration_complete_pdu (transaction_id, 6 + i),
502+ i == 1 ));
503+ if (transaction_id < 3 ) {
504+ ++transaction_id;
505+ } else {
506+ transaction_id = 0 ;
507+ }
508+ }
509+
510+ // Setup ninth PDU sessions.
511+ pdu_session_id_t psi9 = uint_to_pdu_session_id (9 );
512+ qos_flow_id_t qfi9 = uint_to_qos_flow_id (9 );
513+ ngap_message pdu_session_resource_setup_request = generate_valid_pdu_session_resource_setup_request_message (
514+ ue_ctx->amf_ue_id .value (), ue_ctx->ran_ue_id .value (), {{psi9, {pdu_session_type_t ::ipv4, {{qfi9, 9 }}}}});
515+
516+ ASSERT_TRUE (send_pdu_session_resource_setup_request_and_await_pdu_session_setup_response (
517+ pdu_session_resource_setup_request, {}, {psi9}));
518+ }
0 commit comments