Commit ab2d6274 authored by Yann Garcia's avatar Yann Garcia
Browse files

Implement TPs TC_5GNAS_AMF_AUT_REQ_01..05

parent b4856fe2
Loading
Loading
Loading
Loading
+172 −84
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ module NG_NAS_TCFunctions {
    // NG_NAS
    import from NG_NAS_TypeDefs all;
    import from NG_NAS_TestSystem all;
    import from NAS_CommonTypeDefs all;

    // Lib3GPP
    import from NG_NAS_MsgContainers  all;
@@ -38,10 +39,12 @@ module NG_NAS_TCFunctions {
    import from LibNGAP_Interface all;
    import from LibNGAP_Steps all;

    // LibFramwork
    import from LibHelpers_Functions all;

    // NGAP_Ats
    //import from NGAP_TestSystem all;
    import from NGAP_Steps all;
    //import from NGAP_Pixits all;

    // interface at AMF
    group TP_AMF_NGAP {
@@ -58,16 +61,37 @@ module NG_NAS_TCFunctions {

                    // Preamble
                    f_NGAP_gnb_init();
                    f_send_NGSetupRequest_await_NGSetupRespone();
                    f_send_NasRegistrationRequest();
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    // Body
                    // TODO

                    f_recv_NGAP_PDU(
                                    mw_ngap_initMsg(
                                                    mw_n2_DownlinkNASTransport(
                                                                               PX_AMF_UE_NGAP_ID,
                                                                               PX_RAN_UE_NGAP_ID,
                                                                               ? // AuthorizationRequest
                    )));
                    f_NASPDU_Get(vc_recvNGAP_PDU);
                    if (f_Check_5GAKA_NAS_DL_Message(
                                                     vc_recvNAS_PDU, 
                                                     mw_NG_AUTHENTICATION_REQUEST(
                                                                                  '111'B,
                                                                                  -,
                                                                                  ?, // Authentication_parameter_RAND
                                                                                  ?  // Authentication_parameter_AUTN
                                                     )) == false) {
                        setverdict(fail);
                        log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_AUTHENTICATION_REQUEST ***");
                    }
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                    // Postamble
                    // Terminate call with rejection
                    f_terminate_NasRegistrationRequest_with_reject();
                    //TODO: f_postamble_NGAP_gNB();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
@@ -81,16 +105,31 @@ module NG_NAS_TCFunctions {

                    // Preamble
                    f_NGAP_gnb_init();
                    f_send_NGSetupRequest_await_NGSetupRespone();
                    f_send_NasRegistrationRequest();
                    f_await_NasAuthorizationRequest_send_NasAuthorizationResponse();
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    // Body
                    // TODO

                    f_recv_NGAP_PDU(
                                    mw_ngap_initMsg(
                                                    mw_n2_DownlinkNASTransport(
                                                                               PX_AMF_UE_NGAP_ID,
                                                                               PX_RAN_UE_NGAP_ID,
                                                                               ? // SecurityModeCommand
                    )));
                    f_NASPDU_Get(vc_recvNGAP_PDU);
                    if (f_Check_5GAKA_NAS_DL_Message(vc_recvNAS_PDU, mw_NG_SECURITY_MODE_COMMAND) == false) {
                        setverdict(fail);
                        log("*** " & __SCOPE__ & ": FAIL: NG_SECURITY_MODE_COMMAND mismatch. ***");
                    }
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                    // Postamble
                    // Terminate call with rejection
                    f_terminate_NasRegistrationRequest_with_reject();
                    //TODO: f_postamble_NGAP_gNB();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
@@ -101,17 +140,57 @@ module NG_NAS_TCFunctions {
                 */
                function f_TC_5GNAS_AMF_AUT_REQ_03() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ {
                    // Local variables
                    var NGAP_PDU v_PDU;
                    var integer v_start_time_ms;

                    // Preamble
                    f_NGAP_gnb_init();
                    f_send_NGSetupRequest_await_NGSetupRespone();
                    f_send_NasRegistrationRequest();
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    // Body
                    // TODO
                    tc_noac.start;
                    v_start_time_ms := f_getCurrentTimeUtc(); // FSCOM: TTCN-3 timer are in seconds (ETSI ES 201 873-1 V4.16.1 (2024-10) Clause 12 Declaring timers)
                    alt {
                        [] N2_gNBaMF_P.receive {
                            // Skip message and check that timer T3560 has not expired (in milliseconds)
                            if ((f_getCurrentTimeUtc() - v_start_time_ms) < PX_TIMER_T3560) {
                                repeat;
                            } else {
                                tc_noac.stop;
                            }
                        }
                        [] tc_noac.timeout {
                            setverdict(fail);
                            log("*** " & __SCOPE__ & ": FAIL: T3560 shall be expired. ***");
                        }
                    } // End of 'alt'statement
                    N2_gNBaMF_P.clear; // Remove enqueued messages
                    tc_noac.start;
                    alt {
                        [] N2_gNBaMF_P.receive(
                                               mw_ngap_initMsg(
                                                               mw_n2_DownlinkNASTransport(
                                                                                          PX_AMF_UE_NGAP_ID,
                                                                                          PX_RAN_UE_NGAP_ID,
                                                                                          ? // AuthorizationRequest
                                                ))) -> value v_PDU {
                            tc_noac.stop;

                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                            f_NGAPPDU_Get(v_PDU)
                            f_NASPDU_Get(vc_recvNGAP_PDU);
                            if (f_Check_5GAKA_NAS_DL_Message(vc_recvNAS_PDU, mw_NG_AUTHENTICATION_REQUEST) == true) {
                            f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                                log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_AUTHENTICATION_REQUEST after T3560 timer expiry ***");
                            }
                        }
                        [] tc_noac.timeout {
                            f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                            log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");
                        }
                    } // End of 'alt'statement

                    // Postamble
                    //TODO: f_postamble_NGAP_gNB();
@@ -124,19 +203,60 @@ module NG_NAS_TCFunctions {
                 */
                function f_TC_5GNAS_AMF_AUT_REQ_04() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ {
                    // Local variables
                    var NG_NAS_DL_Message_Type v_NG_NAS_DL_Message_Type;
                    var NAS_KsiValue ngKSI;

                    // Preamble
                    f_NGAP_gnb_init();
                    f_send_NGSetupRequest_await_NGSetupRespone();
                    f_send_NasRegistrationRequest();
                    f_decode_5G_NAS_DL_Message(vc_recvNAS_PDU, v_NG_NAS_DL_Message_Type);
                    ngKSI := v_NG_NAS_DL_Message_Type.authentication_Request.ngNasKeySetId.nasKeySetId;
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    // Body
                    // TODO

                    // Send error message
                    vt_NgNasUl_Msg := m_NG_AUTHENTICATION_FAILURE(
                                                                  m_GMM_GSM_Cause(
                                                                                  -,
                                                                                  int2bit(20, 8) // MAC failure
                                                                  ));
                    vc_sendNAS_PDU := bit2oct(encvalue(valueof(vt_NgNasUl_Msg)));
                    f_send_NGAP_PDU(
                                    m_ngap_initMsg(
                                                    m_n2_UplinkNASTransport(
                                                                            PX_AMF_UE_NGAP_ID,
                                                                            PX_RAN_UE_NGAP_ID,
                                                                            vc_sendNAS_PDU,
                                                                            m_uPTransportLayerInformation_userLocationInformationNR(
                                                                                                                                    m_userLocationInformationNR(
                                                                                                                                                                m_nR_CGI,
                                                                                                                                                                m_tAI
                                    )))));
                    // Get response
                    f_recv_NGAP_PDU(
                                    mw_ngap_initMsg(
                                                    mw_n2_DownlinkNASTransport(
                                                                               PX_AMF_UE_NGAP_ID,
                                                                               PX_RAN_UE_NGAP_ID,
                                                                               ? // IdentityRequest
                    )));
                    f_NASPDU_Get(vc_recvNGAP_PDU);
                    if (f_Check_5GAKA_NAS_DL_Message(
                                                     vc_recvNAS_PDU, 
                                                     mw_NG_AUTHENTICATION_REQUEST(
                                                                                  complement(ngKSI)
                                                     )) == false) {
                        setverdict(fail);
                        log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_IDENTITY_REQUEST ***");
                    }
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                    // Postamble
                    // Terminate call with rejection
                    f_terminate_NasRegistrationRequest_with_reject();
                    //TODO: f_postamble_NGAP_gNB();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
@@ -150,16 +270,53 @@ module NG_NAS_TCFunctions {

                    // Preamble
                    f_NGAP_gnb_init();
                    f_send_NGSetupRequest_await_NGSetupRespone();
                    f_send_NasRegistrationRequest();
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    // Body
                    // TODO

                    // Send error message
                    vt_NgNasUl_Msg := m_NG_AUTHENTICATION_FAILURE(
                                                                  m_GMM_GSM_Cause(
                                                                                  -,
                                                                                  int2bit(71, 8) // ngKSI already in use
                                                                  ));
                    vc_sendNAS_PDU := bit2oct(encvalue(valueof(vt_NgNasUl_Msg)));
                    f_send_NGAP_PDU(
                                    m_ngap_initMsg(
                                                    m_n2_UplinkNASTransport(
                                                                            PX_AMF_UE_NGAP_ID,
                                                                            PX_RAN_UE_NGAP_ID,
                                                                            vc_sendNAS_PDU,
                                                                            m_uPTransportLayerInformation_userLocationInformationNR(
                                                                                                                                    m_userLocationInformationNR(
                                                                                                                                                                m_nR_CGI,
                                                                                                                                                                m_tAI
                                    )))));
                    // Get response
                    f_recv_NGAP_PDU(
                                    mw_ngap_initMsg(
                                                    mw_n2_DownlinkNASTransport(
                                                                               PX_AMF_UE_NGAP_ID,
                                                                               PX_RAN_UE_NGAP_ID,
                                                                               ? // IdentityRequest
                    )));
                    f_NASPDU_Get(vc_recvNGAP_PDU);
                    if (f_Check_5GAKA_NAS_DL_Message(
                                                     vc_recvNAS_PDU, 
                                                     mw_NG_IDENTITY_REQUEST(
                                                                            '111'B // Identity type
                                                     )) == false) {
                        setverdict(fail);
                        log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_IDENTITY_REQUEST ***");
                    }
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

                    // Postamble
                    // Terminate call with rejection
                    f_terminate_NasRegistrationRequest_with_reject();
                    //TODO: f_postamble_NGAP_gNB();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
@@ -200,77 +357,8 @@ module NG_NAS_TCFunctions {

                    // Preamble
                    f_NGAP_gnb_init();
                    f_send_NGAP_PDU(
                                    m_ngap_initMsg(
                                                   m_n2_NGSetupRequest(
                                                                       m_globalRANNodeID_globalGNB_ID(
                                                                                                      m_ie_globalGnbId(
                                                                                                      PX_PLMN_IDENTITY,
                                                                                                      PX_GNB_ID,//'0000000000000000000000'B,//in template (value) bitstring p_gnbId,
                                                                                                      -//in template (omit) GlobalGNB_ID.iE_Extensions p_iE_Extensions := omit
                                                                       )),
                                                                       {
                                                                         m_supportedTAItem(
                                                                             PX_TACode,
                                                                             {
                                                                                 m_ie_broadcastPLMNItem(
                                                                                     PX_PLMN_IDENTITY,//m_ie_pLMNIdentity('00f110'O),
                                                                                     {
                                                                                         m_sliceSupportItem(
                                                                                                 m_s_NSSAI(
                                                                                                     PX_SST,
                                                                                                     -,//      in template (omit) SD p_sD := omit,
                                                                                                     -//      in template (omit) S_NSSAI.iE_Extensions p_iE_Extensions := omit
                                                                                                 ),
                                                                                                 -//in template (omit) SliceSupportItem.iE_Extensions p_iE_Extensions := omit
                                                                                             )
                                                                                     }
                                                                                 )
                                                                             },//in template (value) BroadcastPLMNList p_broadcastPLMNList,
                                                                             -//in template (omit) SupportedTAItem.iE_Extensions p_iE_Extensions := omit
                                                                         )
                                                                     },
                                                                     PX_PAGING_DRX
                    )));                    
                    f_recv_NGAP_PDU(
                                    mw_ngap_succMsg(
                                                    mw_n2_NGSetupResponse(
                                                                          mw_aMFName(PX_AMF_NAME),
                                                                          {
                                                                            *,
                                                                            mw_servedGUAMIItem(
                                                                                               mw_gUAMI(
                                                                                                        PX_PLMN_IDENTITY
                                                                                               )),
                                                                            *
                                                                          }
                                    )));
                    vt_NgNasUl_Msg := m_NG_REGISTRATION_REQUEST(
                                                                {'1'B,'001'B},//in template (value) RegistrationType p_RegistrationType,
                                                                '000'B,//in template (value) NAS_KsiValue p_KeySetId,
                                                                '0'B,//in template (value) B1_Type p_Tsc,
                                                                {                              // 24.501 cl. 9.11.3.4
                                                                    iei:=omit,
                                                                    iel:='0002'O,
                                                                    idDigit1:='0000'B,                // 1st identitity digit
                                                                    oddEvenInd:='0'B,              // Odd/even indicator or Spare
                                                                    typeOfId:='000'B,                // Type of identity
                                                                    otherDigits:='00'O// length (1..infinity) optional  // Other identity digits, could be any length @sic R5-192389, @sic R5w190307 sic@ sic@
                                                                }//in template (value) NG_MobileIdentity p_MobileId,
                                                                );
                    vc_sendNAS_PDU := bit2oct(encvalue(valueof(vt_NgNasUl_Msg)));
                    log("===> vc_sendNAS_PDU (1): ", vc_sendNAS_PDU);
                    f_send_NGAP_PDU(
                                    m_ngap_initMsg(
                                                   m_n2_UplinkNASTransport(
                                                                           PX_AMF_UE_NGAP_ID,
                                                                           PX_RAN_UE_NGAP_ID, 
                                                                           vc_sendNAS_PDU,
                                                                           m_uPTransportLayerInformation_userLocationInformationNR(
                                                                                                                                   m_userLocationInformationNR(
                                                                                                                                                               m_nR_CGI,
                                                                                                                                                               m_tAI
                                    )))));
                    f_send_NGSetupRequest_await_NGSetupRespone();
                    f_send_NasRegistrationRequest();
                    f_recv_NGAP_PDU(
                                    mw_ngap_initMsg(
                                                    mw_n2_DownlinkNASTransport(
+2 −0
Original line number Diff line number Diff line
@@ -20,12 +20,14 @@ modules := \
  ../Lib_NG_NAS                                          \
  ../LibCommon                                           \
  ../Lib3GPP                                             \
  ../../titan-test-system-framework/ttcn/LibHelpers      \
  ../../titan-test-system-framework/ccsrc/Protocols/Pcap \
  ../../titan-test-system-framework/ccsrc/Protocols/ETH  \
  ../../titan-test-system-framework/ccsrc/Protocols/IP   \
  ../../titan-test-system-framework/ccsrc/Protocols/Sctp \
  ../../ccsrc/EncDec                                     \
  ../../titan-test-system-framework/ccsrc/Framework      \
  ../../titan-test-system-framework/ccsrc/Helpers        \
  ../../titan-test-system-framework/ccsrc/loggers        \
  ../../ccsrc/Externals                                  \
  ../../ccsrc/Ports/LibNAS                               \
+108 −4

File changed.

Preview size limit exceeded, changes collapsed.

+3 −0
Original line number Diff line number Diff line
@@ -54,6 +54,9 @@ module LibNGAP_Pixits {
         */
        modulepar float    PX_NGAP_TWAIT:= 30.0;

        modulepar integer PX_TIMER_T3560 := 500; // Default value is 500ms
                                                 // FSCOM: TTCN-3 timer are in seconds (ETSI ES 201 873-1 V4.16.1 (2024-10) Clause 12 Declaring timers)

    }  // End of group NGAP_Timers

    /** 
+3 −0
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@ module LibNGAP_Interface {

    // LibCommon
    import from LibCommon_Sync all;
    import from LibCommon_Time all;

    // LibNGAP
    import from NGAP_IEs language "ASN.1:1997" all;
@@ -59,7 +60,9 @@ module LibNGAP_Interface {

            // General timers
            timer tc_wait  := PX_NGAP_TWAIT;
            timer tc_noac  := PX_TNOAC;
            timer tc_delay := 0.3;  // delay next Request
                                    // FSCOM: TTCN-3 timer are in seconds (ETSI ES 201 873-1 V4.16.1 (2024-10) Clause 12 Declaring timers)

            // Variables for storing default references
            var default     vc_default_ngap;
Loading