Commit e4d4ad4a authored by garciay's avatar garciay
Browse files

Terminated test cases for MME Update Location group

Test cases for HSS Delete Subscriber Data and Delete Subscriber Data groups.
parent d4e4439b
Loading
Loading
Loading
Loading
+2236 −1340

File changed.

Preview size limit exceeded, changes collapsed.

+607 −281
Original line number Diff line number Diff line
@@ -262,48 +262,200 @@ module DiameterS6a_MME_TCFunctions {
            
        } // End of TC function f_TC_MME_UL_04
        
        /**
         * @desc    Verify that the IUT, that has chosen the option to include the SSGN number within ULR request shall be prepared to receive a single subscription data update message IDR from HSS when the subscription data is modified
         */
        function f_TC_MME_UL_05() runs on TestAdapter {
            
            // Local variables
            var integer v_recvSteps := 0;   // Initial state    : await for a UL-Answer
                                            // State 1          : the IUT receives a ID-Request
                                            // State 2          : the IUT sends an ID-Answer
            
            // Preamble
            f_preamble_MME();
            f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***");
            
            // Test Body
            // Clause 'when'
            // Clause 'when': FIXME How to trigger 'the IUT sends a UL-Request'
            
            // Clause 'then'
            tc_ac.start;
            alt {
                [v_recvSteps == 0] HSS_S6a.receive(                                 // the IUT sends a UL-Request 
                    mw_hssUpdateLocationRequest(
                        mdw_ULR_TCs(
                            ?,
                            mdw_hssUlrBodyAvps_TC_05(
                                m_auth_Session_State_noStateMaintained,
                                vc_originHost,
                                vc_originRealm,
                                vc_destinationRealm,
                                ?,
                                ?,
                                ?,
                                ?,
                                mdw_sGSN_Number(PX_SGSN_NUMBER)                     // containing a SGSN-Number AVP
                    )))) { // Expected UL-Request message 
                        log("*** " & __SCOPE__ & ": INFO: Expected UL-Request was received. ***");
                        v_recvSteps := v_recvSteps + 1;
                        repeat
                }
                [v_recvSteps == 1] HSS_S6a.receive(                                 // the IUT receives a ID-Request
                    mw_hssInsertSubscriberDataRequest(
                        mdw_IDR_TCs( 
                            ?,
                            mdw_hssIdaBodyAvps_TC_05
                ))) { // Expected ID-Request message 
                    log("*** " & __SCOPE__ & ": INFO: Expected ID-Request was received. ***");
                    v_recvSteps := v_recvSteps + 1;
                    repeat
                }
                [v_recvSteps == 2] HSS_S6a.receive(                                 // the IUT sends an ID-Answer
                    mw_hssInsertSubscriberDataAnswer(
                        mdw_IDA_TCs( 
                            ?,
                            mdw_hssIdaBodyAvps_TC_05
                ))) { // Expected ID-Answer message 
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    log("*** " & __SCOPE__ & ": PASS: Expected ID-Answer was received. ***");
                }
                [] HSS_S6a.receive { // Unxpected message 
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    log("*** " & __SCOPE__ & ": INCONC: Unxpected message received. ***");
                }
                [] tc_ac.timeout {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    log("*** " & __SCOPE__ & ": INCONC: Message was not received in due time. ***");
                }
            } // End of 'altstep' statement
            
            // Postamble
            f_postamble_MME();
            f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            
        } // End of TC function f_TC_MME_UL_05
        
        /**
         * @desc    Verify that the IUT, that has chosen the option to include the SSGN number within ULR request shall be prepared to receive a single subscription data update message DSR from HSS when the subscription data is modified
         */
        function f_TC_MME_UL_06() runs on TestAdapter {
            
            // Local variables
            var integer v_recvSteps := 0;   // Initial state    : await for a UL-Answer
                                            // State 1          : the IUT receives a ID-Request
                                            // State 2          : the IUT sends an ID-Answer
            
            // Preamble
            f_preamble_MME();
            f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***");
            
            // Test Body
            // Clause 'when'
            // Clause 'when': FIXME How to trigger 'the IUT sends a UL-Request'
            
            // Clause 'then'
            tc_ac.start;
            alt {
                [v_recvSteps == 0] HSS_S6a.receive(                                 // the IUT sends a UL-Request 
                    mw_hssUpdateLocationRequest(
                        mdw_ULR_TCs(
                            ?,
                            mdw_hssUlrBodyAvps_TC_05(
                                m_auth_Session_State_noStateMaintained,
                                vc_originHost,
                                vc_originRealm,
                                vc_destinationRealm,
                                ?,
                                ?,
                                ?,
                                ?,
                                mdw_sGSN_Number(PX_SGSN_NUMBER)                     // containing a SGSN-Number AVP
                    )))) { // Expected UL-Request message 
                        log("*** " & __SCOPE__ & ": INFO: Expected UL-Request was received. ***");
                        v_recvSteps := v_recvSteps + 1;
                        repeat
                }
                [v_recvSteps == 1] HSS_S6a.receive(                                 // the IUT receives a DS-Request
                    mw_hssInsertSubscriberDataRequest(
                        mdw_DSR_TCs( 
                            ?,
                            mdw_hssDsaBodyAvps_TC_06
                ))) { // Expected DS-Request message 
                    log("*** " & __SCOPE__ & ": INFO: Expected DS-Request was received. ***");
                    v_recvSteps := v_recvSteps + 1;
                    repeat
                }
                [v_recvSteps == 2] HSS_S6a.receive(                                 // the IUT sends an DS-Answer
                    mw_hssInsertSubscriberDataAnswer(
                        mdw_DSA_TCs( 
                            ?,
                            mdw_hssDsaBodyAvps_TC_06
                ))) { // Expected DS-Answer message 
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    log("*** " & __SCOPE__ & ": PASS: Expected DS-Answer was received. ***");
                }
                [] HSS_S6a.receive { // Unxpected message 
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    log("*** " & __SCOPE__ & ": INCONC: Unxpected message received. ***");
                }
                [] tc_ac.timeout {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    log("*** " & __SCOPE__ & ": INCONC: Message was not received in due time. ***");
                }
            } // End of 'altstep' statement
            
            // Postamble
            f_postamble_MME();
            f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            
        } // End of TC function f_TC_MME_UL_06
        
        /**
         * @desc    Verify that the standalone IUT, shall not indicate its support for any SGSN specific features and shall not request explicitly the download of GPRS data
         */
        function f_TC_MME_UL_07() runs on TestAdapter {
            
            // Local variables
            var integer v_recvSteps := 0;   // Initial state    : await for a UL-Answer to indicate additional request for update location information
                                            // Final state      : the IUT sends a UL-Request 
            
            // Preamble
            f_preamble_MME();
            f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***");
            
            // Test Body
            // Clause 'when'
            // Clause 'when': Nothing to do, see f_TC_NAS_AttachRequest_Trigger
            
            // Clause 'then'
            // Clause 'then': the IUT sends a UL-Request 
            tc_ac.start;
            alt {
                [] HSS_S6a.receive(
                    mw_hssUpdateLocationRequest(
                        mdw_ULR_TCs( 
                            vc_sessionId,
                            mdw_ulrBodyAvps_TC_07(
                                m_ulr_Flags_AVP(                                    // containing a ULR-Flags AVP with
                                    bit2int('???00?1?'B)                            //     S6a-indicator bit set
                                                                                    //     GPRS-Subscription-Data-Indicator bit not set
                                ),                                                  //     Node-Type-Indicator bit not set
                                ? //mw_supportedFeatures                                // containing a Supported-Features AVP
// FIXME How to check this constraint?                                    complement()                                    //     not containing any SGSN specific features
                )))) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    log("*** " & __SCOPE__ & ": PASS: Expected was received. ***");
                }
                [] tc_ac.timeout {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    log("*** " & __SCOPE__ & ": INCONC: Message was not received in due time. ***");
                }
            } // End of 'altstep' statement
            
            // Postamble
            f_postamble_MME();
            f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            
        } // End of TC function f_TC_MME_UL_07
        
@@ -1242,11 +1394,179 @@ module DiameterS6a_MME_TCFunctions {
    // 5.2.1.5 Delete Subscriber Data
    group deleteSubscriberData {
        
        function f_TC_MME_DSD_01() runs on TestAdapter {
            
            // Local variables
            
            // Preamble
            f_preamble_MME();
            f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***");
            
            // Test Body
            // Clause 'when'
            
            // Clause 'then'
            
            // Postamble
            f_postamble_MME();
            f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            
        } // End of TC function f_TC_MME_DSD_01
        
        function f_TC_MME_DSD_02() runs on TestAdapter {
            
            // Local variables
            
            // Preamble
            f_preamble_MME();
            f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***");
            
            // Test Body
            // Clause 'when'
            
            // Clause 'then'
            
            // Postamble
            f_postamble_MME();
            f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            
        } // End of TC function f_TC_MME_DSD_02
        
        function f_TC_MME_DSD_03() runs on TestAdapter {
            
            // Local variables
            
            // Preamble
            f_preamble_MME();
            f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***");
            
            // Test Body
            // Clause 'when'
            
            // Clause 'then'
            
            // Postamble
            f_postamble_MME();
            f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            
        } // End of TC function f_TC_MME_DSD_03
        
        function f_TC_MME_DSD_04() runs on TestAdapter {
            
            // Local variables
            
            // Preamble
            f_preamble_MME();
            f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***");
            
            // Test Body
            // Clause 'when'
            
            // Clause 'then'
            
            // Postamble
            f_postamble_MME();
            f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            
        } // End of TC function f_TC_MME_DSD_04
        
    } // End of group deleteSubscriberData
    
    // 5.2.1.6 Authentication Information Retrieval
    group authenticationInformationRetrieval {
        
        function f_TC_MME_AIR_01() runs on TestAdapter {
            
            // Local variables
            
            // Preamble
            f_preamble_MME();
            f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***");
            
            // Test Body
            // Clause 'when'
            
            // Clause 'then'
            
            // Postamble
            f_postamble_MME();
            f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            
        } // End of TC function f_TC_MME_AIR_01
        
        function f_TC_MME_AIR_02() runs on TestAdapter {
            
            // Local variables
            
            // Preamble
            f_preamble_MME();
            f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***");
            
            // Test Body
            // Clause 'when'
            
            // Clause 'then'
            
            // Postamble
            f_postamble_MME();
            f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            
        } // End of TC function f_TC_MME_AIR_02
        
        function f_TC_MME_AIR_03() runs on TestAdapter {
            
            // Local variables
            
            // Preamble
            f_preamble_MME();
            f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***");
            
            // Test Body
            // Clause 'when'
            
            // Clause 'then'
            
            // Postamble
            f_postamble_MME();
            f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            
        } // End of TC function f_TC_MME_AIR_03
        
        function f_TC_MME_AIR_04() runs on TestAdapter {
            
            // Local variables
            
            // Preamble
            f_preamble_MME();
            f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***");
            
            // Test Body
            // Clause 'when'
            
            // Clause 'then'
            
            // Postamble
            f_postamble_MME();
            f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            
        } // End of TC function f_TC_MME_AIR_04
        
    } // End of group authenticationInformationRetrieval
    
    // 5.2.1.7 Reset
@@ -1264,6 +1584,9 @@ module DiameterS6a_MME_TCFunctions {
            // Clause 'then'
            
            // Postamble
            f_postamble_MME();
            f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            
        } // End of TC function f_TC_MME_RES_01
        
@@ -1284,6 +1607,9 @@ module DiameterS6a_MME_TCFunctions {
            // Clause 'then'
            
            // Postamble
            f_postamble_MME();
            f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            
        } // End of TC function f_TC_MME_NOT_01
        
@@ -1335,7 +1661,7 @@ module DiameterS6a_MME_TCFunctions {
              // Send a Tracking Area Update (TAU) request
              // http://www.eventhelix.com/lte/tracking-area-update/lte-tracking-area-update.pdf
            } else {
                action("UE is already attched, trigger a UL-Request to request information");
                action("Switch the UE to initiate ULR, trigger a UL-Request to request information");
            }
            f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***");
+42 −11
Original line number Diff line number Diff line
@@ -173,21 +173,52 @@ module DiameterS6a_PICS {
         */
        modulepar boolean PICS_IUT_PARTIAL_PURGE_PROCEDURE := false; 
        
        /**
         * @desc Does the IUT support subscriber data handling procedures?
         * @see  ETSI DTS/INT-094-1 V0.0.3 (2013-11) A.5/4 
         */
        modulepar boolean PICS_IUT_SUBSCRIBER_DATA_PROCEDURE := false; 
        
        /**
         * @desc Does the IUT support delete subscriber data procedures?
         * @see  ETSI DTS/INT-094-1 V0.0.3 (2013-11) A.5/5 
         */
        modulepar boolean PICS_IUT_DELETE_SUBSCRIBER_DATA_PROCEDURE := false; 
        
        /**
         * @desc Does the IUT support authentication procedures?
         * @see  ETSI DTS/INT-094-1 V0.0.3 (2013-11) A.5/6 
         */
        modulepar boolean PICS_IUT_AUTHENTICATION_PROCEDURE := false; 
        
        /**
         * @desc Does the IUT support addition of Error Diagnostic information to the DIAMETER_ERROR_UNKNOWN_EPS_SUBSCRIPTION Result Code?
         * @see  ETSI DTS/INT-094-1 V0.0.3 (2013-11) A.5/6.1 
         */
        modulepar boolean PICS_IUT_AUTHENTICATION_ERROR_PROCEDURE := false; 
        
        /**
         * @desc Does the IUT support processing and acting upon the Immediate Reponse Preferred parameter received in an AIR message?
         * @see  ETSI DTS/INT-094-1 V0.0.3 (2013-11) A.5/6.1 
         */
        modulepar boolean PICS_IUT_AUTHENTICATION_IMMEDIAT_PROCEDURE := false; 
        
        /**
         * @desc Does the IUT support fault recovery procedures?
         * @see  ETSI DTS/INT-094-1 V0.0.3 (2013-11) A.5/7 
         */
        modulepar boolean PICS_IUT_FAULT_PROCEDURE := false; 
        
        
        
        
        
        
        
        
        // TODO Continue PICS A.5/x
        
        /**
         * @desc Does the IUT support inclusion of only a subset of subscribers in the User-Id AVP in the RSR message?
         * @see  ETSI DTS/INT-094-1 V0.0.3 (2013-11) A.5/7.1 
         */
        modulepar boolean PICS_IUT_FAULT_INC_PROCEDURE := false; 
        /**
         * @desc Does the IUT support notification procedures?
         * @see  ETSI DTS/INT-094-1 V0.0.3 (2013-11) A.5/8 
         */
        modulepar boolean PICS_IUT_NOTIFICATION_PROCEDURE := false; 
        


+65 −5
Original line number Diff line number Diff line
@@ -133,6 +133,24 @@ module DiameterS6a_PIXITS {
         */
        modulepar UTF8String PX_NO_APN_USR_NAME := "userNoAPN";
        
        /**
         * @desc Stored MME identity and stored SGSN identity
         * @see  ETSI DTS/INT-094-1 V0.0.3 (2013-11) A.x/x 
         */
        modulepar UTF8String PX_STORED_MME_SGSN := "storedMmeStoredSgsn";
        
        /**
         * @desc Stored MME identity and not stored SGSN identity
         * @see  ETSI DTS/INT-094-1 V0.0.3 (2013-11) A.x/x 
         */
        modulepar UTF8String PX_STORED_MME_NOT_SGSN := "storedMmeNotStoredSgsn";
        
        /**
         * @desc Stored MME identity and not stored SGSN identity
         * @see  ETSI DTS/INT-094-1 V0.0.3 (2013-11) A.x/x 
         */
        modulepar UTF8String PX_STORED_SGSN_NOT_MME := "storedSgsnNotStoredMme";
        
        /**
         * @desc The user name
         * @see  ETSI DTS/INT-094-1 V0.0.3 (2013-11) A.x/x 
@@ -151,6 +169,20 @@ module DiameterS6a_PIXITS {
         */
        modulepar octetstring PX_VISITED_NTW_ID := 'CAFEDECA'O;
        
        modulepar Oct3 PX_VISITED_PLMN_ID := '000000'O;
        
        modulepar Oct3 PX_NEW_VISITED_PLMN_ID := '000001'O;
        
        modulepar Oct3 PX_NOT_ALLOWED_VISITED_PLMN_ID := 'ffffff'O;
        
        modulepar Cancellation_Type_Code PX_CANCELLATION_TYPE := MME_UPDATE_PROCEDURE_E;
        
        /**
         * @desc The SGSN number
         * @see  ETSI DTS/INT-094-1 V0.0.3 (2013-11) A.x/x 
         */
        modulepar octetstring PX_SGSN_NUMBER := 'DEADBEEF'O;
        
    } // End of group group fieldValues
    
    
@@ -190,7 +222,19 @@ module DiameterS6a_PIXITS {
         * @desc ULR-Flags AVP with Skip-Subscriber-Data bit set
         * @see ETSI TS 129 272 V10.8.0 (2013-07) Table 7.3.7/1: ULR-Flags
         */
        modulepar UInt32 PX_ULR_FLAGS_S6a_SKIP_SUBSCRIBER_DATA := 4; // Bit1
        modulepar UInt32 PX_ULR_FLAGS_S6a_SKIP_SUBSCRIBER_DATA := 4; // Bit2
        
        /**
         * @desc ULR-Flags AVP with GPRS-Subscription-Data-Indicator bit set
         * @see ETSI TS 129 272 V10.8.0 (2013-07) Table 7.3.7/1: ULR-Flags
         */
        modulepar UInt32 PX_ULR_FLAGS_S6a_GPRS_SUBSCRIPTION_DATA := 8; // Bit3
        
        /**
         * @desc ULR-Flags AVP with Node-Type-Indicator bit set
         * @see ETSI TS 129 272 V10.8.0 (2013-07) Table 7.3.7/1: ULR-Flags
         */
        modulepar UInt32 PX_ULR_FLAGS_S6a_GPRS_NODE_TYPE_IND := 16; // Bit4
        
        /**
         * @desc ULR-Flags AVP with Initial-Attach-Indicator bit set
@@ -210,13 +254,29 @@ module DiameterS6a_PIXITS {
         */
        modulepar UInt32 PX_ULA_FLAGS_SEP_IND_SET := 1;
        
        modulepar Oct3 PX_VISITED_PLMN_ID := '000000'O;
        /**
         * @desc PUR-Flags AVP with Freeze M-TMSI bit set
         * @see ETSI TS 129 272 V10.8.0 (2013-07) Table 7.3.149/1: PUR-Flags
         */
        modulepar UInt32 PX_PUR_UE_IN_MME := 1; // Bit0
        
        modulepar Oct3 PX_NEW_VISITED_PLMN_ID := '000001'O;
        /**
         * @desc PUR-Flags AVP with Freeze P-TMSI bit set
         * @see ETSI TS 129 272 V10.8.0 (2013-07) Table 7.3.149/1: PUR-Flags
         */
        modulepar UInt32 PX_PUR_UE_IN_SGSN := 2; // Bit1
        
        modulepar Oct3 PX_NOT_ALLOWED_VISITED_PLMN_ID := 'ffffff'O;
        /**
         * @desc PUR-Flags AVP with Freeze M-TMSI bit set
         * @see ETSI TS 129 272 V10.8.0 (2013-07) Table 7.3.48/1: PUA-Flags
         */
        modulepar UInt32 PX_PUR_FREEZE_M_TMSI := 1; // Bit0
        
        modulepar Cancellation_Type_Code PX_CANCELLATION_TYPE := MME_UPDATE_PROCEDURE_E;
        /**
         * @desc PUR-Flags AVP with Freeze P-TMSI bit set
         * @see ETSI TS 129 272 V10.8.0 (2013-07) Table 7.3.48/1: PUA-Flags
         */
        modulepar UInt32 PX_PUR_FREEZE_P_TMSI := 2; // Bit1
        
    } //end group DiameterCommonS6aData
    
+7 −0
Original line number Diff line number Diff line
@@ -179,6 +179,13 @@
            );
        } // End of function f_triggerUlrMessage
        
        function f_triggerPurMessage ( template (value) ULR_MSG p_purMSG ) 
        runs on TestAdapter {
            MME_S6a.send(
                DIAMETER_MSG : { pUR_MSG := p_purMSG } 
            );
        } // End of function f_triggerPurMessage
        
        function f_triggerClaMessage ( template (value) CLA_MSG p_claMSG ) 
        runs on TestAdapter {
            MME_S6a.send(
Loading