Commit c9c36caf authored by garciay's avatar garciay
Browse files

Implemented test case function f_TC_HSS_UL_10/12()

parent 62a2ce0d
Loading
Loading
Loading
Loading
+177 −11
Original line number Diff line number Diff line
@@ -549,7 +549,7 @@ module DiameterS6a_HSS_TCFunctions {
                        m_rAT_Type(PX_RAT_TYPE),
                        m_ulr_Flags_AVP(PX_ULR_FLAGS_S6a_IND_SET),
                        md_visitedPLMNId(                                           // from new MME
                            PX_OTHER_VISITED_PLMN_ID
                            PX_NEW_VISITED_PLMN_ID
                        ) 
                    ) // End of md_ulrBodyAvps_TC_01
                ) // End of md_ULR_TCs
@@ -631,10 +631,10 @@ module DiameterS6a_HSS_TCFunctions {
                        vc_destinationRealm,
                        m_user_Name(PX_USR_NAME),
                        m_rAT_Type(PX_RAT_TYPE),
                        m_ulr_Flags_AVP(PX_ULR_FLAGS_S6a_IND_SET),      // containing a ULR-Flags AVP
                        m_ulr_Flags_AVP(PX_ULR_FLAGS_S6a_SINGLE_REG),   // containing a ULR-Flags AVP
                                                                        //     with Single-Registration-Indication bit set
                        md_visitedPLMNId(
                            PX_OTHER_VISITED_PLMN_ID                    // from new MME
                            PX_NEW_VISITED_PLMN_ID                      // from new MME
                        ) 
                    ) // End of md_ulrBodyAvps_TC_01
                ) // End of md_ULR_TCs
@@ -689,9 +689,15 @@ module DiameterS6a_HSS_TCFunctions {
            
        } // End of TC function f_TC_HSS_UL_09
        
        /**
         * @desc    Verify that the IUT when UL Request is received over S6a shall send CL Request to the previous old SGSN
         */
        function f_TC_HSS_UL_10() runs on TestAdapter {
            
            // Local variables
            var integer v_recvSteps := 0;   // Initial state    : await for first CL-Answer message
                                            // Final state      : the IUT sends a UL-Answer to new MME 
            var DIAMETER_MSG v_result;
            
            // Preamble
            f_preamble_HSS();
@@ -699,9 +705,67 @@ module DiameterS6a_HSS_TCFunctions {
            log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***");
            
            // Test Body
            // Clause 'when'
            // Clause 'when': the IUT receives a UL-Request from new MME
            f_triggerUlrMessage(
                md_ULR_TCs( 
                    vc_sessionId,
                    md_ulrBodyAvps_TC_01(
                        m_auth_Session_State_noStateMaintained,
                        vc_originHost,
                        vc_originRealm,
                        vc_destinationRealm,
                        m_user_Name(PX_USR_NAME),
                        m_rAT_Type(PX_RAT_TYPE),
                        m_ulr_Flags_AVP(PX_ULR_FLAGS_S6a_INITIAL_ATTACH),   // containing a ULR-Flags AVP
                                                                            //     with Initial-Attach-Indicator bit set
                        md_visitedPLMNId(
                            PX_NEW_VISITED_PLMN_ID                          // from new MME
                        ) 
                    ) // End of md_ulrBodyAvps_TC_01
                ) // End of md_ULR_TCs
            );
            
            // Clause 'then'
            tc_ac.start;
            alt {
                [v_recvSteps == 0] MME_S6a.receive(                         // the IUT sends a CL-Request to previous MME
                    mw_mmeCancelLocationRequest(
                        mdw_CLR_TCs( 
                            ?,
                            mdw_clrBodyAvps_TC_08( 
                                mw_cancellationType(                        // containing a Cancellation-Type AVP
                                    SGSN_UPDATE_PROCEDURE_E                 //     indicating SGSN_UPDATE_PROCEDURE
                ))))) -> value v_result { // Expected CL-Request message 
                        log("*** " & __SCOPE__ & ": INFO: Expected CL-Request was received. ***");
                        v_recvSteps := v_recvSteps + 1;
                        // and, the IUT receives a CL-Answer from previous SGSN
                        log("*** " & __SCOPE__ & ": INFO: Trigger  CL-Answer. ***");
                        f_triggerClaMessage(
                            md_CLA_TCs( 
                                vc_sessionId,
                                md_claBodyAvps_TC_08
                            ) // End of md_CLA_TCs
                        );
                        repeat
                }
                [v_recvSteps == 1] MME_S6a.receive(                         // and, the IUT sends a UL-Answer to new MME 
                    mw_mmeUpdateLocationAnswer(
                        mdw_ULA_TCs( 
                            ?,
                            mdw_ulaBodyAvps_TC_08
                    ))) -> value v_result { // Expected UL-Answer message 
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                        log("*** " & __SCOPE__ & ": PASS: Expected UL-Answer was received. ***");
                }
                [] MME_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_HSS();
@@ -710,9 +774,15 @@ module DiameterS6a_HSS_TCFunctions {
            
        } // End of TC function f_TC_HSS_UL_10
        
        /**
         * @desc    Verify that the IUT when UL Request is received over S6a shall send CL Request to the previous old SGSN
         */
        function f_TC_HSS_UL_11() runs on TestAdapter {
            
            // Local variables
            var integer v_recvSteps := 0;   // Initial state    : await for first CL-Answer message
                                            // Final state      : the IUT sends a UL-Answer to new MME 
            var DIAMETER_MSG v_result;
            
            // Preamble
            f_preamble_HSS();
@@ -720,9 +790,67 @@ module DiameterS6a_HSS_TCFunctions {
            log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***");
            
            // Test Body
            // Clause 'when'
            // Clause 'when': the IUT receives a UL-Request from new MME
            f_triggerUlrMessage(
                md_ULR_TCs( 
                    vc_sessionId,
                    md_ulrBodyAvps_TC_01(
                        m_auth_Session_State_noStateMaintained,
                        vc_originHost,
                        vc_originRealm,
                        vc_destinationRealm,
                        m_user_Name(PX_USR_NAME),
                        m_rAT_Type(PX_RAT_TYPE),
                        m_ulr_Flags_AVP(PX_ULR_FLAGS_S6a_INITIAL_ATTACH),   // containing a ULR-Flags AVP
                                                                            //     with Initial-Attach-Indicator bit set
                        md_visitedPLMNId(
                            PX_NEW_VISITED_PLMN_ID                          // from new MME
                        ) 
                    ) // End of md_ulrBodyAvps_TC_01
                ) // End of md_ULR_TCs
            );
            
            // Clause 'then'
            tc_ac.start;
            alt {
                [v_recvSteps == 0] MME_S6a.receive(                         // the IUT sends a CL-Request to previous MME
                    mw_mmeCancelLocationRequest(
                        mdw_CLR_TCs( 
                            ?,
                            mdw_clrBodyAvps_TC_08( 
                                mw_cancellationType(                        // containing a Cancellation-Type AVP
                                    SGSN_UPDATE_PROCEDURE_E                 //     indicating SGSN_UPDATE_PROCEDURE
                ))))) -> value v_result { // Expected CL-Request message 
                        log("*** " & __SCOPE__ & ": INFO: Expected CL-Request was received. ***");
                        v_recvSteps := v_recvSteps + 1;
                        // and, the IUT receives a CL-Answer from previous SGSN
                        log("*** " & __SCOPE__ & ": INFO: Trigger  CL-Answer. ***");
                        f_triggerClaMessage(
                            md_CLA_TCs( 
                                vc_sessionId,
                                md_claBodyAvps_TC_08
                            ) // End of md_CLA_TCs
                        );
                        repeat
                }
                [v_recvSteps == 1] MME_S6a.receive(                         // and, the IUT sends a UL-Answer to new MME 
                    mw_mmeUpdateLocationAnswer(
                        mdw_ULA_TCs( 
                            ?,
                            mdw_ulaBodyAvps_TC_08
                    ))) -> value v_result { // Expected UL-Answer message 
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                        log("*** " & __SCOPE__ & ": PASS: Expected UL-Answer was received. ***");
                }
                [] MME_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_HSS();
@@ -731,9 +859,12 @@ module DiameterS6a_HSS_TCFunctions {
            
        } // End of TC function f_TC_HSS_UL_11
        
        /**
         * @desc    Verify that the IUT can successfully process all required AVPs in a UL-Answer when the APN-Configuration-Profile AVP is present in the Subscription-Data AVP
         */
        function f_TC_HSS_UL_12() runs on TestAdapter {
            
            // Local variables
            var DIAMETER_MSG v_result;
            
            // Preamble
            f_preamble_HSS();
@@ -741,9 +872,38 @@ module DiameterS6a_HSS_TCFunctions {
            log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***");
            
            // Test Body
            // Clause 'when'
            // Clause 'when': the IUT receives a UL-Request
            f_triggerUlrMessage(
                md_ULR_TCs( 
                    vc_sessionId, 
                    md_ulrBodyAvps_TC_12
                ) // End of md_ULR_TCs
            );
            
            // Clause 'then'
            // Clause 'then': the IUT sends a UL-Answer
            tc_ac.start;
            alt {
                [] MME_S6a.receive( 
                    mw_mmeUpdateLocationAnswer(
                        mdw_ULA_TCs( 
                            ?,
                            mdw_ulaBodyAvps_TC_12( 
                                mdw_subscriptionData_aPN_Configuration_Profile(         // containing a Subscription-Data AVP
                                    mw_operator_Determined_Barring(                     //    indicating OPERATOR_DETERMINED_BARRING
                                        ?                                               // (containing an Operator-Determined-Barring AVP or
                                    ),
                                    mw_hplmn_ODB(
                                        ?                                               // or containing an HPLMN-ODB AVP)
                                    )
                ))))) -> value v_result { // Expected UL-Answer message 
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    log("*** " & __SCOPE__ & ": PASS: Expected UL-Answer message 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_HSS();
@@ -753,10 +913,13 @@ module DiameterS6a_HSS_TCFunctions {
        } // End of TC function f_TC_HSS_UL_12
        
        function f_TC_HSS_UL_13() runs on TestAdapter {
            
            // Local variables
            var DIAMETER_MSG v_result;
            
            // Preamble
            f_preamble_HSS();
            f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***");
            
            // Test Body
            // Clause 'when'
@@ -764,6 +927,9 @@ module DiameterS6a_HSS_TCFunctions {
            // Clause 'then'
            
            // Postamble
            f_postamble_HSS();
            f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            
        } // End of TC function f_TC_HSS_UL_13
        
+10 −1
Original line number Diff line number Diff line
@@ -19,12 +19,17 @@

    // LibDiameter
    import from LibDiameter_TypesAndValues {
        type DIAMETER_MSG
        type DIAMETER_MSG;
        const c_applIdS6a
    };
    import from LibDiameter_Types_S6a_AVPs {
        type 
            ULR_MSG, CLA_MSG
    };
    import from LibDiameter_Steps {
        function 
            f_preambleDiameterBaseClient, f_preambleDiameterBaseServer
    };
    
    // DiameterS6a
    import from DiameterS6a_PIXITS {
@@ -110,6 +115,8 @@
                
                // Activate defaults
                activate( a_mme_default( ) );
                
//                f_preambleDiameterBaseServer(c_applIdS6a); // MME ats as the server
            } // End of function f_preamble_MME
        
        } // End of group mmeRole
@@ -122,6 +129,8 @@
                
                // Activate defaults
                activate( a_hss_default( ) );
                
//                f_preambleDiameterBaseClient(c_applIdS6a); // HSS acts as the client
            } // End of function f_preamble_HSS
        
        } // End of group hssRole
+4 −5
Original line number Diff line number Diff line
@@ -1628,11 +1628,10 @@ module DiameterS6a_Templates {
                 */
                group t_TC_HSS_UL_12 {
                    
                    template (value) Subscription_Data_AVP md_Subscription_Data_aPN_Configuration_Profile(
                                                                                           in template (value) APN_Configuration_Profile_AVP p_aPN_Configuration_Profile
                    ) modifies m_subscriptionData_dummy := {
                        aPN_Configuration_Profile := p_aPN_Configuration_Profile
                    } // End of tempate md_Subscription_Data_aPN_Configuration_Profile
                    /**
                     * @desc Send ULR template 
                     */
                    template (value) ULR_Body_AVP md_ulrBodyAvps_TC_12 := md_ulrBodyAvps_TC_03(m_user_Name(PX_INVALID_USR_NAME)); // End of template md_ulrBodyAvps_TC_12
                    
                } // End of group t_TC_HSS_UL_12