/** * @author ETSI / STF519 * @version $URL$ * $Id$ * @desc This module provides RfRo test functions used by the test cases. * @copyright ETSI Copyright Notification * No part may be reproduced except as authorized by written permission. * The copyright and the foregoing restriction extend to reproduction in all media. * All rights reserved. * @see ETSI TS 136 413 / 3GPP TS 36.413 version 13.4.0 Release 13 */ module S1AP_TCFunctions { // LibCommon import from LibCommon_Sync all; import from LibCommon_VerdictControl all; import from LibCommon_Time {function f_sleepIgnoreDef;} // LibS1AP import from S1AP_IEs language "ASN.1:1997" all; import from LibS1AP_Pixits all; import from LibS1AP_Templates all; import from LibS1AP_Interface all; import from LibS1AP_Steps all; // S1AP_Ats import from S1AP_Steps all; import from S1AP_Pixits all; group eNB_Role { /** * @desc E-RAB management group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.2 E-RAB management group */ group ERAB_management_group { /** * @desc Testcase function for TC_S1AP_eNB_RAB_01 */ function f_TC_S1AP_eNB_RAB_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); f_send_E_RABSetupRequest(m_E_RABSetupReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, {m_E_RABToBeSetupItemBearerSUReq ( -, m_e_RABlevelQoSParameters (5) )} )); f_recv_E_RABSetupResponse(mw_E_RABSetupResIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABSetupItemBearerSURes } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_RAB_01 /** * @desc Testcase function for TC_S1AP_eNB_RAB_02 */ function f_TC_S1AP_eNB_RAB_02() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_E_RABSetupRequest(m_E_RABSetupReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABToBeSetupItemBearerSUReq(1), m_E_RABToBeSetupItemBearerSUReq( 2, m_e_RABlevelQoSParameters (255) ) } )); f_recv_E_RABSetupResponse(mw_E_RABSetupResIEs_FailedToSetupList_E_RABSetupItemBearerSURes( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABSetupItemBearerSURes(1) }, { mw_E_RABItem( 2, { radioNetwork :=not_supported_QCI_value } ) } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_RAB_02 /** * @desc Testcase function for TC_S1AP_eNB_RAB_03 */ function f_TC_S1AP_eNB_RAB_03() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); f_send_E_RABSetupRequest(m_E_RABSetupReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABToBeSetupItemBearerSUReq } )); f_recv_E_RABSetupResponse(mw_E_RABSetupResIEs_FailedToSetupList( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABItem( 0, { radioNetwork := (s1_intra_system_handover_triggered, s1_inter_system_handover_triggered, x2_handover_triggered) } ) } )); f_recv_Handover_Required(mw_HandoverRequiredIEs( vc_MME_UE_ID, vc_eNB_UE_ID, ltetoutran, ?, ?, ? )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_RAB_03 /** * @desc Testcase function for TC_S1AP_eNB_RAB_04 */ function f_TC_S1AP_eNB_RAB_04() runs on S1APComponent { // Local variables const QCI c_qci_id := 1; // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); f_send_E_RABSetupRequest(m_E_RABSetupReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, {m_E_RABToBeSetupItemBearerSUReq ( -, m_e_RABlevelQoSParameters(c_qci_id) )} )); f_recv_E_RABSetupResponse(mw_E_RABSetupResIEs_FailedToSetupList( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABItem( 0, { radioNetwork := not_supported_QCI_value } ) } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_RAB_04 /** * @desc Testcase function for TC_S1AP_eNB_RAB_05 */ function f_TC_S1AP_eNB_RAB_05() runs on S1APComponent { // Local variables const QCI c_qci_id := 1; // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_E_RABSetupRequest(m_E_RABSetupReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABToBeSetupItemBearerSUReq(1), m_E_RABToBeSetupItemBearerSUReq(1) } )); f_recv_E_RABSetupResponse(mw_E_RABSetupResIEs_FailedToSetupList( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABItem( 1, { radioNetwork := multiple_E_RAB_ID_instances } ), mw_E_RABItem( 1, { radioNetwork := multiple_E_RAB_ID_instances } ) } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_RAB_05 /** * @desc Testcase function for TC_S1AP_eNB_RAB_06 */ function f_TC_S1AP_eNB_RAB_06() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_E_RABSetupRequest(m_E_RABSetupReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, {m_E_RABToBeSetupItemBearerSUReq ( 1, m_e_RABlevelQoSParameters (5) )} )); f_recv_E_RABSetupResponse(mw_E_RABSetupResIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABSetupItemBearerSURes } )); f_send_E_RABSetupRequest(m_E_RABSetupReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABToBeSetupItemBearerSUReq(1) } )); f_recv_E_RABSetupResponse(mw_E_RABSetupResIEs_FailedToSetupList( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABItem( 1, { radioNetwork := multiple_E_RAB_ID_instances } ) } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_RAB_06 /** * @desc Testcase function for TC_S1AP_eNB_RAB_07 */ function f_TC_S1AP_eNB_RAB_07() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; const TransportLayerAddress c_transportLayerAddress := '0'B; const GTP_TEID c_gTP_TEID := '00000000'O; const NAS_PDU c_nAS_PDU := '0000'O; // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_E_RABSetupRequest(m_E_RABSetupReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, {m_E_RABToBeSetupItemBearerSUReq ( c_E_RAB_ID_A, m_e_RABlevelQoSParameters (1), c_transportLayerAddress, c_gTP_TEID, c_nAS_PDU, //{m_correlationID_IE('01020304'O), m_SIPTO_correlationID_IE('01020304'O)} // iE_Extensions // Following code replaces upper commented line - IEs are extensionList type. {{id := 156,//S1AP_Constants.id_Correlation_ID, criticality := ignore, extensionValue := {Correlation_ID := '01020304'O} }, {id := 183,// S1AP_Constants.id_SIPTO_Correlation_ID, criticality := ignore, extensionValue := {Correlation_ID := '01020304'O} } } )} )); f_recv_E_RABSetupResponse(mw_E_RABSetupResIEs_FailedToSetupList( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABItem( 1, ? ) } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_RAB_07 /** * @desc Testcase function for TC_S1AP_eNB_RAB_08 */ function f_TC_S1AP_eNB_RAB_08() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; const NAS_PDU c_nAS_PDU := '0000'O; // Preamble f_S1AP_enb_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); f_send_E_RABModifiedRequest(m_E_RABModifiedReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, {m_E_RABToBeModifiedItemBearerSUReq( c_E_RAB_ID_A, m_e_RABlevelQoSParameters(5), c_nAS_PDU )} )); f_recv_E_RABModifiedResponse(mw_E_RABModifiedResIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABModifyItemBearerModRes(c_E_RAB_ID_A) } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_RAB_08 /** * @desc Testcase function for TC_S1AP_eNB_RAB_09 */ function f_TC_S1AP_eNB_RAB_09 () runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; const NAS_PDU c_nAS_PDU := '0000'O; // Preamble f_S1AP_enb_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); f_send_E_RABModifiedRequest(m_E_RABModifiedReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, {m_E_RABToBeModifiedItemBearerSUReq( c_E_RAB_ID_A, m_e_RABlevelQoSParameters(255), c_nAS_PDU )} )); f_recv_E_RABModifiedResponse(mw_E_RABModifiedResIEs_FailedToModifyList( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABItem( c_E_RAB_ID_A, { radioNetwork := not_supported_QCI_value } ) } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_RAB_09 /** * @desc Testcase function for TC_S1AP_eNB_RAB_10 */ function f_TC_S1AP_eNB_RAB_10 () runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; const NAS_PDU c_nAS_PDU := '0000'O; // Preamble f_S1AP_enb_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); f_send_E_RABModifiedRequest(m_E_RABModifiedReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, {m_E_RABToBeModifiedItemBearerSUReq( c_E_RAB_ID_A, m_e_RABlevelQoSParameters(255), c_nAS_PDU )} )); f_recv_E_RABModifiedResponse(mw_E_RABModifiedResIEs_FailedToModifyList( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABItem( c_E_RAB_ID_A, { radioNetwork := (s1_intra_system_handover_triggered, s1_inter_system_handover_triggered, x2_handover_triggered) } ) } )); f_recv_Handover_Required(mw_HandoverRequiredIEs( vc_MME_UE_ID, vc_eNB_UE_ID, ltetoutran, ?, ?, ? )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_RAB_10 /** * @desc Testcase function for TC_S1AP_eNB_RAB_11 */ function f_TC_S1AP_eNB_RAB_11 () runs on S1APComponent { // Local variables const QCI c_qci_id := 1; const E_RAB_ID c_E_RAB_ID_A := 0; const NAS_PDU c_nAS_PDU := '0000'O; // Preamble f_S1AP_enb_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); f_send_E_RABModifiedRequest(m_E_RABModifiedReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, {m_E_RABToBeModifiedItemBearerSUReq( c_E_RAB_ID_A, m_e_RABlevelQoSParameters(c_qci_id), c_nAS_PDU )} )); f_recv_E_RABModifiedResponse(mw_E_RABModifiedResIEs_FailedToModifyList( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABItem( c_E_RAB_ID_A, ? ) } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_RAB_11 /** * @desc Testcase function for TC_S1AP_eNB_RAB_12 */ function f_TC_S1AP_eNB_RAB_12 () runs on S1APComponent { // Local variables const QCI c_qci_id := 0; const E_RAB_ID c_E_RAB_ID_A := 0; const NAS_PDU c_nAS_PDU := '0000'O; // Preamble f_S1AP_enb_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); f_send_E_RABModifiedRequest(m_E_RABModifiedReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABToBeModifiedItemBearerSUReq( c_E_RAB_ID_A, m_e_RABlevelQoSParameters(c_qci_id), c_nAS_PDU ),m_E_RABToBeModifiedItemBearerSUReq( c_E_RAB_ID_A, m_e_RABlevelQoSParameters(c_qci_id), c_nAS_PDU ) } )); f_recv_E_RABModifiedResponse(mw_E_RABModifiedResIEs_FailedToModifyList( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABItem( c_E_RAB_ID_A, { radioNetwork := multiple_E_RAB_ID_instances } ), mw_E_RABItem( c_E_RAB_ID_A, { radioNetwork := multiple_E_RAB_ID_instances } ) } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_RAB_12 /** * @desc Testcase function for TC_S1AP_eNB_RAB_13 */ function f_TC_S1AP_eNB_RAB_13 () runs on S1APComponent { // Local variables const QCI c_qci_id := 99; // Unknown QCI Id const E_RAB_ID c_E_RAB_ID_A := 0; const NAS_PDU c_nAS_PDU := '0000'O; // Preamble f_S1AP_enb_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); f_send_E_RABModifiedRequest(m_E_RABModifiedReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABToBeModifiedItemBearerSUReq( c_E_RAB_ID_A, m_e_RABlevelQoSParameters(c_qci_id), c_nAS_PDU ) } )); f_recv_E_RABModifiedResponse(mw_E_RABModifiedResIEs_FailedToModifyList( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABItem( c_E_RAB_ID_A, { radioNetwork := unknown_E_RAB_ID } ) } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_RAB_13 /** * @desc Testcase function for TC_S1AP_eNB_RAB_14 */ function f_TC_S1AP_eNB_RAB_14 () runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; // Preamble f_S1AP_enb_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); f_send_E_RABReleaseRequest(m_E_RABReleaseReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABItem( c_E_RAB_ID_A, { radioNetwork :=not_supported_QCI_value } ) } )); f_recv_E_RABReleaseResponse(mw_E_RABReleaseResIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABItem( c_E_RAB_ID_A ) } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_RAB_14 /** * @desc Testcase function for TC_S1AP_eNB_RAB_15 */ function f_TC_S1AP_eNB_RAB_15 () runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; // Preamble f_S1AP_enb_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // S1-MME Interface f_send_E_RABReleaseRequest(m_E_RABReleaseReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABItem( c_E_RAB_ID_A, { radioNetwork :=not_supported_QCI_value } ) } ) ); f_recv_E_RABReleaseResponse(mw_E_RABReleaseResIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABItem( c_E_RAB_ID_A ) }, mw_UserLocationInformation(?,?) )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_RAB_15 /** * @desc Testcase function for TC_S1AP_eNB_RAB_16 */ function f_TC_S1AP_eNB_RAB_16 () runs on S1APComponent { const E_RAB_ID c_E_RAB_ID_A := 0; // Preamble f_S1AP_enb_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); f_send_E_RABReleaseRequest(m_E_RABReleaseReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABItem( c_E_RAB_ID_A, { radioNetwork :=not_supported_QCI_value } ) } )); f_recv_E_RABReleaseResponse(mw_E_RABReleaseResIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABItem( c_E_RAB_ID_A ) } )); f_send_E_RABSetupRequest(m_E_RABSetupReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, {m_E_RABToBeSetupItemBearerSUReq ( c_E_RAB_ID_A, m_e_RABlevelQoSParameters (5) )} )); f_recv_E_RABSetupResponse(mw_E_RABSetupResIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABSetupItemBearerSURes(c_E_RAB_ID_A) } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_RAB_16 /** * @desc Testcase function for TC_S1AP_eNB_RAB_17 */ function f_TC_S1AP_eNB_RAB_17 () runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; // Preamble f_S1AP_enb_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // 1. to indicate a LPPa Transport procedure using a UE associated signalling if (fx_eNB_erab_Release_indication_procedure(false) == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { f_recv_E_RABReleaseIndication(mw_E_RABReleaseIndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABItem( c_E_RAB_ID_A ) } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_RAB_17 /** * @desc Testcase function for TC_S1AP_eNB_RAB_18 */ function f_TC_S1AP_eNB_RAB_18 () runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; // Preamble f_S1AP_enb_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // 1. to indicate a LPPa Transport procedure using a UE associated signalling if (fx_eNB_erab_Release_indication_procedure(false) == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { f_recv_E_RABReleaseIndication(mw_E_RABReleaseIndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABItem( c_E_RAB_ID_A ) }, mw_UserLocationInformation(?,?) )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_RAB_18 /** * @desc Testcase function for TC_S1AP_eNB_RAB_19 */ function f_TC_S1AP_eNB_RAB_19 () runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); f_send_E_RABReleaseRequest(m_E_RABReleaseReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABItem( c_E_RAB_ID_A, { radioNetwork :=not_supported_QCI_value } ), m_E_RABItem( c_E_RAB_ID_A, { radioNetwork :=not_supported_QCI_value } ) } )); f_recv_E_RABReleaseResponse(mw_E_RABReleaseResIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABItem( c_E_RAB_ID_A ) } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_RAB_19 /** * @desc Testcase function for TC_S1AP_eNB_RAB_20 */ function f_TC_S1AP_eNB_RAB_20 () runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 99; // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); f_send_E_RABReleaseRequest(m_E_RABReleaseReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABItem( c_E_RAB_ID_A, { radioNetwork :=not_supported_QCI_value } ) } )); f_recv_E_RABReleaseResponse(mw_E_RABReleaseResIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABItem( c_E_RAB_ID_A ) } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_RAB_20 /** * @desc Testcase function for TC_S1AP_eNB_RAB_21 */ function f_TC_S1AP_eNB_RAB_21 () runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; // Preamble f_S1AP_enb_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // 1. to indicate a LPPa Transport procedure using a UE associated signalling if (fx_eNB_erab_modification_indication_procedure(false) == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { f_recv_E_RABModificationIndication(mw_E_RABModificationIndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABToBeModifiedItemBearerModInd( - ) } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_RAB_21 } // End of group ERAB_management_group /** * @desc Context management group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.3 Context management group */ group Context_management_group { /** * @desc Testcase function for TC_S1AP_eNB_CMP_01 */ function f_TC_S1AP_eNB_CMP_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_InitialContext_SetupRequest(m_InitialContextSetupReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, m_UEAggregateMaximumBitrate(1,1), {m_E_RABToBeSetupItemCtxtSUReq ( -, m_e_RABlevelQoSParameters (5), - )}, m_UESecurityCapabilities(PX_ENCRYPTION_ALGORITHM, PX_INTEGRITY_PROTECTION_ALGORITHM), m_securityKey )); f_recv_InitialContext_SetupResponse(mw_InitialContextSetupResIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABSetupItemBearerSURes } )); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_01 /** * @desc Testcase function for TC_S1AP_eNB_CMP_02 */ function f_TC_S1AP_eNB_CMP_02() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; const E_RAB_ID c_E_RAB_ID_B := 1; const TransportLayerAddress c_transportLayerAddress := '0'B; const GTP_TEID c_gTP_TEID := '00000000'O; const NAS_PDU c_nAS_PDU := '0000'O; // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_InitialContext_SetupRequest( m_InitialContextSetupReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, m_UEAggregateMaximumBitrate(1,1), { m_E_RABToBeSetupItemCtxtSUReq ( c_E_RAB_ID_A, m_e_RABlevelQoSParameters(5), c_transportLayerAddress, c_gTP_TEID ), m_E_RABToBeSetupItemCtxtSUReq( c_E_RAB_ID_B, m_e_RABlevelQoSParameters(255), c_transportLayerAddress, c_gTP_TEID ) }, m_UESecurityCapabilities(PX_ENCRYPTION_ALGORITHM, PX_INTEGRITY_PROTECTION_ALGORITHM), m_securityKey )); f_recv_InitialContext_SetupResponse( mw_InitialContextSetupResIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABSetupItemBearerSURes(c_E_RAB_ID_A) }, { mw_E_RABItem( c_E_RAB_ID_B, { radioNetwork :=not_supported_QCI_value } ) } )); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_02 /** * @desc Testcase function for TC_S1AP_eNB_CMP_03 */ function f_TC_S1AP_eNB_CMP_03() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; const TransportLayerAddress c_transportLayerAddress := '0'B; const GTP_TEID c_gTP_TEID := '00000000'O; const NAS_PDU c_nAS_PDU := '0000'O; // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_InitialContext_SetupRequest(m_InitialContextSetupReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, m_UEAggregateMaximumBitrate(1,1), {m_E_RABToBeSetupItemCtxtSUReq ( c_E_RAB_ID_A, m_e_RABlevelQoSParameters (1), c_transportLayerAddress, c_gTP_TEID )}, m_UESecurityCapabilities(PX_ENCRYPTION_ALGORITHM, PX_INTEGRITY_PROTECTION_ALGORITHM), m_securityKey )); f_recv_InitialContext_SetupResponse(mw_InitialContextSetupResIEs( vc_MME_UE_ID, vc_eNB_UE_ID, -, { mw_E_RABItem( c_E_RAB_ID_A, ? ) } )); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_03 /** * @desc Testcase function for TC_S1AP_eNB_CMP_04 */ function f_TC_S1AP_eNB_CMP_04() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; const TransportLayerAddress c_transportLayerAddress := '0'B; const GTP_TEID c_gTP_TEID := '00000000'O; const NAS_PDU c_nAS_PDU := '0000'O; // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_InitialContext_SetupRequest(m_InitialContextSetupReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, m_UEAggregateMaximumBitrate(1,1), {m_E_RABToBeSetupItemCtxtSUReq ( c_E_RAB_ID_A, m_e_RABlevelQoSParameters (5), c_transportLayerAddress, c_gTP_TEID ), m_E_RABToBeSetupItemCtxtSUReq ( c_E_RAB_ID_A, m_e_RABlevelQoSParameters (5), c_transportLayerAddress, c_gTP_TEID )}, m_UESecurityCapabilities(PX_ENCRYPTION_ALGORITHM, PX_INTEGRITY_PROTECTION_ALGORITHM), m_securityKey )); f_recv_InitialContext_SetupResponse(mw_InitialContextSetupResIEs( vc_MME_UE_ID, vc_eNB_UE_ID, -, { mw_E_RABItem( c_E_RAB_ID_A, { radioNetwork := multiple_E_RAB_ID_instances } ), mw_E_RABItem( c_E_RAB_ID_A, { radioNetwork := multiple_E_RAB_ID_instances } ) } )); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_04 /** * @desc Testcase function for TC_S1AP_eNB_CMP_05 */ function f_TC_S1AP_eNB_CMP_05() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; const TransportLayerAddress c_transportLayerAddress := '0'B; const GTP_TEID c_gTP_TEID := '00000000'O; const NAS_PDU c_nAS_PDU := '0000'O; // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_InitialContext_SetupRequest(m_InitialContextSetupReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, m_UEAggregateMaximumBitrate(1,1), {m_E_RABToBeSetupItemCtxtSUReq ( c_E_RAB_ID_A, m_e_RABlevelQoSParameters (5), c_transportLayerAddress, c_gTP_TEID )}, m_UESecurityCapabilities(PX_UNSUPPORTED_ENCRYPTION_ALGORITHM, PX_INTEGRITY_PROTECTION_ALGORITHM), m_securityKey )); f_recv_InitialContext_SetupResponse(mw_InitialContextSetupFailureIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_cause_ran(encryption_and_or_integrity_protection_algorithms_not_supported) )); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_05 /** * @desc Testcase function for TC_S1AP_eNB_CMP_06 */ function f_TC_S1AP_eNB_CMP_06() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; const TransportLayerAddress c_transportLayerAddress := '0'B; const GTP_TEID c_gTP_TEID := '00000000'O; const NAS_PDU c_nAS_PDU := '0000'O; const IntegrityProtectionAlgorithms c_notSupportedIntegrityProtectionAlgorithms := '0000000000000000'B; // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_InitialContext_SetupRequest(m_InitialContextSetupReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, m_UEAggregateMaximumBitrate(1,1), {m_E_RABToBeSetupItemCtxtSUReq ( c_E_RAB_ID_A, m_e_RABlevelQoSParameters (5), c_transportLayerAddress, c_gTP_TEID )}, m_UESecurityCapabilities(PX_ENCRYPTION_ALGORITHM, c_notSupportedIntegrityProtectionAlgorithms), m_securityKey )); f_recv_InitialContext_SetupResponse(mw_InitialContextSetupFailureIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_cause_ran(encryption_and_or_integrity_protection_algorithms_not_supported) )); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_06 /** * @desc Testcase function for TC_S1AP_eNB_CMP_07 */ function f_TC_S1AP_eNB_CMP_07() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; const TransportLayerAddress c_transportLayerAddress := '0'B; const GTP_TEID c_gTP_TEID := '00000000'O; const NAS_PDU c_nAS_PDU := '0000'O; // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. NOTE: the cell accessed by the UE need to be a hybrid cell!***"); // Test body f_send_InitialContext_SetupRequest(m_InitialContextSetupReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, m_UEAggregateMaximumBitrate(1,1), {m_E_RABToBeSetupItemCtxtSUReq ( c_E_RAB_ID_A, m_e_RABlevelQoSParameters (5), c_transportLayerAddress, c_gTP_TEID )}, m_UESecurityCapabilities(PX_ENCRYPTION_ALGORITHM, PX_INTEGRITY_PROTECTION_ALGORITHM), m_securityKey )); f_recv_InitialContext_SetupResponse(mw_InitialContextSetupFailureIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_cause_nas(csg_subscription_expiry) )); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_07 /** * @desc Testcase function for TC_S1AP_eNB_CMP_08 */ function f_TC_S1AP_eNB_CMP_08() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; const TransportLayerAddress c_transportLayerAddress := '0'B; const GTP_TEID c_gTP_TEID := '00000000'O; const NAS_PDU c_nAS_PDU := '0000'O; // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_InitialContext_SetupRequest(m_InitialContextSetupReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, m_UEAggregateMaximumBitrate(1,1), {m_E_RABToBeSetupItemCtxtSUReq( c_E_RAB_ID_A, m_e_RABlevelQoSParameters (1), c_transportLayerAddress, c_gTP_TEID, c_nAS_PDU, //{m_correlationID_IE('01020304'O), m_SIPTO_correlationID_IE('01020304'O)} // iE_Extensions // Following code replaces upper commented line - IEs are extensionList type. {{id := 156,//S1AP_Constants.id_Correlation_ID, criticality := ignore, extensionValue := {Correlation_ID := '01020304'O} }, {id := 183,// S1AP_Constants.id_SIPTO_Correlation_ID, criticality := ignore, extensionValue := {Correlation_ID := '01020304'O} } } )}, m_UESecurityCapabilities(PX_ENCRYPTION_ALGORITHM, PX_INTEGRITY_PROTECTION_ALGORITHM), m_securityKey )); f_recv_InitialContext_SetupResponse(mw_InitialContextSetupResIEs( vc_MME_UE_ID, vc_eNB_UE_ID, -, { mw_E_RABItem( c_E_RAB_ID_A, ? ) } )); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_08 /** * @desc Testcase function for TC_S1AP_eNB_CMP_09 */ function f_TC_S1AP_eNB_CMP_09() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_recv_UE_Context_Release_Request(mw_UeContextReleaseRequestIEs (vc_MME_UE_ID, vc_eNB_UE_ID, ?)); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_09 /** * @desc Testcase function for TC_S1AP_eNB_CMP_10 */ function f_TC_S1AP_eNB_CMP_10() runs on S1APComponent { // Local variables var template(value) Cause v_cause; select(PX_VA){ case(1){v_cause := m_cause_ran(user_inactivity)} case(2){v_cause := m_cause_ran(radio_connection_with_ue_lost)} case(3){v_cause := m_cause_nas(csg_subscription_expiry)} case(4){v_cause := m_cause_ran(cs_fallback_triggered)} case(5){v_cause := m_cause_ran(redirection_towards_1xRTT)} case(6){v_cause := m_cause_ran(interrat_redirection)} case(7){v_cause := m_cause_ran(ue_not_available_for_ps_service)} case else {setverdict(fail, "undefined PIXIT value for variant")} } // Preamble f_S1AP_enb_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_UE_Context_Release_Command(m_UeContextReleaseCommandIEs_MME( vc_MME_UE_ID, v_cause )); f_recv_UE_Context_Release_Complete(mw_UeContextReleaseCompleteIEs( vc_MME_UE_ID, vc_eNB_UE_ID )); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_10 /** * @desc Testcase function for TC_S1AP_eNB_CMP_11 */ function f_TC_S1AP_eNB_CMP_11() runs on S1APComponent { // Local variables var template(value) Cause v_cause; select(PX_VA){ case(1){v_cause := m_cause_ran(user_inactivity)} case(2){v_cause := m_cause_ran(radio_connection_with_ue_lost)} case(3){v_cause := m_cause_nas(csg_subscription_expiry)} case(4){v_cause := m_cause_ran(cs_fallback_triggered)} case(5){v_cause := m_cause_ran(redirection_towards_1xRTT)} case(6){v_cause := m_cause_ran(interrat_redirection)} case(7){v_cause := m_cause_ran(ue_not_available_for_ps_service)} case else {setverdict(fail, "undefined PIXIT value for variant")} } // Preamble f_S1AP_enb_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_UE_Context_Release_Command(m_UeContextReleaseCommandIEs_ENB( vc_eNB_UE_ID, v_cause )); f_recv_UE_Context_Release_Complete(mw_UeContextReleaseCompleteIEs( vc_MME_UE_ID, vc_eNB_UE_ID )); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_11 /** * @desc Testcase function for TC_S1AP_eNB_CMP_12 */ function f_TC_S1AP_eNB_CMP_12() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_InitialContext_SetupRequest(m_InitialContextSetupReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, m_UEAggregateMaximumBitrate(1,1), {m_E_RABToBeSetupItemCtxtSUReq ( -, m_e_RABlevelQoSParameters (5), - )}, m_UESecurityCapabilities(PX_ENCRYPTION_ALGORITHM, PX_INTEGRITY_PROTECTION_ALGORITHM), m_securityKey )); f_recv_InitialContext_SetupResponse(mw_InitialContextSetupResIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABSetupItemBearerSURes } )); tc_wait.start(PX_TS1RELOCOverall); tc_wait.timeout; f_recv_UE_Context_Release_Request(mw_UeContextReleaseRequestIEs (vc_MME_UE_ID, vc_eNB_UE_ID, ?)); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_12 /** * @desc Testcase function for TC_S1AP_eNB_CMP_13 */ function f_TC_S1AP_eNB_CMP_13() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_UE_Context_Modification_Request(m_ContextModificationReqIEsUEAgg( vc_MME_UE_ID, vc_eNB_UE_ID, m_UEAggregateMaximumBitrate(1,1) )); f_recv_UE_Context_Modification_Response(mw_UeContextModificationResponseIEs( vc_MME_UE_ID, vc_eNB_UE_ID )); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_13 /** * @desc Testcase function for TC_S1AP_eNB_CMP_14 */ function f_TC_S1AP_eNB_CMP_14() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_UE_Context_Modification_Request(m_ContextModificationReqIEsSecKey( vc_MME_UE_ID, vc_eNB_UE_ID, cs_fallback_required, m_securityKey )); f_recv_UE_Context_Modification_Failure(mw_UeContextModificationFailureIEs( vc_MME_UE_ID, vc_eNB_UE_ID, ? // cause )); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_14 /** * @desc Testcase function for TC_S1AP_eNB_CMP_15 */ function f_TC_S1AP_eNB_CMP_15() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_UE_Context_Modification_Request(m_ContextModificationReqIEsSecCap( vc_MME_UE_ID, vc_eNB_UE_ID, cs_fallback_required, m_UESecurityCapabilities(PX_ENCRYPTION_ALGORITHM, PX_INTEGRITY_PROTECTION_ALGORITHM) )); f_recv_UE_Context_Modification_Failure(mw_UeContextModificationFailureIEs( vc_MME_UE_ID, vc_eNB_UE_ID, ? // cause )); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_15 /** * @desc Testcase function for TC_S1AP_eNB_CMP_16 */ function f_TC_S1AP_eNB_CMP_16() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_UE_Radio_Capability_Match_Request(m_UeRadioCapabilityMatchReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, '0001'O // UERadioCapability )); f_recv_UeRadioCapabilityMatchResponse(mw_UeRadioCapabilityMatchResponseIEs( vc_MME_UE_ID, vc_eNB_UE_ID, ? // Voice_Support_Match_Indicator )); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_16 /** * @desc Testcase function for TC_S1AP_eNB_CMP_17 */ function f_TC_S1AP_eNB_CMP_17() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body action("trigger a UE context modification indication"); f_recv_Ue_Context_Modification_Indication(mw_UeContextModificationIndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID )); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_17 /** * @desc Testcase function for TC_S1AP_eNB_CMP_18 */ function f_TC_S1AP_eNB_CMP_18() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body action("trigger a UE context suspend request"); f_recv_Ue_Context_Suspend_Request(mw_UeContextSuspendRequestIEs( vc_MME_UE_ID, vc_eNB_UE_ID )); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_18 /** * @desc Testcase function for TC_S1AP_eNB_CMP_19 */ function f_TC_S1AP_eNB_CMP_19() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body action("trigger a UE context resume request"); f_recv_Ue_Context_Resume_Request(mw_UeContextResumeRequestIEs( vc_MME_UE_ID, vc_eNB_UE_ID )); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_19 } // End of group Context_management_group /** * @desc Handover signalling group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.4 Handover signalling group */ group Handover_signalling_group { /** * @desc Testcase function for TC_S1AP_eNB_HAS_01 */ function f_TC_S1AP_eNB_HAS_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a Handover to be forwarded if (fx_eNB_Handover_preparation_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a HANDOVER_REQUIRED f_recv_HandoverRequired( mw_HandoverRequiredIEs( vc_MME_UE_ID, vc_eNB_UE_ID, intralte,//handover_Type -,//Cause -,//TargetId -//SourceToTargetTransparentContainer )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_send_HandoverCommand( m_HandoverCommandIEs( vc_MME_UE_ID, vc_eNB_UE_ID, intralte,//handover_Type PX_TARGET_TO_SOURCE_TANSPARENT_CONTAINER//TargetToSourceTransparentContainer )); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_HAS_01 /** * @desc Testcase function for TC_S1AP_eNB_HAS_02 */ function f_TC_S1AP_eNB_HAS_02() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a Handover to be forwarded if (fx_eNB_Handover_preparation_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a HANDOVER_REQUIRED f_recv_HandoverRequired( mw_HandoverRequiredIEs( vc_MME_UE_ID, vc_eNB_UE_ID, ltetoutran,//handover_Type -,//Cause -,//TargetId -//TODO Check if SourceRNCToTargetRNCTransparentContainer with UE History Information is present )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_HAS_02 /** * @desc Testcase function for TC_S1AP_eNB_HAS_03 */ function f_TC_S1AP_eNB_HAS_03() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a Handover to be forwarded if (fx_eNB_Handover_preparation_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a HANDOVER_REQUIRED f_recv_HandoverRequired( mw_HandoverRequiredIEs( vc_MME_UE_ID, vc_eNB_UE_ID, ltetogeran,//handover_Type -,//Cause -,//TargetId -//TODO Check if SourceBSSToTargetBSSTransparentContainer )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_HAS_03 /** * @desc Testcase function for TC_S1AP_eNB_HAS_04 */ function f_TC_S1AP_eNB_HAS_04() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; const NAS_PDU c_nAS_PDU := '0000'O; // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a Handover to be forwarded if (fx_eNB_Handover_preparation_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a HANDOVER_REQUIRED f_recv_HandoverRequired( mw_HandoverRequiredIEs( vc_MME_UE_ID, vc_eNB_UE_ID, intralte,//handover_Type -,//Cause -,//TargetId -//SourceToTargetTransparentContainer )); f_send_E_RABModifiedRequest(m_E_RABModifiedReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, {m_E_RABToBeModifiedItemBearerSUReq( c_E_RAB_ID_A, m_e_RABlevelQoSParameters(5), c_nAS_PDU )} )); if (PX_VA==1)//cASE 1 { f_recv_HandoverCancel( mw_HandoverCancelIEs( vc_MME_UE_ID, vc_eNB_UE_ID, ? )); f_recv_E_RABModifiedResponse(mw_E_RABModifiedResIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABModifyItemBearerModRes( c_E_RAB_ID_A ) } )); } else if (PX_VA==2)//cASE 2 { f_recv_E_RABModifiedResponse(mw_E_RABModifiedResIEs_FailedToModifyList( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABItem( c_E_RAB_ID_A, { radioNetwork := (s1_intra_system_handover_triggered, s1_inter_system_handover_triggered) } ) } )); f_recv_HandoverCommand(mw_HandoverCommandIEs_ERABSubj2FwList( vc_MME_UE_ID, vc_eNB_UE_ID, intralte, ?, ? )); } f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_HAS_04 /** * @desc Testcase function for TC_S1AP_eNB_HAS_05 */ function f_TC_S1AP_eNB_HAS_05() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a Handover to be forwarded if (fx_eNB_Handover_preparation_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a HANDOVER_REQUIRED f_recv_HandoverRequired( mw_HandoverRequiredIEs( vc_MME_UE_ID, vc_eNB_UE_ID, intralte,//handover_Type -,//Cause -,//TargetId -//SourceToTargetTransparentContainer )); log("No response is send to IUT before timer TS1RELOCprep expires."); //wait for timer TS1RELOCprep f_sleepIgnoreDef(1.0); f_recv_HandoverCancel( mw_HandoverCancelIEs( vc_MME_UE_ID, vc_eNB_UE_ID, -//Cause )); f_send_HandoverCancelAcknowledge( m_HandoverCancelAckIEs( vc_MME_UE_ID, vc_eNB_UE_ID )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_HAS_05 /** * @desc Testcase function for TC_S1AP_eNB_HAS_06 */ function f_TC_S1AP_eNB_HAS_06() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_HandoverRequest(m_HandoverReqIEs( vc_MME_UE_ID, intralte,//Handover Type m_cause_ran(successful_handover),//Cause m_UEAggregateMaximumBitrate(1,1),//UE Aggregate_Max_Bit_Rate {m_E_RABToBeSetupItemHOReq ( -, -, -, m_e_RABlevelQoSParameters (5) )},//E_RabsToBeSetupList PX_SOURCE_TO_TARGET_TANSPARENT_CONTAINER,//SourceToTargetTransparentContainer m_UESecurityCapabilities(PX_ENCRYPTION_ALGORITHM, PX_INTEGRITY_PROTECTION_ALGORITHM),//UeSecurityCapabilities m_securityContext//SecurityContext )); f_recv_HandoverRequestAck(mw_HandoverRequestAckIEs( vc_MME_UE_ID, vc_eNB_UE_ID, -,//ERabsAdmittedList -//TargetToSourceTransparentContainer )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_HAS_06 /** * @desc Testcase function for TC_S1AP_eNB_HAS_07 */ function f_TC_S1AP_eNB_HAS_07() runs on S1APComponent { // Local variables const NASSecurityParameterstoE_UTRAN c_nASSecurityParameterstoE_UTRAN := '000000000000'O; // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_HandoverRequest(m_HandoverReqIEs_nASSecParToEUTRAN( vc_MME_UE_ID, utrantolte,//Handover Type m_cause_ran(successful_handover),//Cause m_UEAggregateMaximumBitrate(1,1),//UE Aggregate_Max_Bit_Rate {m_E_RABToBeSetupItemHOReq ( -, -, -, m_e_RABlevelQoSParameters (5) )},//E_RabsToBeSetupList PX_SOURCE_TO_TARGET_TANSPARENT_CONTAINER,//SourceToTargetTransparentContainer m_UESecurityCapabilities(PX_ENCRYPTION_ALGORITHM, PX_INTEGRITY_PROTECTION_ALGORITHM),//UeSecurityCapabilities m_securityContext,//SecurityContext c_nASSecurityParameterstoE_UTRAN//NASSecurityParameterstoE_UTRAN//for coding see TS 124 301 clause 9.9.2.7 )); f_recv_HandoverRequestAck(mw_HandoverRequestAckIEs( vc_MME_UE_ID, vc_eNB_UE_ID, -,//ERabsAdmittedList -//TargetToSourceTransparentContainer )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_HAS_07 /** * @desc Testcase function for TC_S1AP_eNB_HAS_08 */ function f_TC_S1AP_eNB_HAS_08() runs on S1APComponent { // Local variables const NASSecurityParameterstoE_UTRAN c_nASSecurityParameterstoE_UTRAN := '000000000000'O; // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_HandoverRequest(m_HandoverReqIEs_nASSecParToEUTRAN( vc_MME_UE_ID, gerantolte,//Handover Type m_cause_ran(successful_handover),//Cause m_UEAggregateMaximumBitrate(1,1),//UE Aggregate_Max_Bit_Rate {m_E_RABToBeSetupItemHOReq ( -, -, -, m_e_RABlevelQoSParameters (5) )},//E_RabsToBeSetupList PX_SOURCE_TO_TARGET_TANSPARENT_CONTAINER,//SourceToTargetTransparentContainer m_UESecurityCapabilities(PX_ENCRYPTION_ALGORITHM, PX_INTEGRITY_PROTECTION_ALGORITHM),//UeSecurityCapabilities m_securityContext,//SecurityContext c_nASSecurityParameterstoE_UTRAN//NASSecurityParameterstoE_UTRAN//for coding see TS 124 301 clause 9.9.2.7 )); f_recv_HandoverRequestAck(mw_HandoverRequestAckIEs( vc_MME_UE_ID, vc_eNB_UE_ID, -,//ERabsAdmittedList -//TargetToSourceTransparentContainer )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_HAS_08 /** * @desc Testcase function for TC_S1AP_eNB_HAS_09 */ function f_TC_S1AP_eNB_HAS_09() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_HandoverRequest(m_HandoverReqIEs_cSGMembershipStatus( vc_MME_UE_ID, gerantolte,//Handover Type m_cause_ran(successful_handover),//Cause m_UEAggregateMaximumBitrate(1,1),//UE Aggregate_Max_Bit_Rate {m_E_RABToBeSetupItemHOReq ( -, -, -, m_e_RABlevelQoSParameters (5) )},//E_RabsToBeSetupList PX_SOURCE_TO_TARGET_TANSPARENT_CONTAINER,//SourceToTargetTransparentContainer m_UESecurityCapabilities(PX_ENCRYPTION_ALGORITHM, PX_INTEGRITY_PROTECTION_ALGORITHM),//UeSecurityCapabilities m_securityContext,//SecurityContext member//CSG_MembershipStatus )); f_recv_HandoverFailure(mw_HandoverFailureIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_cause_ran(?) )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_HAS_09 /** * @desc Testcase function for TC_S1AP_eNB_HAS_10 */ function f_TC_S1AP_eNB_HAS_10() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); // And UE is not exchanged f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate handover notification procedureE if (fx_eNB_Handover_notification_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a HANDOVER NOTIFY f_recv_HandoverNotify( mw_HandoverNotifyIEs( vc_MME_UE_ID, vc_eNB_UE_ID, -,//E-UTRAN_CGI -//TAI )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_HAS_10 /** * @desc Testcase function for TC_S1AP_eNB_HAS_11 */ function f_TC_S1AP_eNB_HAS_11() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); // And UE is not exchanged f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate path switch request procedureE if (fx_eNB_Path_switch_request_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a PATH SWITCH REQUEST f_recv_PathSwitchRequest( mw_PathSwitchRequestIEs( vc_eNB_UE_ID, -,//E-RAB to be Switched vc_MME_UE_ID,//Source MME_UE_S1AP_ID -,//E-UTRAN_CGI -,//TAI -//UE Security capabilities )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_send_PathSwitchRequestAcknowledge(m_PathSwitchRequestAckIEs( vc_MME_UE_ID, vc_eNB_UE_ID, m_securityContext//Security Context )); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_HAS_11 /** * @desc Testcase function for TC_S1AP_eNB_HAS_12 */ function f_TC_S1AP_eNB_HAS_12() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a Handover to be forwarded if (fx_eNB_Handover_preparation_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a HANDOVER_REQUIRED f_recv_HandoverRequired( mw_HandoverRequiredIEs( vc_MME_UE_ID, vc_eNB_UE_ID, intralte,//handover_Type -,//Cause -,//TargetId -//SourceToTargetTransparentContainer )); log("No response is send to IUT before timer TS1RELOCprep expires."); //wait for timer TS1RELOCprep f_sleepIgnoreDef(1.0); f_recv_HandoverCancel( mw_HandoverCancelIEs( vc_MME_UE_ID, vc_eNB_UE_ID, -//Cause )); f_send_HandoverCancelAcknowledge( m_HandoverCancelAckIEs( vc_MME_UE_ID, vc_eNB_UE_ID )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_HAS_12 /** * @desc Testcase function for TC_S1AP_eNB_HAS_13 */ function f_TC_S1AP_eNB_HAS_13() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a Handover to be forwarded if (fx_eNB_Handover_preparation_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a HANDOVER_REQUIRED f_recv_HandoverRequired( mw_HandoverRequiredIEs( vc_MME_UE_ID, vc_eNB_UE_ID, intralte,//handover_Type -,//Cause -,//TargetId -//SourceToTargetTransparentContainer )); f_send_HandoverCommand( m_HandoverCommandIEs( vc_MME_UE_ID, vc_eNB_UE_ID, intralte,//handover_Type PX_TARGET_TO_SOURCE_TANSPARENT_CONTAINER//TargetToSourceTransparentContainer )); action("Await eNB_STATUS_TRANSFER MESSAGE."); f_recv_EnbStatusTransfer( mw_EnbStatusTransferIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_eNBStatusTransferTransparentContainer//eNB Status Transfer Transparent Container )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_HAS_13 } // End of group Handover_signalling_group /** * @desc Paging group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.5 Paging group */ group Paging_group { // void } // End of group Paging_group /** * @desc NAS transport group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.6 NAS transport group */ group NAS_transport_group { /** * @desc Testcase function for TC_S1AP_eNB_NAS_01 */ function f_TC_S1AP_eNB_NAS_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate the initiation of a NAS Transport procedure if (fx_eNB_Initiate_NAS_transport_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends an INITIAL UE MESSAGE f_recv_Initial_UE_Message( mw_initial_uE_MessageIEs( vc_eNB_UE_ID, -, mw_TAI( PX_PLMN_IDENTITY, PX_TAC ), mw_eUTRAN_CGI( PX_PLMN_IDENTITY, PX_CELL_ID ), mw_cause_ran )); } f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_NAS_01 /** * @desc Testcase function for TC_S1AP_eNB_NAS_02 */ function f_TC_S1AP_eNB_NAS_02() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); // And a NAS procedure is initiated fx_eNB_Initiate_NAS_transport_procedure(); f_recv_Initial_UE_Message( mw_initial_uE_MessageIEs( vc_eNB_UE_ID, -, mw_TAI( PX_PLMN_IDENTITY, PX_TAC ), mw_eUTRAN_CGI( PX_PLMN_IDENTITY, PX_CELL_ID ), mw_cause_ran )); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate an ongoing NAS Transport procedure if (fx_eNB_NAS_transport_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends an UPLINK_NAS_TRANSPORT f_recv_Uplink_NAS_Transport( mw_uplink_nAS_TransportIEs( vc_MME_UE_ID, vc_eNB_UE_ID, -, mw_eUTRAN_CGI( PX_PLMN_IDENTITY, PX_CELL_ID ), mw_TAI( PX_PLMN_IDENTITY, PX_TAC ))); } f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_NAS_02 /** * @desc Testcase function for TC_S1AP_eNB_NAS_03 */ function f_TC_S1AP_eNB_NAS_03() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); // And UE is not exchanged f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a UE has not received a INITIAL_UE_MESSAGE if (fx_eNB_NAS_transport_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a NAS_NON_DELIVERY_INDICATION f_recv_NAS_Non_Delivery_Indication( mw_nAS_Non_Delivery_IndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID, -, mw_cause_ran( unspecified // Check the value to be used ) )); } f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_NAS_03 } // End of group NAS_transport_group /** * @desc Management group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.7 Management group */ group Management_group { /** * @desc Testcase function for TC_S1AP_eNB_TRP_01 */ function f_TC_S1AP_eNB_MNP_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_Reset( m_resetIEs( m_cause_nas( unspecified // Check the value to be used ), m_resetType_all )); f_recv_Reset_Acknowledge( mw_reset_AcknowledgeIEs( { ?/*mw_uE_associatedLogicalS1_ConnectionItemResAck_IE( mw_uE_associatedLogicalS1_ConnectionItem( vc_MME_UE_ID, vc_eNB_UE_ID ))*/ } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_MNP_01 /** * @desc Testcase function for TC_S1AP_eNB_TRP_02 */ function f_TC_S1AP_eNB_MNP_02() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a Reset procedure initiated from the E-UTRAN if (fx_eNB_Reset_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a RESET f_recv_Reset( mw_resetIEs( mw_cause_nas( unspecified // Check the value to be used ), m_resetType_all )); } f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_MNP_02 /** * @desc Testcase function for TC_S1AP_eNB_TRP_03 */ function f_TC_S1AP_eNB_MNP_03() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_Reset( m_resetIEs( m_cause_nas( unspecified // Check the value to be used ), m_resetType_partOfS1_Interface( { /*m_uE_associatedLogicalS1_ConnectionItemResAck_IE( m_uE_associatedLogicalS1_ConnectionItem( 0, 0 )),*/ // Following code replaces upper commented line due to validation check error //expression at [0].criticality is not of type 'enumerated // Type_824701419588_UE_associatedLogicalS1_ConnectionListRes_3 { // reject(0), // ignore(1), // notify(2) //}' { id := 91,//S1AP_Constants.id_UE_associatedLogicalS1_ConnectionItem, criticality := reject, value_ := { UE_associatedLogicalS1_ConnectionItem := valueof(m_uE_associatedLogicalS1_ConnectionItem(0,0))} } } ) )); f_recv_Reset_Acknowledge( mw_reset_AcknowledgeIEs( { ?/*mw_uE_associatedLogicalS1_ConnectionItemResAck_IE( mw_uE_associatedLogicalS1_ConnectionItem( vc_MME_UE_ID, vc_eNB_UE_ID ))*/ } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_MNP_03 /** * @desc Testcase function for TC_S1AP_eNB_TRP_04 */ function f_TC_S1AP_eNB_MNP_04() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate an Error Indication procedure if (fx_eNB_Error_Indication_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a ERROR_INDICATION f_recv_Error_Indication( superset ( all from mw_error_IndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_cause_IE( - ) ), mw_error_IndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_criticalityDiagnostics_IE( - ) ) ) ); } f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_MNP_04 /** * @desc Testcase function for TC_S1AP_eNB_TRP_05 */ function f_TC_S1AP_eNB_MNP_05() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a S1 Setup procedure if (fx_eNB_S1_Setup_Request_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a S1 SETUP REQUEST f_recv_S1_Setup_Request( mw_s1_Setup_RequestIEs( mw_Global_eNB_ID( PX_PLMN_IDENTITY, PX_eNB_ID ), { mw_supportedTAs_Item( PX_TAC, { PX_PLMN_IDENTITY } ) }, PX_PAGING_DRX )); // Send the response to finalyse the procedure f_send_S1_Setup_Response( m_s1_Setup_ResponseIEs( { m_servedGUMMEIsItem( { PX_PLMN_IDENTITY }, { PX_MME_GROUP_ID }, { PX_MME_CODE } ) }, PX_RELATIVE_MME_CAPACITY )); } f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_MNP_05 /** * @desc Testcase function for TC_S1AP_eNB_TRP_06 */ function f_TC_S1AP_eNB_MNP_06() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate an eNB Configuration Update procedure if (fx_eNB_Configuration_Update_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends an ENB_CONFIGURATION_UPDATE f_recv_eNB_Configuration_Update( mw_eNB_Configuration_UpdateIEs( mw_Global_eNB_ID( PX_PLMN_IDENTITY, PX_eNB_ID ), { mw_supportedTAs_Item( PX_TAC, { PX_PLMN_IDENTITY } ) } )); // Send the acknowledge to finalyse the procedure f_send_eNB_Configuration_Update_Acknowledge( m_eNB_Configuration_Update_AcknowledgeIEs ); } f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_MNP_06 /** * @desc Testcase function for TC_S1AP_eNB_TRP_07 */ function f_TC_S1AP_eNB_MNP_07() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_MME_Configuration_Update( m_mME_Configuration_UpdateIEs( { m_servedGUMMEIsItem( { PX_PLMN_IDENTITY }, { PX_MME_GROUP_ID }, { PX_MME_CODE } ) } )); f_recv_MME_Configuration_Update_Acknowledge( mw_mME_Configuration_Update_AcknowledgeIEs ); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_MNP_07 /** * @desc Testcase function for TC_S1AP_eNB_TRP_08 */ function f_TC_S1AP_eNB_MNP_08() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_MME_Configuration_Update( m_mME_Configuration_UpdateIEs( { m_servedGUMMEIsItem( { PX_PLMN_IDENTITY, PX_PLMN_IDENTITY_UNKNOWN }, { PX_MME_GROUP_ID }, { PX_MME_CODE } ) } )); f_recv_MME_Configuration_Update_Failure( mw_mME_Configuration_Update_FailureIEs( mw_cause_misc( unknown_PLMN ))); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_MNP_08 } // End of group Management_group /** * @desc S1 CDMA 2000 tunnelling group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.8 S1 CDMA 2000 tunnelling group */ group S1_CDMA_2000_tunnelling_group { /** * @desc Testcase function for TC_S1AP_eNB_STP_01 */ function f_TC_S1AP_eNB_STP_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a CDMA2000 to be forwarded if (fx_eNB_Uplink_S1_CDMA2000_Tunnelling_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a an UPLINK_S1_CDMA2000_TUNNELLING f_recv_Uplink_S1_CDMA2000_Tunnelling( mw_uplink_S1_CDMA2000_TunnellingIEs( vc_MME_UE_ID, vc_eNB_UE_ID, PX_CDMA200_RAT_TYPE, PX_CDMA200_SECTOR_ID, PX_CDMA200_PDU )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_STP_01 } // End of group S1_CDMA_2000_tunnelling_group /** * @desc UE capability info indication group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.9 UE capability info indication group */ group UE_capability_info_indication_group { /** * @desc Testcase function for TC_S1AP_eNB_UEC_01 */ function f_TC_S1AP_eNB_UEC_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a capability-related information update if (fx_eNB_UE_Capability_Info_Indication_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a UE_CAPABILITY_INFO_INDICATION f_recv_eNB_UE_Capability_Info_Indication( mw_uE_Capability_Info_IndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_UEC_01 } // End of group UE_capability_info_indication_group /** * @desc Warning message transmission group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.10 Trace group */ group Trace_group { /** * @desc Testcase function for TC_S1AP_eNB_TRP_01 */ function f_TC_S1AP_eNB_TRP_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged, and a handover procedure is initiated. f_rABSetupRequest(); f_initiate_handover(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_Trace_Start( m_trace_StartIEs( m_traceActivation( PX_EUTRAN_TRACE_ID, PX_INTERFACES_TO_TRACE, PX_TRACE_DEPTH, PX_TRANSPORT_LAYER_ADDRESS ))); f_recv_Trace_Failure_Indication( mw_trace_Failure_IndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID, PX_EUTRAN_TRACE_ID )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_TRP_01 /** * @desc Testcase function for TC_S1AP_eNB_TRP_02 */ function f_TC_S1AP_eNB_TRP_02() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged, and a handover procedure is initiated. f_rABSetupRequest(); f_initiate_traceStart(); f_initiate_handover(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_deactivate_Trace( m_deactivate_TraceIEs( vc_MME_UE_ID, vc_eNB_UE_ID, PX_EUTRAN_TRACE_ID )); f_recv_Trace_Failure_Indication( mw_trace_Failure_IndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID, PX_EUTRAN_TRACE_ID )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_initiate_deactivateTrace(); f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_TRP_02 /** * @desc Testcase function for TC_S1AP_eNB_TRP_03 */ function f_TC_S1AP_eNB_TRP_03() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged, and a handover procedure is initiated. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_initiate_traceStart(); f_recv_Cell_Traffic_Trace( mw_cell_Traffic_TraceIEs( vc_MME_UE_ID, vc_eNB_UE_ID, PX_EUTRAN_TRACE_ID, mw_eUTRAN_CGI )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_initiate_deactivateTrace(); f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_TRP_03 } // End of group Trace_group /** * @desc Warning message transmission group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.11 Location reporting group */ group Location_reporting_group { /** * @desc Testcase function for TC_S1AP_eNB_LRP_01 */ function f_TC_S1AP_eNB_LRP_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_Location_Reporting_Control( m_location_Reporting_ControlIEs( vc_MME_UE_ID, vc_eNB_UE_ID, m_request_Type( direct, PX_REPORT_AREA ))); f_recv_Location_Report( mw_location_ReportIEs( ?, ?, mw_eUTRAN_CGI( PX_PLMN_IDENTITY, PX_CELL_ID ), mw_TAI( PX_PLMN_IDENTITY, PX_TAC ), mw_request_Type( direct, PX_REPORT_AREA ))); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_LRP_01 /** * @desc Testcase function for TC_S1AP_eNB_LRP_02 */ function f_TC_S1AP_eNB_LRP_02() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_Location_Reporting_Control( m_location_Reporting_ControlIEs( vc_MME_UE_ID, vc_eNB_UE_ID, m_request_Type( change_of_serve_cell, PX_REPORT_AREA ))); fx_move_UE_to_new_cell(); // when UE changes to new cell f_recv_Location_Report( mw_location_ReportIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_eUTRAN_CGI( PX_PLMN_IDENTITY, PX_CELL_ID ), mw_TAI( PX_PLMN_IDENTITY, PX_TAC ), mw_request_Type( change_of_serve_cell, PX_REPORT_AREA ))); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_LRP_02 /** * @desc Testcase function for TC_S1AP_eNB_LRP_03 */ function f_TC_S1AP_eNB_LRP_03() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_Location_Reporting_Control( m_location_Reporting_ControlIEs( vc_MME_UE_ID, vc_eNB_UE_ID, m_request_Type( stop_change_of_serve_cell, PX_REPORT_AREA ))); fx_check_UE_stops_reporting(); // when UE stop reporting at change of serving cell f_recv_Location_Report( mw_location_ReportIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_eUTRAN_CGI( PX_PLMN_IDENTITY, PX_CELL_ID ), mw_TAI( PX_PLMN_IDENTITY, PX_TAC ), mw_request_Type( stop_change_of_serve_cell, PX_REPORT_AREA ))); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_LRP_03 /** * @desc Testcase function for TC_S1AP_eNB_LRP_04 */ function f_TC_S1AP_eNB_LRP_04() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged, and a handover procedure is initiated. f_rABSetupRequest(); f_initiate_handover(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_Location_Reporting_Control( m_location_Reporting_ControlIEs( vc_MME_UE_ID, vc_eNB_UE_ID, m_request_Type( PX_EVENT_TYPE, PX_REPORT_AREA ))); f_recv_Location_Report_Failure_Indication( mw_location_Report_Failure_IndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID, ? )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_LRP_04 } // End of group Location_reporting_group /** * @desc Warning message transmission group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.12 Warning message transmission group */ group Warning_message_transmission_group { /** * @desc Testcase function for TC_S1AP_eNB_WTP_01 */ function f_TC_S1AP_eNB_WTP_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_Write_Replace_Warning_Request( m_write_Replace_Warning_RequestIEs( PX_MESSAGE_IDENTIFIER, PX_SERIAL_NUMBER, PX_REPETITION_PERIOD, PX_NUMBER_OF_BROADCASTS_REQUESTED )); f_recv_Write_Replace_Warning_Response( mw_write_Replace_Warning_ResponseIEs( ?, ? )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_WTP_01 /** * @desc Testcase function for TC_S1AP_eNB_WTP_02 */ function f_TC_S1AP_eNB_WTP_02() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_Kill_Request( m_kill_RequestIEs( PX_MESSAGE_IDENTIFIER, PX_SERIAL_NUMBER )); f_recv_Kill_Response( mw_kill_ResponseIEs( ?, ? )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_WTP_02 /** * @desc Testcase function for TC_S1AP_eNB_WTP_03 */ function f_TC_S1AP_eNB_WTP_03() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a PWS Restart Indication procedure if (fx_eNB_PWS_Restart_Indication_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a PWS_RESTART_INDICATION f_recv_eNB_PWS_Restart_Indication( mw_pWS_Restart_IndicationIEs( { mw_eUTRAN_CGI( PX_PLMN_IDENTITY, PX_CELL_ID ) }, mw_Global_eNB_ID( PX_PLMN_IDENTITY, PX_eNB_ID ), { mw_TAI( PX_PLMN_IDENTITY, PX_TAC ) }, { PX_EMERGENCY_AREA_ID } )); } f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_WTP_03 /** * @desc Testcase function for TC_S1AP_eNB_WTP_04 */ function f_TC_S1AP_eNB_WTP_04() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a PWS Failure Indication procedure if (fx_eNB_PWS_Failure_Indication_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a PWS_FAILURE_INDICATION f_recv_eNB_PWS_Failure_Indication( mw_pWS_Failure_IndicationIEs( { mw_eUTRAN_CGI( PX_PLMN_IDENTITY, PX_CELL_ID ) }, mw_Global_eNB_ID( PX_PLMN_IDENTITY, PX_eNB_ID ) )); } f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_WTP_04 } // End of group Warning_message_transmission_group /** * @desc eNB direct information transfer group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.13 eNB direct information transfer group */ group ENB_direct_information_transfer_group { /** * @desc Testcase function for TC_S1AP_eNB_EIT_01 */ function f_TC_S1AP_eNB_EIT_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate an ENB Direct Information Transfer procedure if (fx_eNB_Direct_Information_Transfer_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a ENB_DIRECT_INFORMATION_TRANSFER f_recv_eNB_Direct_Information_Transfer( mw_eNBDirectInformationTransfer_EDT( mw_Inter_SystemInformationTransferType( mw_RIMTransfer( ? // FIXME To be refined )))); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_EIT_01 } // End of group ENB_direct_information_transfer_group /** * @desc NAS transport group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.14 MME direct information transport group */ group MME_direct_information_transfer_group { // Void } // End of group MME_direct_information_transfer_group /** * @desc eNB configuration transfer group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.15 eNB configuration transfer group */ group ENB_configuration_transfer_group { /** * @desc Testcase function for TC_S1AP_eNB_ECT_01 */ function f_TC_S1AP_eNB_ECT_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate an ENB Configuration Transfer procedure if (fx_eNB_Configuration_Transfer_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a ENB_CONFIGURATION_TRANSFER f_recv_eNB_Direct_Information_Transfer( mw_sON_Configuration_Transfer_ECT( mw_sON_Configuration_Transfer( mw_TargeteNB_ID(mw_Global_eNB_ID, mw_TAI), mw_SourceeNB_ID(mw_Global_eNB_ID, mw_TAI), ? // FIXME To be refined ))); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_ECT_01 } // End of group ENB_configuration_transfer_group /** * @desc NAS transport group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.16 MME configuration transport group */ group MME_configuration_transfer_group { // Void } // End of group MME_configuration_transfer_group /** * @desc LPPa transport group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.17 LPPa transport group */ group LPPa_transport_group { /** * @desc Testcase function for TC_S1AP_eNB_LPP_01 */ function f_TC_S1AP_eNB_LPP_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a LPPa Transport procedure using a UE associated signalling if (fx_eNB_LPPa_Transport_procedure_ind(true) == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a UPLINK_UE_ASSOCIATED_LPPA_TRANSPORT f_recv_Uplink_UE_Associated_Lppa_Transport( mw_UplinkUEAssociatedLppaTransportIEs_LPPa_PDU( ? )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_LPP_01 /** * @desc Testcase function for TC_S1AP_eNB_LPP_02 */ function f_TC_S1AP_eNB_LPP_02() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a LPPa Transport procedure using a UE associated signalling if (fx_eNB_LPPa_Transport_procedure_ind(false) == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a UPLINK_NONE_UE_ASSOCIATED_LPPA_TRANSPORT f_recv_Uplink_Non_UE_Associated_Lppa_Transport( mw_UplinkNonUEAssociatedLppaTransportIEs_LPPa_PDU( ? )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_LPP_02 } // End of group LPPa_transport_group /** * @desc Unknown, Unforseen and Erroneous Protocol Data * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.18 Unknown, Unforseen and Erroneous Protocol Data */ group Unknown_unforseen_errorneous_group { /** * @desc Testcase function for TC_S1AP_ENB_ERR_01 */ function f_TC_S1AP_ENB_ERR_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. on receipt of an INITIAL_CONTEXT_SETUP_REQUEST f_send_InitialContext_SetupRequest( m_InitialContextSetupReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, m_UEAggregateMaximumBitrate(1,1), { m_E_RABToBeSetupItemCtxtSUReq ( -, m_e_RABlevelQoSParameters (0), - )}, m_UESecurityCapabilities( PX_UNSUPPORTED_ENCRYPTION_ALGORITHM, PX_INTEGRITY_PROTECTION_ALGORITHM ), m_securityKey ), PX_VA_CRITICALITY ); // 2. sends an ERROR_INDICATION f_recv_Error_Indication( mw_error_IndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_criticalityDiagnostics_IE( mw_criticalityDiagnostics( PX_PROCEURE_CODE, PX_TRIGGERING_CODE, PX_CRITICALITY ) ) )); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_ENB_ERR_01 /** * @desc Testcase function for TC_S1AP_ENB_ERR_02 */ function f_TC_S1AP_ENB_ERR_02() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. on receipt of an INITIAL_CONTEXT_SETUP_REQUEST f_send_InitialContext_SetupRequest( m_InitialContextSetupReqIEs_unknown_ID( vc_MME_UE_ID, vc_eNB_UE_ID, m_UEAggregateMaximumBitrate(1,1), { m_E_RABToBeSetupItemCtxtSUReq ( -, m_e_RABlevelQoSParameters (0), - )}, m_UESecurityCapabilities( PX_UNSUPPORTED_ENCRYPTION_ALGORITHM, PX_INTEGRITY_PROTECTION_ALGORITHM ), m_securityKey ) ); // 2. sends an INITIAL_CONTEXT_SETUP_FAILURE f_recv_InitialContext_SetupResponse( mw_InitialContextSetupFailureIEs_CriticalyDiagnostic( vc_MME_UE_ID, vc_eNB_UE_ID, mw_cause_protocol(abstract_syntax_error_falsely_constructed_message), mw_criticalityDiagnostics( PX_PROCEURE_CODE, PX_TRIGGERING_CODE, PX_CRITICALITY ))); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_ENB_ERR_02 /** * @desc Testcase function for TC_S1AP_ENB_ERR_03 */ function f_TC_S1AP_ENB_ERR_03() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. on receipt of an INITIAL_CONTEXT_SETUP_REQUEST f_send_InitialContext_SetupRequest( m_InitialContextSetupReqIEs_unknown_ID( vc_MME_UE_ID, vc_eNB_UE_ID, m_UEAggregateMaximumBitrate(1,1), { m_E_RABToBeSetupItemCtxtSUReq ( -, m_e_RABlevelQoSParameters (0), - )}, m_UESecurityCapabilities( PX_UNSUPPORTED_ENCRYPTION_ALGORITHM, PX_INTEGRITY_PROTECTION_ALGORITHM ), m_securityKey ) ); // 2. sends an ERROR_INDICATION f_recv_Error_Indication( mw_error_IndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_criticalityDiagnostics_IE( mw_criticalityDiagnostics( PX_PROCEURE_CODE, PX_TRIGGERING_CODE, PX_CRITICALITY, { mw_criticalityDiagnostics_IE_Item( reject, -, missing ) } ) ) )); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_ENB_ERR_03 /** * @desc Testcase function for TC_S1AP_ENB_ERR_04 */ function f_TC_S1AP_ENB_ERR_04() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. on receipt of an INITIAL_CONTEXT_SETUP_REQUEST f_send_InitialContext_SetupRequest( m_InitialContextSetupReqIEs_noENB( vc_MME_UE_ID, m_UEAggregateMaximumBitrate(1,1), { m_E_RABToBeSetupItemCtxtSUReq ( -, m_e_RABlevelQoSParameters (0), - )}, m_UESecurityCapabilities( PX_UNSUPPORTED_ENCRYPTION_ALGORITHM, PX_INTEGRITY_PROTECTION_ALGORITHM ), m_securityKey ) ); // 2. sends an INITIAL_CONTEXT_SETUP_FAILURE f_recv_InitialContext_SetupResponse( mw_InitialContextSetupFailureIEs_CriticalyDiagnostic( vc_MME_UE_ID, vc_eNB_UE_ID, mw_cause_protocol(abstract_syntax_error_falsely_constructed_message), mw_criticalityDiagnostics( PX_PROCEURE_CODE, PX_TRIGGERING_CODE, PX_CRITICALITY ))); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_ENB_ERR_04 /** * @desc Testcase function for TC_S1AP_ENB_ERR_05 */ function f_TC_S1AP_ENB_ERR_05() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. on receipt of an INITIAL_CONTEXT_SETUP_REQUEST f_send_E_RABSetupRequest( m_E_RABSetupReqIEs_no_eNB( vc_MME_UE_ID, { m_E_RABToBeSetupItemBearerSUReq ( -, m_e_RABlevelQoSParameters(5) ) } )); // 2. sends an ERROR_INDICATION f_recv_Error_Indication( mw_error_IndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_criticalityDiagnostics_IE( mw_criticalityDiagnostics( PX_PROCEURE_CODE, PX_TRIGGERING_CODE, PX_CRITICALITY, { mw_criticalityDiagnostics_IE_Item( reject, -, missing ) } ) ) )); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_ENB_ERR_05 /** * @desc Testcase function for TC_S1AP_ENB_ERR_06 */ function f_TC_S1AP_ENB_ERR_06() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. on receipt of an INITIAL_CONTEXT_SETUP_REQUEST f_send_InitialContext_SetupRequest( m_InitialContextSetupReqIEs_duplicate_eNB( vc_MME_UE_ID, vc_eNB_UE_ID, m_UEAggregateMaximumBitrate(1,1), { m_E_RABToBeSetupItemCtxtSUReq ( -, m_e_RABlevelQoSParameters (0), - )}, m_UESecurityCapabilities( PX_UNSUPPORTED_ENCRYPTION_ALGORITHM, PX_INTEGRITY_PROTECTION_ALGORITHM ), m_securityKey ) ); // 2. sends an INITIAL_CONTEXT_SETUP_FAILURE f_recv_InitialContext_SetupResponse( mw_InitialContextSetupFailureIEs_CriticalyDiagnostic( vc_MME_UE_ID, vc_eNB_UE_ID, mw_cause_protocol(abstract_syntax_error_falsely_constructed_message), mw_criticalityDiagnostics( PX_PROCEURE_CODE, PX_TRIGGERING_CODE, PX_CRITICALITY ))); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_ENB_ERR_06 /** * @desc Testcase function for TC_S1AP_ENB_ERR_07 */ function f_TC_S1AP_ENB_ERR_07() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // to indicate an ENB Configuration Transfer procedure f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. on receipt of an INITIAL_CONTEXT_SETUP_REQUEST f_send_E_RABSetupRequest( m_E_RABSetupReqIEs_duplicate_ENB( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABToBeSetupItemBearerSUReq ( -, m_e_RABlevelQoSParameters(5) ) } )); // 2. sends an ERROR_INDICATION f_recv_Error_Indication( mw_error_IndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_cause_IE( mw_cause_protocol(abstract_syntax_error_falsely_constructed_message) ) )); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_ENB_ERR_07 /** * @desc Testcase function for TC_S1AP_ENB_ERR_08 */ function f_TC_S1AP_ENB_ERR_08() runs on S1APComponent { // Local variables // Preamble f_S1AP_enb_init(); // Preamble action: E-RAB Setup is exchanged f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. on receipt of an INITIAL_CONTEXT_SETUP_REQUEST f_send_E_RABSetupRequest( m_E_RABSetupReqIEs_duplicate_ENB( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABToBeSetupItemBearerSUReq ( -, m_e_RABlevelQoSParameters(5) ) } )); // 2. sends an ERROR_INDICATION f_recv_Error_Indication( mw_error_IndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_cause_IE( mw_cause_ran(unknown_enb_ue_s1ap_id) ) )); // Postamble f_rABSetupRelease(); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_ENB_ERR_08 } // End of group Unknown_unforseen_errorneous_group } // End of group eNB_Role group MME_Role { /** * @desc E-RAB management group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.2 E-RAB management group */ group ERAB_management_group { /** * @desc Testcase function for TC_S1AP_eNB_RAB_01 */ function f_TC_S1AP_MME_RAB_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body action("trigger an Initial E-RAB Setup procedure"); f_recv_E_RABSetupRequest(mw_E_RABSetupReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABToBeSetupItemBearerSUReq(?,?,?,?,?) } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_send_E_RABSetupResponse(m_E_RABSetupResIEs( vc_MME_UE_ID, vc_eNB_UE_ID, {m_E_RABSetupItemBearerSURes} )); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_RAB_01 /** * @desc Testcase function for TC_S1AP_eNB_RAB_02 */ function f_TC_S1AP_MME_RAB_02() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body action("trigger an E-RAB Modify request"); f_recv_E_RABModifiedRequest(mw_E_RABModifiedReqIEs( vc_MME_UE_ID, vc_eNB_UE_ID, {mw_E_RABToBeModifiedItemBearerSUReq(?,mw_e_RABlevelQoSParameters(5),?)} )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_RAB_02 /** * @desc Testcase function for TC_S1AP_eNB_RAB_03 */ function f_TC_S1AP_MME_RAB_03() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body action("trigger an E-RAB Release request"); f_recv_E_RABReleaseCommand(mw_E_RABReleaseCmdIEs( vc_MME_UE_ID, vc_eNB_UE_ID, {mw_E_RABItem} )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_RAB_03 /** * @desc Testcase function for TC_S1AP_eNB_RAB_04 */ function f_TC_S1AP_MME_RAB_04() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; // Preamble f_S1AP_mme_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_E_RABModifiedInd( m_E_RABModifiedIndIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABToBeModifiedItemBearerModInd( c_E_RAB_ID_A, -, - ) } )); f_recv_E_RABModificationConfirm(mw_E_RABModificationConfirmIEs( vc_MME_UE_ID, vc_eNB_UE_ID, {mw_E_RABItem} )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_RAB_04 /** * @desc Testcase function for TC_S1AP_eNB_RAB_05 */ function f_TC_S1AP_MME_RAB_05() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; // Preamble f_S1AP_mme_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_E_RABModifiedInd( m_E_RABModifiedIndIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABToBeModifiedItemBearerModInd( c_E_RAB_ID_A, PX_INVALID_TPORT_LAYER_ADDR, - ) } )); f_recv_E_RABModificationConfirm(mw_E_RABModificationConfirmIEs( vc_MME_UE_ID, vc_eNB_UE_ID, {mw_E_RABItem(-,mw_cause_transport((transport_resource_unavailable,unspecified)))} )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_RAB_05 /** * @desc Testcase function for TC_S1AP_eNB_RAB_06 */ function f_TC_S1AP_MME_RAB_06() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; // Preamble f_S1AP_mme_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_E_RABModifiedInd( m_E_RABModifiedIndIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABToBeModifiedItemBearerModInd( c_E_RAB_ID_A, PX_INVALID_TPORT_LAYER_ADDR, - ) } )); f_recv_E_RABModificationConfirm(mw_E_RABModificationConfirmIEs( vc_MME_UE_ID, vc_eNB_UE_ID, {mw_E_RABItem(-,?)} )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_RAB_06 /** * @desc Testcase function for TC_S1AP_eNB_RAB_07 */ function f_TC_S1AP_MME_RAB_07() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; // Preamble f_S1AP_mme_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_E_RABModifiedInd( m_E_RABModifiedIndIEs_CSG( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABToBeModifiedItemBearerModInd( c_E_RAB_ID_A, -, - ) }, m_CSGMembershipInfo )); f_recv_E_RABModificationConfirm(mw_E_RABModificationConfirmIEsCSG( vc_MME_UE_ID, vc_eNB_UE_ID, {mw_E_RABItem}, mw_CSGMembershipInfo )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_RAB_07 /** * @desc Testcase function for TC_S1AP_eNB_RAB_08 */ function f_TC_S1AP_MME_RAB_08() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; const E_RAB_ID c_E_RAB_ID_B := 1; // Preamble f_S1AP_mme_init(); // Preamble action: INITIAL_CONTEXT_SETUP_REQUEST // containing at least two E-RABs and // INITIAL_CONTEXT_SETUP_RESPONSE are exchanged. f_rABInitialContextSetup({ m_E_RABToBeSetupItemCtxtSUReq (c_E_RAB_ID_A, m_e_RABlevelQoSParameters), m_E_RABToBeSetupItemCtxtSUReq (c_E_RAB_ID_B, m_e_RABlevelQoSParameters) }); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_E_RABModifiedInd( m_E_RABModifiedIndIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABToBeModifiedItemBearerModInd( c_E_RAB_ID_A, -, - ) } )); f_recv_E_RABModificationConfirm(mw_E_RABModificationConfirmIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABItem(c_E_RAB_ID_A, {radioNetwork := unspecified }) } )); f_recv_UE_Context_Release_Request(mw_UeContextReleaseRequestIEs (vc_MME_UE_ID, vc_eNB_UE_ID, {radioNetwork := unspecified })); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_RAB_08 /** * @desc Testcase function for TC_S1AP_eNB_RAB_09 */ function f_TC_S1AP_MME_RAB_09() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; const E_RAB_ID c_E_RAB_ID_B := 1; // Preamble f_S1AP_mme_init(); // Preamble action: INITIAL_CONTEXT_SETUP_REQUEST // containing at least two E-RABs and // INITIAL_CONTEXT_SETUP_RESPONSE are exchanged. f_rABInitialContextSetup({ m_E_RABToBeSetupItemCtxtSUReq (c_E_RAB_ID_A, m_e_RABlevelQoSParameters), m_E_RABToBeSetupItemCtxtSUReq (c_E_RAB_ID_B, m_e_RABlevelQoSParameters) }); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_E_RABModifiedInd( m_E_RABModifiedIndIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABToBeModifiedItemBearerModInd( c_E_RAB_ID_A, -, - ), m_E_RABToBeModifiedItemBearerModInd( c_E_RAB_ID_A, -, - ) } )); f_recv_E_RABModificationConfirm(mw_E_RABModificationConfirmIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_E_RABItem(c_E_RAB_ID_A, {radioNetwork := unspecified }) } )); f_recv_UE_Context_Release_Request(mw_UeContextReleaseRequestIEs (vc_MME_UE_ID, vc_eNB_UE_ID, {radioNetwork := unspecified })); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_RAB_09 /** * @desc Testcase function for TC_S1AP_eNB_RAB_10 */ function f_TC_S1AP_MME_RAB_10() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; // Preamble f_S1AP_mme_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_E_RABModifiedInd( m_E_RABModifiedIndIEs_CSG( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABToBeModifiedItemBearerModInd( c_E_RAB_ID_A, -, - ) }, m_CSGMembershipInfo(-,-,omit) )); f_recv_E_RABModificationConfirm(mw_E_RABModificationConfirmIEs( vc_MME_UE_ID, vc_eNB_UE_ID, {mw_E_RABItem(-,?)} )); f_recv_InitialContext_SetupRequest((mw_UeContextReleaseCommandIEs_MME, mw_UeContextReleaseCommandIEs_ENB)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_RAB_10 } // End of group ERAB_management_group /** * @desc Context management group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.3 Context management group */ group Context_management_group { /** * @desc Testcase function for TC_S1AP_mME_CMP_01 */ function f_TC_S1AP_mME_CMP_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body action("trigger an Initial Context Setup procedure"); f_recv_InitialContext_SetupRequest(mw_InitialContextSetupRequestIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_UEAggregateMaximumBitrate(?,?), { mw_E_RABToBeSetupItemCtxtSUReq(?,mw_e_RABlevelQoSParameters(5),?,?,?,omit) }, ?, ? )); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_01 /** * @desc Testcase function for TC_S1AP_mME_CMP_02 */ function f_TC_S1AP_mME_CMP_02() runs on S1APComponent { // Local variables var template(value) Cause v_cause; select(PX_VA){ case(1){v_cause := m_cause_ran(user_inactivity)} case(2){v_cause := m_cause_ran(radio_connection_with_ue_lost)} case(3){v_cause := m_cause_nas(csg_subscription_expiry)} case(4){v_cause := m_cause_ran(cs_fallback_triggered)} case(5){v_cause := m_cause_ran(redirection_towards_1xRTT)} case(6){v_cause := m_cause_ran(interrat_redirection)} case(7){v_cause := m_cause_ran(ue_not_available_for_ps_service)} case else {setverdict(fail, "undefined PIXIT value for variant")} } // Preamble f_S1AP_mme_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_UE_Context_Release_Command(m_UeContextReleaseRequestIEs( vc_MME_UE_ID, vc_eNB_UE_ID, v_cause )); f_recv_InitialContext_SetupRequest((mw_UeContextReleaseCommandIEs_MME, mw_UeContextReleaseCommandIEs_ENB)); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_send_UE_Context_Release_Complete(m_UeContextReleaseCompleteIEs( vc_MME_UE_ID, vc_eNB_UE_ID )); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_02 /** * @desc Testcase function for TC_S1AP_mME_CMP_03 */ function f_TC_S1AP_mME_CMP_03() runs on S1APComponent { // Local variables var template(value) Cause v_cause; // Preamble f_S1AP_mme_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body action("trigger a UE context modification request"); f_recv_UE_Context_Modification_Request(mw_UeContextModificationRequestIEs); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_03 /** * @desc Testcase function for TC_S1AP_mME_CMP_04 */ function f_TC_S1AP_mME_CMP_04() runs on S1APComponent { // Local variables var template(value) Cause v_cause; // Preamble f_S1AP_mme_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body action("trigger a UE radio capability match request"); f_recv_UE_Context_Modification_Request(mw_UeRadioCapabilityMatchRequestIEs); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_04 /** * @desc Testcase function for TC_S1AP_mME_CMP_05 */ function f_TC_S1AP_mME_CMP_05() runs on S1APComponent { // Local variables var template(value) Cause v_cause; // Preamble f_S1AP_mme_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_UE_Context_Modification_Indication(m_UeContextModificationIndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID )); f_recv_Ue_Context_Modification_Confirm(mw_UeContextModificationConfirmIEs); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_05 function f_TC_S1AP_mME_CMP_06() runs on S1APComponent { // Local variables var template(value) Cause v_cause; // Preamble f_S1AP_mme_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_UE_Context_Modification_Indication(m_UeContextModificationIndicationIEsCSG( vc_MME_UE_ID, vc_eNB_UE_ID, m_CSGMembershipInfo )); f_recv_Ue_Context_Modification_Confirm(mw_UeContextModificationConfirmIEsCSG); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_06 /** * @desc Testcase function for TC_S1AP_mME_CMP_07 */ function f_TC_S1AP_mME_CMP_07() runs on S1APComponent { // Local variables var template(value) Cause v_cause; // Preamble f_S1AP_mme_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_UE_Context_Modification_Indication(m_UeContextModificationIndicationIEsCSG( vc_MME_UE_ID, vc_eNB_UE_ID, m_CSGMembershipInfo(-,-,hybrid) )); f_recv_Ue_Context_Modification_Confirm(mw_UeContextModificationConfirmIEs); f_recv_InitialContext_SetupRequest((mw_UeContextReleaseCommandIEs_MME, mw_UeContextReleaseCommandIEs_ENB)); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_07 /** * @desc Testcase function for TC_S1AP_mME_CMP_08 */ function f_TC_S1AP_mME_CMP_08() runs on S1APComponent { // Local variables var template(value) Cause v_cause; // Preamble f_S1AP_mme_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_UE_Context_Suspend_Request(m_UeContextSuspendRequestIEs( vc_MME_UE_ID, vc_eNB_UE_ID )); f_recv_Ue_Context_Suspend_Response(mw_UeContextSuspendResponseIEs); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_08 /** * @desc Testcase function for TC_S1AP_mME_CMP_09 */ function f_TC_S1AP_mME_CMP_09() runs on S1APComponent { // Local variables var template(value) Cause v_cause; // Preamble f_S1AP_mme_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_Ue_Context_Resume_Request(m_UeContextResumeRequestIEs( vc_MME_UE_ID, vc_eNB_UE_ID )); f_recv_Ue_Context_Resume_Response(mw_UeContextResumeResponseIEs); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_09 /** * @desc Testcase function for TC_S1AP_mME_CMP_10 */ function f_TC_S1AP_mME_CMP_10() runs on S1APComponent { // Local variables var template(value) Cause v_cause; const E_RAB_ID c_E_RAB_ID_A := 0; // Preamble f_S1AP_mme_init(); f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_Ue_Context_Resume_Request( m_UeContextResumeRequestIEs_RABFailedToResumeItem( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABFailedToResumeItemResumeReq( c_E_RAB_ID_A, m_cause_ran(user_inactivity) ) } ) ); f_recv_Ue_Context_Resume_Failure(mw_UeContextResumeFailureIEs); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_10 /** * @desc Testcase function for TC_S1AP_mME_CMP_11 */ function f_TC_S1AP_mME_CMP_11() runs on S1APComponent { // Local variables var template(value) Cause v_cause; // Preamble f_S1AP_mme_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body action("trigger a Connection establishment indication"); f_recv_Connection_Establishment_Indication(mw_ConnectionEstablishmentIndicationIEs); // Postamble f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_CMP_11 } // End of group Context_management_group /** * @desc Handover signalling group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.4 Handover signalling group */ group Handover_signalling_group { /** * @desc Testcase function for TC_S1AP_MME_HAS_01 */ function f_TC_S1AP_MME_HAS_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged. //f_rABSetup...; f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // sends a HANDOVER_REQUIRED f_send_HandoverRequired( m_HandoverRequiredIEs( vc_MME_UE_ID, vc_eNB_UE_ID, intralte, m_cause_ran(unspecified), m_TargeteNB_ID(m_Global_ENB_ID(PX_PLMN_IDENTITY,//'000001'O, m_ENB_ID_macro), m_TAI(PX_PLMN_IDENTITY, PX_TAC)), PX_SOURCE_TO_TARGET_TANSPARENT_CONTAINER )); f_recv_HandoverCommand( mw_HandoverCommandIEs( vc_MME_UE_ID, vc_eNB_UE_ID, intralte,//handover_Type PX_TARGET_TO_SOURCE_TANSPARENT_CONTAINER//TargetToSourceTransparentContainer )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble //f_rABSetupRelease...; f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_HAS_01 /** * @desc Testcase function for TC_S1AP_MME_HAS_02 */ function f_TC_S1AP_MME_HAS_02() runs on S1APComponent { // Local variables const SourceRNC_ToTargetRNC_TransparentContainer c_sourceRNC_ToTargetRNC_TransparentContainer := '12121212'O; const TargetRNC_ToSourceRNC_TransparentContainer c_targetRNC_ToSourceRNC_TransparentContainer := '12121212'O; // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged. //f_rABSetup...; f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // sends a HANDOVER_REQUIRED f_send_HandoverRequired( m_HandoverRequiredIEs( vc_MME_UE_ID, vc_eNB_UE_ID, ltetoutran, m_cause_ran(unspecified), m_TargetRNC_ID(m_LAI('000001'O, //plmn id '0001'O), //lac m_rNC_Id), c_sourceRNC_ToTargetRNC_TransparentContainer )); f_recv_HandoverCommand( mw_HandoverCommandIEs_NASSecurity( vc_MME_UE_ID, vc_eNB_UE_ID, ltetoutran,//handover_Type c_targetRNC_ToSourceRNC_TransparentContainer,//TargetToSourceTransparentContainer - )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble //f_rABSetupRelease...; f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_HAS_02 /** * @desc Testcase function for TC_S1AP_MME_HAS_03 */ function f_TC_S1AP_MME_HAS_03() runs on S1APComponent { // Local variables const SourceBSS_ToTargetBSS_TransparentContainer c_sourceBSS_ToTargetBSS_TransparentContainer := '12121212'O; const TargetBSS_ToSourceBSS_TransparentContainer c_targetBSS_ToSourceBSS_TransparentContainer := '12121212'O; // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged. //f_rABSetup...; f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // sends a HANDOVER_REQUIRED f_send_HandoverRequired( m_HandoverRequiredIEs( vc_MME_UE_ID, vc_eNB_UE_ID, ltetogeran, m_cause_ran(unspecified), m_Target_CGI('000001'O, //plmn id '0001'O,//lac '0001'O //ci ), c_sourceBSS_ToTargetBSS_TransparentContainer )); f_recv_HandoverCommand( mw_HandoverCommandIEs_NASSecurity( vc_MME_UE_ID, vc_eNB_UE_ID, ltetogeran,//handover_Type c_targetBSS_ToSourceBSS_TransparentContainer,//TargetToSourceTransparentContainer - )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble //f_rABSetupRelease...; f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_HAS_03 /** * @desc Testcase function for TC_S1AP_MME_HAS_04_ENB1 */ function f_TC_S1AP_MME_HAS_04_ENB1() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged. //f_rABSetup...; f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // sends a HANDOVER_REQUIRED f_send_HandoverRequired( m_HandoverRequiredIEs_CSGID_CellAccessMode( vc_MME_UE_ID, vc_eNB_UE_ID, intralte, m_cause_ran(unspecified), m_TargeteNB_ID(m_Global_ENB_ID(PX_PLMN_IDENTITY,//'000001'O, m_ENB_ID_macro), m_TAI(PX_PLMN_IDENTITY, PX_TAC)), PX_SOURCE_TO_TARGET_TANSPARENT_CONTAINER, PX_CSG_ID, hybrid )); f_recv_HandoverCommand( mw_HandoverCommandIEs( vc_MME_UE_ID, vc_eNB_UE_ID, intralte,//handover_Type PX_TARGET_TO_SOURCE_TANSPARENT_CONTAINER//TargetToSourceTransparentContainer )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble //f_rABSetupRelease...; f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_HAS_04_ENB1 /** * @desc Testcase function for TC_S1AP_MME_HAS_04_ENB2 */ function f_TC_S1AP_MME_HAS_04_ENB2() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged. //f_rABSetup...; f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // sends a HANDOVER_REQUIRED f_recv_HandoverRequest( mw_HandoverRequestIEs_CSGID_CellAccessMode( -, -, -, -, {?},//E_RabsToBeSetupItem -, -, -, -, - )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //send HandoverRequestAck // Postamble //f_rABSetupRelease...; f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_HAS_04_ENB2 /** * @desc Testcase function for TC_S1AP_MME_HAS_05 */ function f_TC_S1AP_MME_HAS_05() runs on S1APComponent { // Local variables const SourceBSS_ToTargetBSS_TransparentContainer c_sourceBSS_ToTargetBSS_TransparentContainer := '12121212'O; const TargetBSS_ToSourceBSS_TransparentContainer c_targetBSS_ToSourceBSS_TransparentContainer := '12121212'O; // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged. //f_rABSetup...; f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // sends a HANDOVER_REQUIRED f_send_HandoverRequired( m_HandoverRequiredIEs_SRVCCHOIndication( vc_MME_UE_ID, vc_eNB_UE_ID, ltetogeran, m_cause_ran(unspecified), m_Target_CGI('000001'O, //plmn id '0001'O,//lac '0001'O //ci ), c_sourceBSS_ToTargetBSS_TransparentContainer, cSonly //SRVCCHOIndication )); f_recv_HandoverCommand( mw_HandoverCommandIEs_NASSecurity( vc_MME_UE_ID, vc_eNB_UE_ID, ltetogeran,//handover_Type c_targetBSS_ToSourceBSS_TransparentContainer,//TargetToSourceTransparentContainer - )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble //f_rABSetupRelease...; f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_HAS_05 /** * @desc Testcase function for TC_S1AP_MME_HAS_06 */ function f_TC_S1AP_MME_HAS_06() runs on S1APComponent { // Local variables const SourceRNC_ToTargetRNC_TransparentContainer c_sourceRNC_ToTargetRNC_TransparentContainer := '12121212'O; const TargetRNC_ToSourceRNC_TransparentContainer c_targetRNC_ToSourceRNC_TransparentContainer := '12121212'O; // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged. //f_rABSetup...; f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // sends a HANDOVER_REQUIRED f_send_HandoverRequired( m_HandoverRequiredIEs_SRVCCHOIndication( vc_MME_UE_ID, vc_eNB_UE_ID, ltetoutran, m_cause_ran(unspecified), m_TargetRNC_ID(m_LAI('000001'O, //plmn id '0001'O), //lac m_rNC_Id), c_sourceRNC_ToTargetRNC_TransparentContainer, cSonly //SRVCCHOIndication )); f_recv_HandoverCommand( mw_HandoverCommandIEs_NASSecurity( vc_MME_UE_ID, vc_eNB_UE_ID, ltetoutran,//handover_Type c_targetRNC_ToSourceRNC_TransparentContainer,//TargetToSourceTransparentContainer - )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble //f_rABSetupRelease...; f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_HAS_06 /** * @desc Testcase function for TC_S1AP_MME_HAS_07 */ function f_TC_S1AP_MME_HAS_07() runs on S1APComponent { // Local variables const SourceBSS_ToTargetBSS_TransparentContainer c_sourceBSS_ToTargetBSS_TransparentContainer := '12121212'O; const SourceBSS_ToTargetBSS_TransparentContainer c_sourceBSS_ToTargetBSS_TransparentContainer_2nd := '12121212'O; const TargetBSS_ToSourceBSS_TransparentContainer c_targetBSS_ToSourceBSS_TransparentContainer := '12121212'O; const TargetBSS_ToSourceBSS_TransparentContainer c_targetBSS_ToSourceBSS_TransparentContainer_2nd := '12121212'O; // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged. //f_rABSetup...; f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // sends a HANDOVER_REQUIRED f_send_HandoverRequired( m_HandoverRequiredIEs_SRVCCHOInd_S2TTransCont2nd_MSClassmark23( vc_MME_UE_ID, vc_eNB_UE_ID, ltetogeran, m_cause_ran(unspecified), m_Target_CGI('000001'O, //plmn id '0001'O,//lac '0001'O //ci ), c_sourceBSS_ToTargetBSS_TransparentContainer, c_sourceBSS_ToTargetBSS_TransparentContainer_2nd, pSandCS, //SRVCCHOIndication '0000'O, //MSclassmark2 need to be coded due to 9.2.1.64 and ts 48.008 '0000'O //MSclassmark3 need to be coded due to 9.2.1.65 and ts 48.008 )); f_recv_HandoverCommand( mw_HandoverCommandIEs_T2STransCont2nd_NASSecurity( vc_MME_UE_ID, vc_eNB_UE_ID, ltetogeran,//handover_Type c_targetBSS_ToSourceBSS_TransparentContainer,//TargetToSourceTransparentContainer c_targetBSS_ToSourceBSS_TransparentContainer_2nd,//TargetToSourceTransparentContainer - )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble //f_rABSetupRelease...; f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_HAS_07 /** * @desc Testcase function for TC_S1AP_MME_HAS_08 */ function f_TC_S1AP_MME_HAS_08() runs on S1APComponent { // Local variables const SourceRNC_ToTargetRNC_TransparentContainer c_sourceRNC_ToTargetRNC_TransparentContainer := '12121212'O; const TargetRNC_ToSourceRNC_TransparentContainer c_targetRNC_ToSourceRNC_TransparentContainer := '12121212'O; // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged. //f_rABSetup...; f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // sends a HANDOVER_REQUIRED f_send_HandoverRequired( m_HandoverRequiredIEs_SRVCCHOIndication( vc_MME_UE_ID, vc_eNB_UE_ID, ltetoutran, m_cause_ran(unspecified), m_TargetRNC_ID(m_LAI('000001'O, //plmn id '0001'O), //lac m_rNC_Id), c_sourceRNC_ToTargetRNC_TransparentContainer, pSandCS )); f_recv_HandoverCommand( mw_HandoverCommandIEs_NASSecurity( vc_MME_UE_ID, vc_eNB_UE_ID, ltetoutran,//handover_Type c_targetRNC_ToSourceRNC_TransparentContainer,//TargetToSourceTransparentContainer - )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble //f_rABSetupRelease...; f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_HAS_08 /** * @desc Testcase function for TC_S1AP_MME_HAS_09 */ function f_TC_S1AP_MME_HAS_09() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged. //f_rABSetup...; f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // sends a HANDOVER_REQUIRED f_send_HandoverRequired( m_HandoverRequiredIEs_CSGID( vc_MME_UE_ID, vc_eNB_UE_ID, intralte, m_cause_ran(unspecified), m_TargeteNB_ID(m_Global_ENB_ID(PX_PLMN_IDENTITY,//'000001'O, m_ENB_ID_macro), m_TAI(PX_PLMN_IDENTITY, PX_TAC)), PX_SOURCE_TO_TARGET_TANSPARENT_CONTAINER, PX_CSG_ID )); f_recv_HandoverPreparationFailure( mw_HandoverPreparationFailureIEs( vc_MME_UE_ID, vc_eNB_UE_ID, -//cause )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble //f_rABSetupRelease...; f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_HAS_09 /** * @desc Testcase function for TC_S1AP_MME_HAS_10 */ function f_TC_S1AP_MME_HAS_10() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body action("trigger an Handover request"); f_recv_HandoverRequest( mw_HandoverRequestIEs( -, -, -, -, {?},//E_RabsToBeSetupItem -, -, - )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //send HandoverRequestAck // Postamble //f_rABSetupRelease...; f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_HAS_10 /** * @desc Testcase function for TC_S1AP_MME_HAS_11 */ function f_TC_S1AP_MME_HAS_11() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged. //f_rABSetup...; f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // sends a HANDOVER_REQUIRED f_send_PathSwitchRequest( m_PathSwitchRequestIEs( vc_eNB_UE_ID, {m_E_RABToBeSwitchedDLItem(1,-,-,-)}, vc_MME_UE_ID, m_eUTRAN_CGI(PX_PLMN_IDENTITY,//plmn id PX_CELL_ID ),//cell id m_TAI(PX_PLMN_IDENTITY, PX_TAC), m_UESecurityCapabilities(PX_ENCRYPTION_ALGORITHM, PX_INTEGRITY_PROTECTION_ALGORITHM) )); f_recv_PathSwitchRequestAck( mw_PathSwitchRequestAckIEs( vc_MME_UE_ID, vc_eNB_UE_ID, -//security context )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble //f_rABSetupRelease...; f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_HAS_11 /** * @desc Testcase function for TC_S1AP_MME_HAS_12 */ function f_TC_S1AP_MME_HAS_12() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged. //f_rABSetup...; f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // sends a HANDOVER_REQUIRED f_send_PathSwitchRequest( m_PathSwitchRequestIEs( vc_eNB_UE_ID, {m_E_RABToBeSwitchedDLItem(1,-,-,-)}, vc_MME_UE_ID, m_eUTRAN_CGI(PX_PLMN_IDENTITY,//plmn id PX_CELL_ID ),//cell id m_TAI(PX_PLMN_IDENTITY, PX_TAC), m_UESecurityCapabilities(PX_ENCRYPTION_ALGORITHM, PX_INTEGRITY_PROTECTION_ALGORITHM) )); f_recv_PathSwitchRequestFailure( mw_PathSwitchRequestFailureIEs( vc_MME_UE_ID, vc_eNB_UE_ID, -//cause )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble //f_rABSetupRelease...; f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_HAS_12 /** * @desc Testcase function for TC_S1AP_MME_HAS_13 */ function f_TC_S1AP_MME_HAS_13() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged. //f_rABSetup...; f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // sends a HANDOVER_REQUIRED f_send_PathSwitchRequest( m_PathSwitchRequestIEs( vc_eNB_UE_ID, { m_E_RABToBeSwitchedDLItem(1,-,-,-), m_E_RABToBeSwitchedDLItem(1,-,-,-) }, vc_MME_UE_ID, m_eUTRAN_CGI(PX_PLMN_IDENTITY,//plmn id PX_CELL_ID ),//cell id m_TAI(PX_PLMN_IDENTITY, PX_TAC), m_UESecurityCapabilities(PX_ENCRYPTION_ALGORITHM, PX_INTEGRITY_PROTECTION_ALGORITHM) )); f_recv_PathSwitchRequestFailure( mw_PathSwitchRequestFailureIEs( vc_MME_UE_ID, vc_eNB_UE_ID, -//cause )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble //f_rABSetupRelease...; f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_HAS_13 /** * @desc Testcase function for TC_S1AP_MME_HAS_14 */ function f_TC_S1AP_MME_HAS_14() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged. //f_rABSetup...; f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // sends a HANDOVER_REQUIRED f_send_PathSwitchRequest( m_PathSwitchRequestIEs( vc_eNB_UE_ID, {m_E_RABToBeSwitchedDLItem(1,-,-,-)}, vc_MME_UE_ID, m_eUTRAN_CGI(PX_PLMN_IDENTITY,//plmn id PX_CELL_ID ),//cell id m_TAI(PX_PLMN_IDENTITY, PX_TAC), m_UESecurityCapabilities(PX_ENCRYPTION_ALGORITHM, PX_INTEGRITY_PROTECTION_ALGORITHM) )); f_recv_PathSwitchRequestFailure( mw_PathSwitchRequestFailureIEs( vc_MME_UE_ID, vc_eNB_UE_ID, -//cause )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble //f_rABSetupRelease...; f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_HAS_14 /** * @desc Testcase function for TC_S1AP_MME_HAS_15 */ function f_TC_S1AP_MME_HAS_15() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged. //f_rABSetup...; f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // sends a HANDOVER_REQUIRED f_send_HandoverRequired( m_HandoverRequiredIEs( vc_MME_UE_ID, vc_eNB_UE_ID, intralte, m_cause_ran(unspecified), m_TargeteNB_ID(m_Global_ENB_ID(PX_PLMN_IDENTITY,//'000001'O, m_ENB_ID_macro), m_TAI(PX_PLMN_IDENTITY, PX_TAC)), PX_SOURCE_TO_TARGET_TANSPARENT_CONTAINER )); f_recv_HandoverCommand( mw_HandoverCommandIEs( vc_MME_UE_ID, vc_eNB_UE_ID, intralte,//handover_Type PX_TARGET_TO_SOURCE_TANSPARENT_CONTAINER//TargetToSourceTransparentContainer )); f_send_HandoverCancel( m_HandoverCancelIEs( vc_MME_UE_ID, vc_eNB_UE_ID, m_cause_ran(unspecified) )); f_recv_HandoverCancelAck( mw_HandoverCancelAckIEs( vc_MME_UE_ID, vc_eNB_UE_ID )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble //f_rABSetupRelease...; f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_HAS_15 /** * @desc Testcase function for TC_S1AP_MME_HAS_16 */ function f_TC_S1AP_MME_HAS_16() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged. //f_rABSetup...; f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // sends a HANDOVER_REQUIRED f_send_HandoverRequired( m_HandoverRequiredIEs( vc_MME_UE_ID, vc_eNB_UE_ID, intralte, m_cause_ran(unspecified), m_TargeteNB_ID(m_Global_ENB_ID(PX_PLMN_IDENTITY,//'000001'O, m_ENB_ID_macro), m_TAI(PX_PLMN_IDENTITY, PX_TAC)), PX_SOURCE_TO_TARGET_TANSPARENT_CONTAINER )); f_recv_HandoverCommand( mw_HandoverCommandIEs( vc_MME_UE_ID, vc_eNB_UE_ID, intralte,//handover_Type PX_TARGET_TO_SOURCE_TANSPARENT_CONTAINER//TargetToSourceTransparentContainer )); f_send_eNB_Status_Transfer( m_eNB_Status_TransferIEs( vc_MME_UE_ID, vc_eNB_UE_ID, m_eNBStatusTransferTransparentContainer( {{id:=89,//S1AP_Constants.id_Bearers_SubjectToStatusTransfer_Item, criticality:=ignore, value_:= {Bearers_SubjectToStatusTransfer_Item := valueof( m_Bearers_SubjectToStatusTransfer_Item(1, m_COUNTvalue(0,0), m_COUNTvalue(0,0)))} } } ) )); f_recv_Mme_Status_Transfer( mw_Mme_Status_TransferIEs( vc_MME_UE_ID, vc_eNB_UE_ID, - )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble //f_rABSetupRelease...; f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_HAS_16 } // End of group Handover_signalling_group /** * @desc Paging group * @see ETSI TS 103 497-2 Clause 5.2.2.2.5 Paging group */ group Pagin_group { /** * @desc Testcase function for TC_S1AP_MME_PAG_01 */ function f_TC_S1AP_MME_PAG_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a Paging procedure if (fx_MME_Paging_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a PAGING f_recv_Paging( mw_pagingIEs( PX_UE_IDENTITY_INDEX_VALUE, mw_uEPagingID_iMSI( PX_IMSI ), PX_CNDOMAIN )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_PAG_01 } // End of group Pagin_group /** * @desc NAS transport group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.6 NAS transport group */ group NAS_transport_group { /** * @desc Testcase function for TC_S1AP_MME_NAS_01 */ function f_TC_S1AP_MME_NAS_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate an ongoing NAS Transport procedure if (fx_MME_Downlink_NAS_Transport_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a DOWNLINK_NAS_TRANSPORT f_recv_Downlink_NAS_Transport( mw_downlink_nAS_TransportIEs( vc_MME_UE_ID, vc_eNB_UE_ID, - )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_NAS_01 /** * @desc Testcase function for TC_S1AP_MME_NAS_02 */ function f_TC_S1AP_MME_NAS_02() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged, and a NAS procedure is initiated. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a Reroute NAS Request procedure if (fx_MME_Reroute_NAS_Request_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a REROUTE_NAS_REQUEST f_recv_Reroute_NAS_Request( mw_reroute_nAS_RequestIEs( vc_MME_UE_ID, -, PX_MME_GROUP_ID )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_NAS_02 } // End of group NAS_transport_group /** * @desc Management group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.7 Management group */ group Management_group { /** * @desc Testcase function for TC_S1AP_MME_MNP_01 */ function f_TC_S1AP_MME_MNP_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a Reset procedure initiated from the MME if (fx_MME_Reset_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a RESET f_recv_Reset( mw_resetIEs( mw_cause_nas( unspecified // Check the value to be used ), m_resetType_all )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_MNP_01 /** * @desc Testcase function for TC_S1AP_MME_MNP_02 */ function f_TC_S1AP_MME_MNP_02() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_Reset( m_resetIEs( m_cause_nas( unspecified // Check the value to be used ), m_resetType_all )); f_recv_Reset_Acknowledge( mw_reset_AcknowledgeIEs( { ?/*mw_uE_associatedLogicalS1_ConnectionItemResAck_IE( mw_uE_associatedLogicalS1_ConnectionItem( vc_MME_UE_ID, vc_eNB_UE_ID ))*/ } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_MNP_02 /** * @desc Testcase function for TC_S1AP_MME_MNP_03 */ function f_TC_S1AP_MME_MNP_03() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_Reset( m_resetIEs( m_cause_nas( unspecified // Check the value to be used ), m_resetType_all )); f_recv_Reset_Acknowledge( mw_reset_AcknowledgeIEs( { ?/*mw_uE_associatedLogicalS1_ConnectionItemResAck_IE( mw_uE_associatedLogicalS1_ConnectionItem( vc_MME_UE_ID, vc_eNB_UE_ID ))*/ } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_MNP_03 /** * @desc Testcase function for TC_S1AP_MME_MNP_04 */ function f_TC_S1AP_MME_MNP_04() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate an Error Indication procedure if (fx_MME_Error_Indication_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a ERROR INDICATION f_recv_Error_Indication( superset ( all from mw_error_IndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_cause_IE ), mw_error_IndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_criticalityDiagnostics_IE ) ) ); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_MNP_04 /** * @desc Testcase function for TC_S1AP_MME_MNP_05 */ function f_TC_S1AP_MME_MNP_05() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_S1_Setup_Request( m_s1_Setup_RequestIEs( m_Global_eNB_ID( PX_PLMN_IDENTITY, PX_eNB_ID ), { m_supportedTAs_Item( PX_TAC, { PX_PLMN_IDENTITY } ) }, PX_PAGING_DRX )); f_recv_S1_Setup_Response( mw_s1_Setup_ResponseIEs( { mw_servedGUMMEIsItem( { PX_PLMN_IDENTITY }, { PX_MME_GROUP_ID }, { PX_MME_CODE } ) }, PX_RELATIVE_MME_CAPACITY )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_MNP_05 /** * @desc Testcase function for TC_S1AP_MME_MNP_06 */ function f_TC_S1AP_MME_MNP_06() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_S1_Setup_Request( m_s1_Setup_RequestIEs( m_Global_eNB_ID( PX_PLMN_IDENTITY, PX_eNB_ID ), { m_supportedTAs_Item( PX_TAC, { PX_PLMN_IDENTITY, PX_PLMN_IDENTITY_UNKNOWN } ) }, PX_PAGING_DRX )); f_recv_S1_Setup_Failure( mw_s1_Setup_FailureIEs( mw_cause_misc( unknown_PLMN ))); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_MNP_06 /** * @desc Testcase function for TC_S1AP_MME_MNP_07 */ function f_TC_S1AP_MME_MNP_07() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_eNB_Configuration_Update( m_eNB_Configuration_UpdateIEs( m_Global_eNB_ID( PX_PLMN_IDENTITY, PX_eNB_ID ), { m_supportedTAs_Item( PX_TAC, { PX_PLMN_IDENTITY } ) } )); f_recv_eNB_Configuration_Update_Acknowledge( mw_eNB_Configuration_Update_AcknowledgeIEs ); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_MNP_07 /** * @desc Testcase function for TC_S1AP_MME_MNP_08 */ function f_TC_S1AP_MME_MNP_08() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body f_send_eNB_Configuration_Update( m_eNB_Configuration_UpdateIEs( m_Global_eNB_ID( PX_PLMN_IDENTITY_UNKNOWN, PX_eNB_ID_UNKNOWN ), { m_supportedTAs_Item( PX_TAC, { PX_PLMN_IDENTITY_UNKNOWN } ) } )); f_recv_eNB_Configuration_Update_Failure( mw_eNB_Configuration_Update_FailureIEs( mw_cause_misc( unknown_PLMN ))); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_postamble_S1AP_eNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_eNB_MNP_08 /** * @desc Testcase function for TC_S1AP_MME_MNP_09 */ function f_TC_S1AP_MME_MNP_09() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate an eNB Configuration Update procedure if (fx_eNB_Configuration_Update_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends an ENB Configuration Update f_recv_eNB_Configuration_Update( mw_eNB_Configuration_UpdateIEs( mw_Global_eNB_ID( PX_PLMN_IDENTITY, PX_eNB_ID ), { mw_supportedTAs_Item( PX_TAC, { PX_PLMN_IDENTITY } ) } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_MNP_09 /** * @desc Testcase function for TC_S1AP_MME_MNP_10 */ function f_TC_S1AP_MME_MNP_10() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate an Overload Start procedure if (fx_eNB_Overload_Start_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends an OVERLOAD_START f_recv_eNB_Overload_Start( mw_eNB_Overload_StartIEs( mw_OverloadResponse( reject_non_emergency_mo_dt ))); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_MNP_10 /** * @desc Testcase function for TC_S1AP_MME_MNP_11 */ function f_TC_S1AP_MME_MNP_11() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate an Overload Stop procedure if (fx_eNB_Overload_Stop_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends an OVERLOAD_STOP f_recv_eNB_Overload_Stop( mw_eNB_Overload_StopIEs( { mw_gUMMEI( -, -, - ) } )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_MNP_11 } // End of group Management_group /** * @desc S1 CDMA 2000 tunnelling group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.8 S1 CDMA 2000 tunnelling group */ group S1_CDMA_2000_tunnelling_group { /** * @desc Testcase function for TC_S1AP_MME_STP_01 */ function f_TC_S1AP_MME_STP_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a CDMA2000 signalling event if (fx_MME_Downlink_S1_CDMA2000_Tunnelling_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a DOWNLINK_S1_CDMA2000_TUNNELLING f_recv_Downlink_S1_CDMA2000_Tunnelling( mw_downlink_S1_CDMA2000_TunnellingIEs( vc_MME_UE_ID, vc_eNB_UE_ID, { mw_eRABDataForwardingItem }, PX_CDMA200_PDU, PX_CDMA200_RAT_TYPE )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_STP_01 } // End of group S1_CDMA_2000_tunnelling_group /** * @desc UE capability info indication group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.9 UE capability info indication group */ group UE_capability_info_indication_group { } // End of group UE_capability_info_indication_group /** * @desc Trace Procedures group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.10 Trace group */ group Trace_group { /** * @desc Testcase function for TC_S1AP_MME_TRP_01 */ function f_TC_S1AP_MME_TRP_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a Trace Start procedure if (fx_MME_Trace_Start_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a TRACE_START f_recv_Trace_Start( mw_trace_StartIEs( mw_traceActivation( PX_EUTRAN_TRACE_ID, PX_INTERFACES_TO_TRACE, PX_TRACE_DEPTH, PX_TRANSPORT_LAYER_ADDRESS ))); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_TRP_01 /** * @desc Testcase function for TC_S1AP_MME_TRP_02 */ function f_TC_S1AP_MME_TRP_02() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); fx_MME_Trace_Start_procedure(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a Deactivate Trace procedure if (fx_MME_Deactivate_Trace_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a DEACTIVATE_TRACE f_recv_Deactivate_Trace( mw_deactivate_TraceIEs( vc_MME_UE_ID, vc_eNB_UE_ID, PX_EUTRAN_TRACE_ID )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_TRP_02 } // End of group Trace_group /** * @desc Location Reporting Procedures group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.11 Location reporting group */ group Location_reporting_group { /** * @desc Testcase function for TC_S1AP_MME_LRP_01 */ function f_TC_S1AP_MME_LRP_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged. f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a Location Reporting Control procedure if (fx_MME_Location_Reporting_Control_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a LOCATION_REPORTING_CONTROL f_recv_Location_Reporting_Control( mw_location_Reporting_ControlIEs( vc_MME_UE_ID, vc_eNB_UE_ID, m_request_Type( PX_EVENT_TYPE, PX_REPORT_AREA ))); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_LRP_01 /** * @desc Testcase function for TC_S1AP_MME_LRP_02 */ function f_TC_S1AP_MME_LRP_02() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged, and a handover procedure is initiated. f_rABSetupRequest(); f_initiate_handover(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a Location Reporting Control procedure if (fx_MME_Location_Reporting_Control_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a LOCATION_REPORTING_CONTROL f_recv_Location_Reporting_Control( mw_location_Reporting_ControlIEs( vc_MME_UE_ID, vc_eNB_UE_ID, m_request_Type( direct, PX_REPORT_AREA ))); f_send_Location_Report_Failure_Indication( m_location_Report_Failure_IndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID, m_cause_nas( unspecified ))); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_LRP_02 } // End of group Location_reporting_group /** * @desc MME direct information transfer group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.12 Warning message transmission group */ group MME_Warning_message_transmission_group { /** * @desc Testcase function for TC_S1AP_MME_WTP_01 */ function f_TC_S1AP_MME_WTP_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a Warning Message Transmission procedure if (fx_MME_Write_Replace_Warning_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a WRITE-REPLACE_WARNING_REQUEST f_recv_Write_Replace_Warning_Request( mw_write_Replace_Warning_RequestIEs( PX_MESSAGE_IDENTIFIER, PX_SERIAL_NUMBER, PX_REPETITION_PERIOD, PX_NUMBER_OF_BROADCASTS_REQUESTED )); f_send_Write_Replace_Warning_Response( m_write_Replace_Warning_ResponseIEs( PX_MESSAGE_IDENTIFIER, PX_SERIAL_NUMBER )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_WTP_01 /** * @desc Testcase function for TC_S1AP_MME_WTP_02 */ function f_TC_S1AP_MME_WTP_02() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); // Preamble action: A warning message procedure is exchanged f_writeReplaceWarningExchanges(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a Warning Message Transmission procedure if (fx_MME_Kill_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a KILLG_REQUEST f_recv_Kill_Request( mw_kill_RequestIEs( PX_MESSAGE_IDENTIFIER, PX_SERIAL_NUMBER )); f_send_Kill_Response( m_kill_ResponseIEs( PX_MESSAGE_IDENTIFIER, PX_SERIAL_NUMBER )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_WTP_02 } // End of group MME_Warning_message_transmission_group /** * @desc eNB direct information transfer group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.13 eNB direct information transfer group */ group ENB_direct_information_transfer_group { } // End of group ENB_direct_information_transfer_group /** * @desc MME direct information transfer group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.14 MME direct information transfer group */ group MME_direct_information_transfer_group { /** * @desc Testcase function for TC_S1AP_MME_MIT_01 */ function f_TC_S1AP_MME_MIT_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate an MME Direct Information Transfer procedure if (fx_MME_Direct_Information_Transfer_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a MME_DIRECT_INFORMATION_TRANSFER f_recv_Mme_Direct_Information_Transfer( mw_mMEDirectInformationTransfer( mw_Inter_SystemInformationTransferType( mw_RIMTransfer( ? // FIXME To be refined )))); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_MIT_01 } // End of group MME_direct_information_transfer_group /** * @desc eNB configuration transfer group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.15 eNB configuration transfer group */ group ENB_configuration_transfer_group { } // End of group ENB_configuration_transfer_group /** * @desc MME configuration transfer group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.16 MME configuration transfer group */ group MME_configuration_transfer_group { /** * @desc Testcase function for TC_S1AP_MME_MCT_01 */ function f_TC_S1AP_MME_MCT_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate an MME Configuration Transfer procedure if (fx_MME_Configuration_Transfer_procedure() == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a MME_CONFIGURATION_TRANSFER f_recv_Mme_Configuration_Transfer( mw_sON_Configuration_Transfer_MCT( mw_sON_Configuration_Transfer( mw_TargeteNB_ID(mw_Global_eNB_ID, mw_TAI), mw_SourceeNB_ID(mw_Global_eNB_ID, mw_TAI), ? // FIXME To be refined ))); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_MCT_01 } // End of group MME_configuration_transfer_group /** * @desc LPPa transport group * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.17 LPPa transport group */ group LPPa_transport_group { /** * @desc Testcase function for TC_S1AP_MME_LPP_01 */ function f_TC_S1AP_MME_LPP_01() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a LPPa Transport procedure using a UE associated signalling if (fx_MME_LPPa_Transport_procedure_ind(true) == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a DOWNLINK_UE_ASSOCIATED_LPPA_TRANSPORT f_recv_Downlink_UE_Associated_Lppa_Transport( mw_DownlinkUEAssociatedLppaTransportIEs_LPPa_PDU( ? )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_LPP_01 /** * @desc Testcase function for TC_S1AP_MME_LPP_02 */ function f_TC_S1AP_MME_LPP_02() runs on S1APComponent { // Local variables // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. to indicate a LPPa Transport procedure using a UE associated signalling if (fx_MME_LPPa_Transport_procedure_ind(false) == false) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { // 2. sends a DOWNLINK_NONE_UE_ASSOCIATED_LPPA_TRANSPORT f_recv_Downlink_Non_UE_Associated_Lppa_Transport( mw_DownlinkNonUEAssociatedLppaTransportIEs_LPPa_PDU( ? )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); } // Postamble f_rABSetupRelease(); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_LPP_02 } // End of group LPPa_transport_group /** * @desc Unknown, Unforseen and Erroneous Protocol Data * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.18 Unknown, Unforseen and Erroneous Protocol Data */ group Unknown_unforseen_errorneous_group { /** * @desc Testcase function for TC_S1AP_MME_ERR_01 */ function f_TC_S1AP_MME_ERR_01() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. on receipt of a UE_CONTEXT_RESUME_REQUEST f_send_Ue_Context_Resume_Request( m_UeContextResumeRequestIEs_RABFailedToResumeItem( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABFailedToResumeItemResumeReq( c_E_RAB_ID_A, m_cause_ran(user_inactivity) ) } ), PX_VA_CRITICALITY ); // 2. sends an ERROR_INDICATION f_recv_Error_Indication( mw_error_IndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_criticalityDiagnostics_IE( mw_criticalityDiagnostics( PX_PROCEURE_CODE, PX_TRIGGERING_CODE, PX_CRITICALITY ) ) )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_rABSetupRelease(); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_ERR_01 /** * @desc Testcase function for TC_S1AP_MME_ERR_02 */ function f_TC_S1AP_MME_ERR_02() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. on receipt of a UE_CONTEXT_RESUME_REQUEST f_send_Ue_Context_Resume_Request( m_UeContextResumeRequestIEs_Unknown_ID( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABFailedToResumeItemResumeReq( c_E_RAB_ID_A, m_cause_ran(user_inactivity) ) } )); // 2. sends an UE_CONTEXT_RESUME_FAILURE f_recv_Ue_Context_Resume_Failure( mw_UeContextResumeFailureIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_cause_protocol(unspecified), mw_criticalityDiagnostics( ?, ?, ?, { mw_criticalityDiagnostics_IE_Item( reject, -, missing ) } ) )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_rABSetupRelease(); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_ERR_02 /** * @desc Testcase function for TC_S1AP_MME_ERR_03 */ function f_TC_S1AP_MME_ERR_03() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. on receipt of a E-RAB_MODIFICATION_INDICATION f_send_E_RABModifiedInd( m_E_RABModifiedIndIEs_Unknown_ID( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABToBeModifiedItemBearerModInd( c_E_RAB_ID_A, -, - ) } )); // 2. sends an ERROR_INDICATION f_recv_Error_Indication( mw_error_IndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_criticalityDiagnostics_IE( mw_criticalityDiagnostics( PX_PROCEURE_CODE, PX_TRIGGERING_CODE, PX_CRITICALITY, { mw_criticalityDiagnostics_IE_Item( reject, -, missing ) } ) ) )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_rABSetupRelease(); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_ERR_03 /** * @desc Testcase function for TC_S1AP_MME_ERR_04 */ function f_TC_S1AP_MME_ERR_04() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. on receipt of a UE_CONTEXT_RESUME_REQUEST f_send_Ue_Context_Resume_Request( m_UeContextResumeRequestIEs_no_eNB( vc_MME_UE_ID, { m_E_RABFailedToResumeItemResumeReq( c_E_RAB_ID_A, m_cause_ran(user_inactivity) ) } )); // 2. sends an UE_CONTEXT_RESUME_FAILURE f_recv_Ue_Context_Resume_Failure( mw_UeContextResumeFailureIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_cause_protocol(unspecified), mw_criticalityDiagnostics( ?, ?, ?, { mw_criticalityDiagnostics_IE_Item( reject, -, missing ) } ) )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_rABSetupRelease(); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_ERR_04 /** * @desc Testcase function for TC_S1AP_MME_ERR_05 */ function f_TC_S1AP_MME_ERR_05() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. on receipt of a E-RAB_MODIFICATION_INDICATION f_send_E_RABModifiedInd( m_E_RABModifiedIndIEs_no_eNB( vc_MME_UE_ID, { m_E_RABToBeModifiedItemBearerModInd( c_E_RAB_ID_A, -, - ) } )); // 2. sends an ERROR_INDICATION f_recv_Error_Indication( mw_error_IndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_criticalityDiagnostics_IE( mw_criticalityDiagnostics( PX_PROCEURE_CODE, PX_TRIGGERING_CODE, PX_CRITICALITY, { mw_criticalityDiagnostics_IE_Item( reject, -, missing ) } ) ) )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_rABSetupRelease(); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_ERR_05 /** * @desc Testcase function for TC_S1AP_MME_ERR_06 */ function f_TC_S1AP_MME_ERR_06() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. on receipt of a UE_CONTEXT_RESUME_REQUEST f_send_Ue_Context_Resume_Request( m_UeContextResumeRequestIEs_duplicate_ENB( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABFailedToResumeItemResumeReq( c_E_RAB_ID_A, m_cause_ran(user_inactivity) ) } )); // 2. sends an UE_CONTEXT_RESUME_FAILURE f_recv_Ue_Context_Resume_Failure( mw_UeContextResumeFailureIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_cause_protocol(abstract_syntax_error_falsely_constructed_message), mw_criticalityDiagnostics( ?, ?, ? ) )); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_rABSetupRelease(); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_ERR_06 /** * @desc Testcase function for TC_S1AP_MME_ERR_07 */ function f_TC_S1AP_MME_ERR_07() runs on S1APComponent { // Local variables const E_RAB_ID c_E_RAB_ID_A := 0; // Preamble f_S1AP_mme_init(); // Preamble action: E-RAB Setup is exchanged f_rABSetupRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Test body // 1. on receipt of a E-RAB_MODIFICATION_INDICATION f_send_E_RABModifiedInd( m_E_RABModifiedIndIEs_duplicate_eNB( vc_MME_UE_ID, vc_eNB_UE_ID, { m_E_RABToBeModifiedItemBearerModInd( c_E_RAB_ID_A, -, - ) } )); // 2. sends an ERROR_INDICATION f_recv_Error_Indication( mw_error_IndicationIEs( vc_MME_UE_ID, vc_eNB_UE_ID, mw_cause_IE( mw_cause_protocol( abstract_syntax_error_falsely_constructed_message )))); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // Postamble f_rABSetupRelease(); f_postamble_S1AP_MME(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of function f_TC_S1AP_MME_ERR_07 } // End of group Unknown_unforseen_errorneous_group } // End of group MME_Role } // End of module S1AP_TCFunctions