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

Add TC_5GNAS_AMF_DLN_ACC_01

parent 1a80722d
Loading
Loading
Loading
Loading
+75 −6
Original line number Diff line number Diff line
@@ -21,11 +21,13 @@ module NG_NAS_TCFunctions {
    import from Lib_NG_NAS_Interface all;
    import from Lib_NG_NAS_Templates all;
    import from LIB_NG_NAS_Functions all;
    import from NAS_CommonTemplates all;

    // NG_NAS
    import from NG_NAS_TypeDefs all;
    import from NG_NAS_TestSystem all;
    import from NAS_CommonTypeDefs all;
    import from NG_NAS_Templates all;

    // Lib3GPP
    import from NG_NAS_MsgContainers  all;
@@ -43,8 +45,9 @@ module NG_NAS_TCFunctions {
    import from LibHelpers_Functions all;

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

    // interface at AMF
    group TP_AMF_NGAP {
@@ -438,12 +441,12 @@ module NG_NAS_TCFunctions {
                    f_NGAP_gnb_init();
                    f_send_NGSetupRequest_await_NGSetupRespone();
                    f_await_NasAuthorizationRequest_send_NasAuthorizationResponse();
                    f_await_NasSecurityModeCommand_send_SecurityModeComplete();
                    f_await_NasSecurityModeCommand_send_NasSecurityModeComplete();
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    // Body
                    // Await next next command (InitialContextSetupRequest) with NAS encrypted payload
                    // Await next command (InitialContextSetupRequest) with NAS encrypted payload
                    f_recv_NGAP_PDU(
                                    mw_ngap_initMsg(
                                                    mw_n2_InitialContextSetupRequest_withPDUSessionList(
@@ -525,11 +528,48 @@ module NG_NAS_TCFunctions {

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

                // Body
                // TODO
                vt_NgNasUl_Msg := m_NG_PDU_SESSION_ESTABLISHMENT_REQUEST(
                                                                         cs_NG_PDU_SessionId,
                                                                         tsc_PTI_1
                                                                         );
                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
                                )))));
                // Await PDU SESSION ESTABLISHMENT ACCEPT with NAS encrypted payload
                f_recv_NGAP_PDU(
                                    mw_ngap_initMsg(
                                                    mw_n2_DownlinkNASTransport(
                                                                            PX_AMF_UE_NGAP_ID,
                                                                            PX_RAN_UE_NGAP_ID,
                                                                            ? // PDU SESSION ESTABLISHMENT ACCEPT
                    )));
                    f_NASPDU_Get(vc_recvNGAP_PDU);
                    if (f_Check_5GAKA_NAS_DL_Message(
                                                    vc_recvNAS_PDU, 
                                                    mw_NG_PDU_SESSION_ESTABLISHMENT_ACCEPT
                                                    ) == false) {
                        setverdict(fail);
                        return;
                    }

                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");
@@ -554,12 +594,41 @@ module NG_NAS_TCFunctions {

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

                // Body
                // TODO

                // Await request for REGISTRATION_ACCEPT
                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_REGISTRATION_ACCEPT(
                                                                          -,
                                                                          ?,
                                                                          mw_PLMN_List(
                                                                                       -, -, 
                                                                                       {
                                                                                        *,
                                                                                        PX_PLMN,
                                                                                        *
                                                                                       }
                                                                          ),
                                                                          -,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,
                                                                          ?
                                                )) == false) {
                    setverdict(fail);
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

+37 −0
Original line number Diff line number Diff line
@@ -15,6 +15,9 @@ module LibNGAP_Templates {
    import from LibCommon_BasicTypesAndValues all;
    import from LibCommon_DataStrings all;
    // Lib3GPP/NAS
    import from NAS_CommonTypeDefs all;
    //  LibNGAP
    import from NGAP_Constants language "ASN.1:2002" all;
    import from NGAP_CommonDataTypes language "ASN.1:2002" all;
@@ -1486,6 +1489,30 @@ module LibNGAP_Templates {
                                             }
                         } // End of template m_n2_InitialContextSetupResponse
                        template (value) SuccessfulOutcome m_n2_InitialContextSetupResponse_noPDUSessionResourceSetupListSURes(
                                                                                                                               in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID,
                                                                                                                               in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID
                                                                                                                               ) := {
                            procedureCode := id_InitialContextSetup,
                            criticality   := reject,
                            value_        := {
                                              PDUSessionResourceSetupResponse := {
                                                                                  protocolIEs := {
                                                                                                  {
                                                                                                      id := id_AMF_UE_NGAP_ID,
                                                                                                      criticality := ignore,
                                                                                                      value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID }
                                                                                                  },
                                                                                                  {
                                                                                                      id := id_RAN_UE_NGAP_ID,
                                                                                                      criticality := ignore,
                                                                                                      value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID }
                                                                                                  }
                                                                                                 }
                                                                                 }
                                             }
                         } // End of template m_n2_InitialContextSetupResponse_noPDUSessionResourceSetupListSURes
                    } // End of group Send
                    group Receive {
@@ -24400,6 +24427,16 @@ module LibNGAP_Templates {
                    iE_Extensions                     := p_iE_Extensions
                } // End of template mw_xnTNLConfigurationInfo
                template (present) PLMN_List mw_PLMN_List(
                                                          template (present) IEI8_Type p_iei := '4A'O,
                                                          template (present) Type4Length_Type p_iel := ?,
                                                          template (present) NAS_PlmnIdList_Type p_plmnList
                                                          ) := {
                    iei      := p_iei,
                    iel      := p_iel,
                    plmnList := p_plmnList
                } // End of template mw_PLMN_List
            } // End of group receive
        } // End of group Information_elements
+56 −1
Original line number Diff line number Diff line
@@ -22,6 +22,9 @@ module LIB_NG_NAS_Functions {
    import from LibNGAP_Interface all;
    import from LibNGAP_Steps all;


    import from Lib_NG_NAS_Pixits all;

    /********************************************************************************
     *
     *  FIXME Use or enhance check functions from 3GPP library such as NG_NASTemplateFunctions.f_Check_NG_SecurityModeCompleteMsg
@@ -76,6 +79,27 @@ module LIB_NG_NAS_Functions {
                        )));
    }

    function f_await_NGInitialContextSetupRequest_send_NGInitialContextSetupRespone() runs on NGNASComponent {
        f_recv_NGAP_PDU(
                        mw_ngap_initMsg(
                                        mw_n2_InitialContextSetupRequest_withPDUSessionList( // FIXME FSCOM How to deal with it?

                        )));
        f_send_NGAP_PDU(
                        m_ngap_succMsg(
                                       m_n2_InitialContextSetupResponse_noPDUSessionResourceSetupListSURes
                        ));
    }

    function f_send_NGUERadioCApabilityInfoIndication() runs on NGNASComponent {
        f_send_NGAP_PDU(
                        m_ngap_initMsg(
                                       m_n2_UERadioCapabilityInfoIndication(
                                                                            -, -,
                                                                            ''O // FIXME FSCOM How to deal with UERadioCapability
                        )));
    }

    function f_send_NasRegistrationRequest() runs on NGNASComponent {
        vt_NgNasUl_Msg := m_NG_REGISTRATION_REQUEST(
                                                    {'1'B,'001'B},//in template (value) RegistrationType p_RegistrationType,
@@ -104,6 +128,37 @@ module LIB_NG_NAS_Functions {
                        )))));
    }

    function f_await_registration_accept() runs on NGNASComponent {
        // Await request for REGISTRATION_ACCEPT
        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_REGISTRATION_ACCEPT(
                                                                   -,
                                                                   ?,
                                                                   mw_PLMN_List(
                                                                                -, -, 
                                                                                {
                                                                                 *,
                                                                                 PX_PLMN,
                                                                                 *
                                                                                }
                                                                   ),
                                                                   -,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,
                                                                   ?
                                         )) == false) {
            setverdict(fail);
            return;
        }
    }

    function f_await_NasAuthorizationRequest_send_NasAuthorizationResponse() runs on NGNASComponent {
        // Await request for authorization
        f_recv_NGAP_PDU(
@@ -163,7 +218,7 @@ module LIB_NG_NAS_Functions {
        }
    }

    function f_await_NasSecurityModeCommand_send_SecurityModeComplete() runs on NGNASComponent {
    function f_await_NasSecurityModeCommand_send_NasSecurityModeComplete() runs on NGNASComponent {
        // Await SecurityModeCommand
        f_recv_NGAP_PDU(
                        mw_ngap_initMsg(
+3 −1
Original line number Diff line number Diff line
sources := \
  Lib_NG_NAS_Interface.ttcn \
  Lib_NG_NAS_Templates.ttcn \
  LIB_NG_NAS_Functions.ttcn
  LIB_NG_NAS_Functions.ttcn \
  Lib_NG_NAS_Pixits.ttcn                       \

  #../Lib3GPP/NG_NAS_EncdecDeclarations.ttcn

#modules := \