Commit 2f03c4c6 authored by garciay's avatar garciay
Browse files

STF519 Week #19:

- Finalyse implementation of MME/Unknown, Unforseen and Erroneous Protocol Data group TPs
parent abc65572
Loading
Loading
Loading
Loading
+32 −0
Original line number Diff line number Diff line
@@ -325,6 +325,30 @@ module LibS1AP_Templates {
                            m_E_RABToBeModifiedItemBearerModIndList(p_RecordOf_E_RABToBeModifiedItemBearerModInd_value)
                        } // End of template m_E_RABModifiedIndIEs
                        
                        template (value) RecordOf_ProtocolIE m_E_RABModifiedIndIEs_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) RecordOf_E_RABToBeModifiedItemBearerModInd p_RecordOf_E_RABToBeModifiedItemBearerModInd_value
                        ) modifies m_E_RABModifiedIndIEs := {
                            m_Unknown_ID_IE
                        } // End of template m_E_RABModifiedIndIEs_Unknown_ID
                        
                        template (value) RecordOf_ProtocolIE m_E_RABModifiedIndIEs_duplicate_eNB(
                                                                                              in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                              in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                                              in template (value) RecordOf_E_RABToBeModifiedItemBearerModInd p_RecordOf_E_RABToBeModifiedItemBearerModInd_value
                        ) modifies m_E_RABModifiedIndIEs := {
                            m_eNB_UE_S1AP_ID(p_eNB_value)
                        } // End of template m_E_RABModifiedIndIEs_duplicate_eNB
                        
                        template (value) RecordOf_ProtocolIE m_E_RABModifiedIndIEs_no_eNB(
                                                                                          in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                          in template (value) RecordOf_E_RABToBeModifiedItemBearerModInd p_RecordOf_E_RABToBeModifiedItemBearerModInd_value
                        ) := {
                            m_MME_UE_S1AP_ID(p_MME_value),
                            m_E_RABToBeModifiedItemBearerModIndList(p_RecordOf_E_RABToBeModifiedItemBearerModInd_value)
                        } // End of template m_E_RABModifiedIndIEs_no_eNB
                        
                    } // End of group ERABModifyInd
                    
                    group ERABRelease {
@@ -547,6 +571,14 @@ module LibS1AP_Templates {
                        m_Unknown_ID_IE(-, reject)
                    } // End of template m_UeContextResumeRequestIEs_Unknown_ID 
                    
                    template (value) RecordOf_ProtocolIE m_UeContextResumeRequestIEs_duplicate_ENB(
                                                                                                in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                                in template (value) ENB_UE_S1AP_ID p_eNB_value,
                                                                                                in template (value) RecordOf_E_RABFailedToResumeItemResumeReq p_RecordOf_E_RABFailedToResumeItemResumeReq_value
                    ) modifies m_UeContextResumeRequestIEs_RABFailedToResumeItem := {
                        m_eNB_UE_S1AP_ID(p_eNB_value, ignore)
                    } // End of template m_UeContextResumeRequestIEs_duplicate_ENB 
                    
                    template (value) RecordOf_ProtocolIE m_UeContextResumeRequestIEs_no_eNB(
                                                                                            in template (value) MME_UE_S1AP_ID p_MME_value,
                                                                                            in template (value) RecordOf_E_RABFailedToResumeItemResumeReq p_RecordOf_E_RABFailedToResumeItemResumeReq_value
+155 −2
Original line number Diff line number Diff line
@@ -4218,7 +4218,7 @@ module S1AP_TCFunctions {
                f_recv_E_RABSetupRequest(mw_E_RABSetupReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    mw_E_RABToBeSetupItemBearerSUReq(?,?,?,?,?)
                    {mw_E_RABToBeSetupItemBearerSUReq(?,?,?,?,?)}
                ));
                
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
@@ -5875,7 +5875,7 @@ module S1AP_TCFunctions {
                // Test body
                // 1. on receipt of a E-RAB_MODIFICATION_INDICATION
                f_send_E_RABModifiedInd(
                    m_E_RABModifiedIndIEs(
                    m_E_RABModifiedIndIEs_Unknown_ID(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        {
@@ -5971,6 +5971,159 @@ module S1AP_TCFunctions {
                
            } // 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
+156 −3
Original line number Diff line number Diff line
@@ -3941,8 +3941,8 @@ module S1AP_TestCases {
             *             containing an E-RAB_to_be_Modified_List
             *                 containing an E-RAB_to_be_Setup Item 1
             *                     containing an E-RAB_ID
             *                     containing a Cause
             *                         indicating an appropriate value
             *                     containing a Transport_Layer_Address
             *                     containing a DL_GTP-TEID
             *         sends an ERROR_INDICATION
             *             containing a Criticality_Diagnostics
             *                 containing a Procedure_Code
@@ -3955,7 +3955,7 @@ module S1AP_TestCases {
             * </pre>
             * 
             * @see       ETSI TS 103 497-2 TP_S1AP_MME_ERR_03
             * @reference ETSI TS 136 413 V13.4.0 10.3.4.2¶4(2nd dashed line) and 14
             * @reference ETSI TS 136 413 V13.4.0 Clause 10.3.4.2¶4(2nd dashed line) and 14
             */
            testcase TC_S1AP_MME_ERR_03() runs on S1AP system TestAdapter { 
                // Local variables
@@ -4035,6 +4035,159 @@ module S1AP_TestCases {
                
            } // End of testcase TC_S1AP_MME_ERR_04
            
            /**
             * @desc Verify that the IUT rejects the procedure using Error Indication Procedure if message not contains mandatory 
             *       IEs/IE groups and include Procedure Code IE, Triggering Message IE and Procedure Criticality IE 
             *       and Information Element Criticality Diagnostics IE in the Criticality Diagnostics IE for each 
             *       reported IEs/IE groups within ERROR_INDICATION.
             * <pre>
             * Pics Selection: A.4/2.8 and A.4/6.2.2 and A.4/17.2
             * Configuration: CF_S1-MME
             *     Ensure that the IUT
             *         on receipt of a E-RAB_MODIFICATION_INDICATION,
             *             containing an MME UE_S1AP_ID
             *             not containing an eNB_UE_S1AP_ID
             *             containing an E-RAB_to_be_Modified_List
             *                 containing an E-RAB_to_be_Setup Item 1
             *                     containing an E-RAB_ID
             *                     containing a Transport_Layer_Address
             *                     containing a DL_GTP-TEID
             *         sends an ERROR_INDICATION
             *             containing a Criticality_Diagnostics
             *                 containing a Procedure_Code
             *                 containing a Triggering_Message
             *                 containing a Procedure_Criticality
             *                 containing an Information Element Criticality_Diagnostics
             *                     containing an IE_Criticality
             *                     containing an IE_ID
             *                     containing an IE_Type_of_Error.
             * </pre>
             * 
             * @see       ETSI TS 103 497-2 TP_S1AP_MME_ERR_05
             * @reference ETSI TS 136 413 V13.4.0 Clause 10.3.5¶4(2nd dashed line) and 14
             */
            testcase TC_S1AP_MME_ERR_05() runs on S1AP system TestAdapter { 
                // Local variables
                var S1AP v_s1ap_mme; 
                
                // Test control
                if (not (PICS_S1AP_MME_IUT and PICS_S1AP_MME_INITIATION_ERROR_IND_ABSTRACT_SYNTAX_PROCEDURE)) {
                    log("*** " & __SCOPE__ & ": ERROR: 'PICS_S1AP_MME_IUT and PICS_S1AP_MME_INITIATION_ERROR_IND_ABSTRACT_SYNTAX_PROCEDURE' shall be set to true for executing the TC. ***"); 
                    stop;
                }
                
                // Test component configuration
                f_cf_S1AP_MME_Up(v_s1ap_mme);
                
                // Start
                v_s1ap_mme.start(f_TC_S1AP_MME_ERR_05()); 
                
                // synchronize PTC on 1 sychronization points
                f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});
                
                f_cf_Down();
                
            } // End of testcase TC_S1AP_MME_ERR_05
            
            /**
             * @desc Verify that the IUT rejects the procedure if message contains too many occurrances of the same IEs/IE groups 
             *       with response message for this procedure and report the cause value 
             *       ‘Abstract Syntax Error(Falsely Constructed Message)’.
             * <pre>
             * Pics Selection: A.4/2.8 and A.4/6.2.2 and A.4/17.2
             * Configuration: CF_S1-MME
             *     Ensure that the IUT
             *         on receipt of a UE_CONTEXT_RESUME_REQUEST,
             *         with Criticality set to value from the Table 5
             *             containing an MME UE_S1AP_ID
             *             containing an eNB_UE_S1AP_ID
             *             containing an eNB_UE_S1AP_ID(same IE as already present)
             *             containing an E-RAB_Failed_to_Resume_List
             *                 containing an E-RAB_Failed_to_Resume_Item 1
             *                     containing an E-RAB_ID
             *                     containing a Cause
             *                         indicating an appropriate value
             *         sends an UE_CONTEXT_RESUME_FAILURE
             *             containing an MME_UE_S1AP_ID
             *             containing an eNB_UE_S1AP_ID
             *             containing a Cause
             *                 indicating indicating ‘Abstract Syntax Error(Falsely Constructed Message)’.
             * </pre>
             * 
             * @see       ETSI TS 103 497-2 TP_S1AP_MME_ERR_06
             * @reference ETSI TS 136 413 V13.4.0 Clause 10.3.6¶2(1st dashed line)
             */
            testcase TC_S1AP_MME_ERR_06() runs on S1AP system TestAdapter { 
                // Local variables
                var S1AP v_s1ap_mme; 
                
                // Test control
                if (not (PICS_S1AP_MME_IUT and PICS_S1AP_MME_INITIATION_ERROR_IND_ABSTRACT_SYNTAX_PROCEDURE)) {
                    log("*** " & __SCOPE__ & ": ERROR: 'PICS_S1AP_MME_IUT and PICS_S1AP_MME_INITIATION_ERROR_IND_ABSTRACT_SYNTAX_PROCEDURE' shall be set to true for executing the TC. ***"); 
                    stop;
                }
                
                // Test component configuration
                f_cf_S1AP_MME_Up(v_s1ap_mme);
                
                // Start
                v_s1ap_mme.start(f_TC_S1AP_MME_ERR_06()); 
                
                // synchronize PTC on 1 sychronization points
                f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});
                
                f_cf_Down();
                
            } // End of testcase TC_S1AP_MME_ERR_06
            
            /**
             * @desc Verify that the IUT terminate the procedure that does not have message to report unsuccessful outcome and 
             *       message contains too many occurrances of the same IEs/IE groups and initiate Error Indication Procedure with 
             *       cause value ‘Abstract Syntax Error(Falsely Constructed Message)’.
             * <pre>
             * Pics Selection: A.4/2.8 and A.4/6.2.2 and A.4/17.2
             * Configuration: CF_S1-MME
             *     Ensure that the IUT
             *         on receipt of a E-RAB_MODIFICATION_INDICATION,
             *             containing an MME UE_S1AP_ID
             *             containing an eNB_UE_S1AP_ID
             *             containing an eNB_UE_S1AP_ID(same IE as already present)
             *             containing an E-RAB_to_be_Modified_List
             *                 containing an E-RAB_to_be_Setup Item 1
             *                     containing an E-RAB_ID
             *                     containing a Transport_Layer_Address
             *                     containing a DL_GTP-TEID
             *         sends an ERROR_INDICATION
             *             containing a Cause
             *                 indicating indicating ‘Abstract Syntax Error(Falsely Constructed Message)’.
             * </pre>
             * 
             * @see       ETSI TS 103 497-2 TP_S1AP_MME_ERR_07
             * @reference ETSI TS 136 413 V13.4.0 Clause 10.3.6¶3(2nd dashed line)
             */
            testcase TC_S1AP_MME_ERR_07() runs on S1AP system TestAdapter { 
                // Local variables
                var S1AP v_s1ap_mme; 
                
                // Test control
                if (not (PICS_S1AP_MME_IUT and PICS_S1AP_MME_INITIATION_ERROR_IND_ABSTRACT_SYNTAX_PROCEDURE)) {
                    log("*** " & __SCOPE__ & ": ERROR: 'PICS_S1AP_MME_IUT and PICS_S1AP_MME_INITIATION_ERROR_IND_ABSTRACT_SYNTAX_PROCEDURE' shall be set to true for executing the TC. ***"); 
                    stop;
                }
                
                // Test component configuration
                f_cf_S1AP_MME_Up(v_s1ap_mme);
                
                // Start
                v_s1ap_mme.start(f_TC_S1AP_MME_ERR_07()); 
                
                // synchronize PTC on 1 sychronization points
                f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});
                
                f_cf_Down();
                
            } // End of testcase TC_S1AP_MME_ERR_07
            
        } // End of group Unknown_unforseen_errorneous_group
        
    } // End of group MME_Role
+3 −0
Original line number Diff line number Diff line
@@ -145,6 +145,9 @@ module S1AP_TestControl {
            execute(TC_S1AP_MME_ERR_02());
            execute(TC_S1AP_MME_ERR_03());
            execute(TC_S1AP_MME_ERR_04());
            execute(TC_S1AP_MME_ERR_05());
            execute(TC_S1AP_MME_ERR_06());
            execute(TC_S1AP_MME_ERR_07());
        }
        
    } // End of 'Control' statement