Commit 88062e28 authored by garciay's avatar garciay
Browse files

STF519 Week #19:

- Start implementation of MME/Unknown, Unforseen and Erroneous Protocol Data group TPs
parent ffc4e550
Loading
Loading
Loading
Loading
+20 −24
Original line number Diff line number Diff line
@@ -870,7 +870,7 @@ module LibS1AP_Steps {
        function f_recv_Ue_Context_Resume_Failure(
                                        template (present) RecordOf_ProtocolIE p_value := ?
        ) runs on S1APComponent {
            f_recv_S1AP_initiatingMessage(mw_UeContextResumeFailure(p_value))
            f_recv_S1AP_successfulOutcome(mw_UeContextResumeFailure(p_value))
        } // End of f_recv_Ue_Context_Resume_Failure
        
        /**
@@ -941,7 +941,8 @@ module LibS1AP_Steps {
         * @param p_initiatingMessage Send value template for InitiatingMessage message
         */
        function f_send_S1AP_initiatingMessage(
                                               in template (value) InitiatingMessage p_initiatingMessage
                                               in template (value) InitiatingMessage p_initiatingMessage,
                                               in template (value) Criticality p_criticality := reject
        ) runs on S1APComponent {
            f_send_S1AP_PDU( {initiatingMessage := p_initiatingMessage})
        } // End of function f_send_S1AP_initiatingMessage
@@ -1232,17 +1233,6 @@ module LibS1AP_Steps {
            f_send_S1AP_initiatingMessage(m_UeContextSuspendRequest(p_value))
        } // End of f_send_UE_Context_Suspend_Request
        
        /**
        * @desc Send S1AP Message UE Context Resume Request
        * @param p_value Receive template for UE CONTEXT RESUME REQUEST
        * @see ETSI TS 136 413 V13.4.0 Clause 9.1.4.17 UE CONTEXT SUSPEND REQUEST
        */
        function f_send_UE_Context_Resume_Request(
                                        template (value) RecordOf_ProtocolIE p_value
        ) runs on S1APComponent {
            f_send_S1AP_initiatingMessage(m_UeContextResumeRequest(p_value))
        } // End of f_send_UE_Context_Resume_Request
        
        /**
        * @desc Send S1AP Message UE Context Modification Request
        * @param p_value Send template for UE CONTEXT MODIFICATION REQUEST
@@ -1266,6 +1256,22 @@ module LibS1AP_Steps {
			f_send_S1AP_initiatingMessage(m_UeContextModificationIndication(p_value))
		} // End of f_send_UE_Context_Modification_Request

       /**
        * @desc Send S1AP Message UE Context Resume Request
        * @param p_value Send template for UE CONTEXT RESUME REQUEST
        * @see ETSI TS 136 413 V13.4.0 Clause 9.1.4.17 UE CONTEXT RESUME REQUEST
        */
        function f_send_Ue_Context_Resume_Request(
                                                  in template (value) RecordOf_ProtocolIE p_value,
                                                  in template (value) Criticality p_criticality := reject
        ) runs on S1APComponent {
            f_send_S1AP_initiatingMessage(
                m_UeContextResumeRequest(
                    p_value, 
                    p_criticality
                )
            )
        } // End of f_send_UE_Context_Modification_Request

        /**
        * @desc Send S1AP Message UE Radio Capability Match Request
@@ -1278,16 +1284,6 @@ module LibS1AP_Steps {
            f_send_S1AP_initiatingMessage(m_UeRadioCapabilityMatchRequest(p_value))
        } // End of f_send_UE_Radio_Capability_Match_Request
        
        /**
         * @desc Send S1AP Message ERROR INDICATION
         * @param p_value Send template with IE for ERROR INDICATION
         */
        function f_send_Error_Indication(
                                         in template (value) RecordOf_ProtocolIE p_value
        ) runs on S1APComponent {
            // TODO f_send_S1AP_initiatingMessage(m_error_Indication(p_value))
        } // End of function f_send_Error_Indication
        
    } // End of group sendPDU
    
    /**
@@ -1342,7 +1338,7 @@ module LibS1AP_Steps {
                {
                    m_E_RABItem(
                        c_E_RAB_ID_A,
                        m_cause_ran(user_inactivity) // FIXME To be checked
                        m_cause_ran(user_inactivity) 
                    )
                }
            ));
+182 −141
Original line number Diff line number Diff line
@@ -463,9 +463,11 @@ module LibS1AP_Templates {
                     * @param p_value           Expected procedure code
                     */
                    template (value) InitiatingMessage m_UeContextResumeRequest(
                                                                           in template (value) RecordOf_ProtocolIE p_value) := {
                                                                                in template (value) RecordOf_ProtocolIE p_value,
                                                                                in template (value) Criticality p_criticality := reject
                    ) := {
                        procedureCode := id_UEContextResume,
                        criticality := reject,
                        criticality := p_criticality,
                        value_ := {RecordOf_ProtocolIE := valueof(p_value)}
                    } // End of template m_UeContextResumeRequest

@@ -473,10 +475,18 @@ module LibS1AP_Templates {
                                                                                     in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                     in template (value) ENB_UE_S1AP_ID p_eNB_value
                    ) := {
                        m_MME_UE_S1AP_ID(p_MME_value),
                        m_eNB_UE_S1AP_ID(p_eNB_value)
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore)
                    } // End of template m_UeContextResumeRequestIEs 
                    
                    template (value) RecordOf_ProtocolIE m_UeContextResumeRequestIEs_RABFailedToResumeItem(
                                                                                                           in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                                           in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                                                           in template (value) E_RABFailedToResumeItemResumeReq p_E_RABFailedToResumeItemResumeReq
                    ) modifies m_UeContextResumeRequestIEs := {
                        m_E_RABFailedToResumeListResumeReq_IE(p_E_RABFailedToResumeItemResumeReq)
                    } // End of template m_UeContextResumeRequestIEs_RABFailedToResumeItem 
                    
                    /**
                     * @desc Send template for InitiatingMessage message with m_UeContextModificationRequest payload
                     * @param p_value           Expected procedure code
@@ -572,6 +582,14 @@ module LibS1AP_Templates {
                        m_UE_Radio_capability_IE(p_UeRadioCapabilities)
                    } // End of template m_ContextModificationReqIEsSecCap
                    
                    template (value) RecordOf_ProtocolIE m_UeContextResumeRequestIEs_Unknown_ID(
                                                                                                in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                                in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                                                in template (value) E_RABFailedToResumeItemResumeReq p_E_RABFailedToResumeItemResumeReq
                    ) modifies m_UeContextResumeRequestIEs := {
                        m_Unknown_ID_IE(-, reject)
                    } // End of template m_UeContextResumeRequestIEs_Unknown_ID 
                    
                }// End of group Context_management_group
                
                /**
@@ -1475,7 +1493,7 @@ module LibS1AP_Templates {
                    } // End of template mw_UeContextSuspendRequestIEs

                    /**
                     * @desc Receive template for mw_UeContextSuspendResponse message
                     * @desc Receive template for mw_UeContextResumeRequest message
                     * @param p_procedureCode   Expected procedure code. Default: ?
                     * @param p_value           Expected procedure code. Default: ?
                     */
@@ -1496,7 +1514,7 @@ module LibS1AP_Templates {
                    } // End of template mw_UeContextSuspendResponseIEs

                    /**
                     * @desc Receive template for mw_UeContextResumeRequest message
                     * @desc Receive template for mw_UeContextResumeFailure message
                     * @param p_procedureCode   Expected procedure code. Default: ?
                     * @param p_value           Expected procedure code. Default: ?
                     */
@@ -1510,13 +1528,16 @@ module LibS1AP_Templates {
                    
                    template (present) RecordOf_ProtocolIE mw_UeContextResumeRequestIEs(
                                                                                        template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                               template (present) ENB_UE_S1AP_ID p_eNB_value := ?
                                                                                        template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                                        template (present) Cause p_cause := ?,
                                                                                        template (present) CriticalityDiagnostics p_criticalyDiagnostic := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore)
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                        mw_cause_IE(p_cause),
                        mw_criticalityDiagnostics_IE(p_criticalyDiagnostic)
                    } // End of template mw_UeContextResumeRequestIEs
                    

                    /**
                     * @desc Receive template for mw_UeContextResumeResponse message
                     * @param p_procedureCode   Expected procedure code. Default: ?
@@ -1540,7 +1561,6 @@ module LibS1AP_Templates {
                    
                    /**
                     * @desc Receive template for mw_UeContextResumeFailure message
                     * @param p_procedureCode   Expected procedure code. Default: ?
                     * @param p_value           Expected procedure code. Default: ?
                     */
                    template (present) SuccessfulOutcome mw_UeContextResumeFailure(
@@ -1554,14 +1574,15 @@ module LibS1AP_Templates {
                    template (present) RecordOf_ProtocolIE mw_UeContextResumeFailureIEs(
                                                                                        template (present) MME_UE_S1AP_ID p_MME_value := ?,
                                                                                        template (present) ENB_UE_S1AP_ID p_eNB_value := ?,
                                                                               template (present) Cause p_cause := ?
                                                                                        template (present) Cause p_cause := ?,
                                                                                        template (present) CriticalityDiagnostics p_criticalyDiagnostic := ?
                    ) := {
                        mw_MME_UE_S1AP_ID(p_MME_value, ignore),
                        mw_eNB_UE_S1AP_ID(p_eNB_value, ignore),
                        mw_cause_IE(p_cause)
                        mw_cause_IE(p_cause),
                        mw_criticalityDiagnostics_IE(p_criticalyDiagnostic)
                    } // End of template mw_UeContextResumeFailureIEs
                    
                                        
                    /**
                     * @desc Receive template for mw_UeRadioCapabilityMatchResponse message
                     * @param p_procedureCode   Expected procedure code. Default: ?
@@ -3394,6 +3415,19 @@ module LibS1AP_Templates {
                value_ := {CSFallbackIndicator := valueof(p_value)}
            } // End of template m_CS_Fallback_indicator_IE
            
            /**
             * @desc Send template for UE E-RAB Failed To Resume Item IEs
             * @param p_value  E_RABFailedToResumeItemResumeReq value
             * @see ETSI TS 136 413 V13.4.0 Clause 9.1.4.17 UE CONTEXT RESUME REQUEST
             */
            template (value) ProtocolIE m_E_RABFailedToResumeListResumeReq_IE(
                                                                              in template (value) E_RABFailedToResumeItemResumeReq p_value,
                                                                              in template (value) ProtocolIE.criticality p_criticality := ignore
            ) := {
                id := S1AP_Constants.id_E_RABFailedToResumeListResumeReq,
                criticality := p_criticality,
                value_ := {E_RABFailedToResumeItemResumeReq := valueof(p_value)}
            }
            
            /**
             * @desc Send template for UE Radio capability IE
@@ -5023,9 +5057,6 @@ module LibS1AP_Templates {
                iE_Extensions := omit
            }

            /**
             * @desc
             */
            template (value) SecurityKey m_securityKey := oct2bit('012345678901234567890123456789AB012345678901234567890123456789AB'O); // 32 octets = 256 bits

            /**
@@ -5477,6 +5508,16 @@ module LibS1AP_Templates {
                    typeOfError    := p_typeOfError,
                    iE_Extensions  := *
                }
                
                template (value) E_RABFailedToResumeItemResumeReq m_E_RABFailedToResumeItemResumeReq(
                                                                                                     in template (value) E_RAB_ID p_e_RAB_ID,
                                                                                                     in template (value) Cause p_cause
                ) := {
                    e_RAB_ID        := p_e_RAB_ID,
                    cause           := p_cause,
                    iE_Extensions   := omit
                } // End of template m_E_RABFailedToResumeItemResumeReq
                
            } // End of group Unknown_unforseen_errorneous_group
            
        } // End of group g_IEParameters
+636 −480
Original line number Diff line number Diff line
@@ -4413,9 +4413,6 @@ module S1AP_TCFunctions {
                
            } // End of function f_TC_S1AP_eNB_CMP_05
            
			/**
			 * @desc Testcase function for TC_S1AP_mME_CMP_06
			 */
            function f_TC_S1AP_mME_CMP_06() runs on S1APComponent { 
                // Local variables
                var template(value) Cause v_cause;
@@ -4536,7 +4533,7 @@ module S1AP_TCFunctions {
                
                // Test body

                f_send_UE_Context_Resume_Request(m_UeContextResumeRequestIEs(
                f_send_Ue_Context_Resume_Request(m_UeContextResumeRequestIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID
                ));
@@ -4570,7 +4567,7 @@ module S1AP_TCFunctions {
                
                // Test body

                f_send_UE_Context_Resume_Request(m_UeContextResumeRequestIEs(
                f_send_Ue_Context_Resume_Request(m_UeContextResumeRequestIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID
                    ));
@@ -5672,6 +5669,165 @@ module S1AP_TCFunctions {
         */
        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(
                            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_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
                // TODO
//                f_send_Ue_Context_Resume_Request(
//                    m_UeContextResumeRequestIEs(
//                        vc_MME_UE_ID,
//                        vc_eNB_UE_ID,
//                        m_E_RABFailedToResumeItemResumeReq(
//                            c_E_RAB_ID_A,
//                            m_cause_ran(user_inactivity)
//                ))); 
                // 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
            
        } // End of group Unknown_unforseen_errorneous_group
        
+214 −50

File changed.

Preview size limit exceeded, changes collapsed.

+4 −0
Original line number Diff line number Diff line
@@ -131,6 +131,10 @@ module S1AP_TestControl {
            // ETSI TS 103 497-2 Clause 5.2.2.2.17  LPPa transport group
            execute(TC_S1AP_MME_LPP_01());
            execute(TC_S1AP_MME_LPP_02());
            // ETSI TS 103 497-2 Clause 5.2.2.2.18   Unknown, Unforseen and Erroneous Protocol Data group 
            execute(TC_S1AP_MME_ERR_01());
            execute(TC_S1AP_MME_ERR_02());
            execute(TC_S1AP_MME_ERR_03());
        }
        
    } // End of 'Control' statement