Commit 5f820b8e authored by garciay's avatar garciay
Browse files

Implementation of Cx_HSSEH completed

parent a6a99fee
Loading
Loading
Loading
Loading
+110 −32
Original line number Diff line number Diff line
@@ -3541,8 +3541,7 @@ module DiameterCxDx_Cx_TCFunctions {
                    // Clause 'Initial conditions'
                    f_preamble_HSS();
                    f_registratonCx(); 
                    vc_userName := m_userName(PX_OtherUserName);
                    f_registratonCx(); // A user with several private user identities is properly registered
                    f_registratonCx(PX_OtherUserName); // A user with several private user identities is properly registered
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // Test Body
@@ -3820,8 +3819,7 @@ module DiameterCxDx_Cx_TCFunctions {
                    // Clause 'Initial conditions'
                    f_preamble_HSS();
                    f_registratonCx(); 
                    vc_userName := m_userName(PX_OtherUserName);
                    f_registratonCx(); // A user with several private user identities is properly registered
                    f_registratonCx(PX_OtherUserName); // A user with several private user identities is properly registered
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // Test Body
@@ -3894,8 +3892,8 @@ module DiameterCxDx_Cx_TCFunctions {
                    
                    // Preamble
                    // Clause 'Initial conditions'
                    f_registratonCx(); 
                    f_preamble_HSS();
                    f_registratonCx(); 
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // Test Body
@@ -3971,8 +3969,8 @@ module DiameterCxDx_Cx_TCFunctions {
                    
                    // Preamble
                    // Clause 'Initial conditions'
                    f_registratonCx(); 
                    f_preamble_HSS();
                    f_registratonCx(); 
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // Test Body
@@ -4053,8 +4051,8 @@ module DiameterCxDx_Cx_TCFunctions {
                    
                    // Preamble
                    // Clause 'Initial conditions'
                    f_registratonCx(); 
                    f_preamble_HSS();
                    f_registratonCx(); 
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // Test Body
@@ -4136,8 +4134,8 @@ module DiameterCxDx_Cx_TCFunctions {
                    
                    // Preamble
                    // Clause 'Initial conditions'
                    f_registratonCx(); 
                    f_preamble_HSS();
                    f_registratonCx(); 
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // Test Body
@@ -4206,8 +4204,8 @@ module DiameterCxDx_Cx_TCFunctions {
                    
                    // Preamble
                    // Clause 'Initial conditions'
                    f_registratonCx(); 
                    f_preamble_HSS();
                    f_registratonCx(); 
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // Test Body
@@ -4274,9 +4272,9 @@ module DiameterCxDx_Cx_TCFunctions {
                    
                    // Preamble
                    // Clause 'Initial conditions'
                    f_preamble_HSS();
                    vc_userName := m_userName(PX_UserName);
                    f_registratonCx(); 
                    f_preamble_HSS();
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // Test Body
@@ -4341,9 +4339,8 @@ module DiameterCxDx_Cx_TCFunctions {
                    
                    // Preamble
                    // Clause 'Initial conditions'
                    vc_userName := m_userName(PX_UserName);
                    f_registratonCx(); 
                    f_preamble_HSS();
                    f_registratonCx(PX_UserName); 
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // Test Body
@@ -4408,8 +4405,8 @@ module DiameterCxDx_Cx_TCFunctions {
                    
                    // Preamble
                    // Clause 'Initial conditions'
                    f_registratonCx(); 
                    f_preamble_HSS();
                    f_registratonCx(); 
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // Test Body
@@ -4474,8 +4471,8 @@ module DiameterCxDx_Cx_TCFunctions {
                    
                    // Preamble
                    // Clause 'Initial conditions'
                    f_registratonCx(); 
                    f_preamble_HSS();
                    f_registratonCx(); 
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // Test Body
@@ -4531,8 +4528,8 @@ module DiameterCxDx_Cx_TCFunctions {
                    
                    // Preamble
                    // Clause 'Initial conditions'
                    f_registratonCx(); 
                    f_preamble_HSS();
                    f_registratonCx(); 
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // Test Body
@@ -4589,8 +4586,8 @@ module DiameterCxDx_Cx_TCFunctions {
                    
                    // Preamble
                    // Clause 'Initial conditions'
                    f_registratonCx(); 
                    f_preamble_HSS();
                    f_registratonCx(); 
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // Test Body
@@ -4658,8 +4655,8 @@ module DiameterCxDx_Cx_TCFunctions {
                    
                    // Preamble
                    // Clause 'Initial conditions'
                    f_registratonCx(); 
                    f_preamble_HSS();
                    f_registratonCx(); 
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // Test Body
@@ -4731,8 +4728,8 @@ module DiameterCxDx_Cx_TCFunctions {
                    
                    // Preamble
                    // Clause 'Initial conditions'
                    f_registratonCx(); 
                    f_preamble_HSS();
                    f_registratonCx(); 
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // Test Body
@@ -4751,9 +4748,7 @@ module DiameterCxDx_Cx_TCFunctions {
                                DiameterCxDx_Templates.m_sIPAuthDataItem(// containing a SIP-Auth-Data-Item AVP
                                    m_sIPAuthenticationScheme_digest,   //     containing a SIP-Authentication-Scheme AVP
                                                                        //         indicating “Digest-AKAv1-MD5”
                                    m_sIPItemNumber(
                                        PIXIT_SIP_ITEM_NUMBER
                                    ),
                                    -,
                                    -,
                                    -,
                                    omit                                // not containing SIP-Authentication-Context
@@ -4808,12 +4803,93 @@ module DiameterCxDx_Cx_TCFunctions {
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                } // End of function f_TC_CX_HSS_EH_01_I_S
                
                /*
                 * @desc    Verify that the IUT in case of MA-Request reception including a new S-CSCF name, which is not the same as the previously assigned S-CSCF and IMS Restoration Procedure is supported than IUT shall send appropriate RT-Request to the old S-CSCF
                 */
                function f_TC_CX_HSS_EH_02_I_S() runs on DiameterCx {
                    
                    // Local variables
                    
                    // Preamble
                    // Clause 'Initial conditions'
                    f_preamble_HSS();
                    f_registratonCx(); 
                    action("The current S-CSCF is stopped");
                    vc_serverName := m_serverName(PX_OtherServerName);
                    f_initialRegistratonCx(); // Initiate a Re-registration procedure
                    f_s_SAR_SAA();
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // Test Body
                    // Clause 'when': the IUT receives a MA-Request
                    f_send_MAR(
                        m_MAR_Msg(
                            vc_sessionId,
                            m_MAR_withServerName(
                                vc_originHost,
                                vc_originRealm,
                                vc_destinationRealm,
                                vc_userName,
                                vc_publicIdentity,
                                m_sIPNumberAuthItems(1),                // containing a SIP-Number-Auth-Items AVP
                                                                        //     indicating the number of authentication vectors requested
                                DiameterCxDx_Templates.m_sIPAuthDataItem(// containing a SIP-Auth-Data-Item AVP
                                    m_sIPAuthenticationScheme_digest,   //     containing a SIP-Authentication-Scheme AVP
                                                                        //         indicating “Digest-AKAv1-MD5”
                                    -,
                                    -,
                                    -,
                                    omit                                // not containing SIP-Authentication-Context
                                ),
                                vc_serverName                           // containing a Server-Name AVP
                                                                        //     indicating S-CSCF name
                    )));
                    // Clause 'then': the IUT sends an RT-Request to old S-CSCF and sends an MA-Answer to new S_CSCF
                    f_send_RTR(
                        m_RTR_Msg(
                            vc_sessionId,
                            m_RTR_wo_VSAId (
                                vc_originHost,
                                vc_originRealm,
                                m_destinationHost(                      // containing a Destination-Host AVP
                                    PX_ServerName                       //     indicating the previous S-CSCF name
                                ),
                                vc_destinationRealm,
                                vc_userName,
                                m_deregistrationReason(                 // containing a Deregistration-Reason AVP
                                    m_reasonCode(
                                        NEW_SERVER_ASSIGNED_E           //     indicating NEW_SERVER_ASSIGNED
                    )))));
                    f_awaiting_MAA( 
                        mw_MAA_Msg(
                            vc_sessionId,
                            mw_MAA_ResulExpreUsrnaSipauthSrvna(
                                mw_resultCode(                              // containing a Result-Code AVP
                                    DIAMETER_SUCCESS_E                      //     indicating DIAMETER_SUCCESS
                                ),
                                omit,                                       // not containing an Experimental-Result AVP
                                vc_userName,
                                mw_sIPNumberAuthItems,                      // containing a SIP-Number-Auth-Items AVP
                                                                            //     indicating the number of vectors delivered
                                ?,
                                vc_serverName                               // containing a Server-Name AVP
                                                                            //     indicating the new S-CSCF name
                    )));
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    
                    // Postamble
                    f_deRegistratonCx();
                    f_postamble_HSS();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                } // End of function f_TC_CX_HSS_EH_02_I_S
                
            } // group TP_HSSRole_EH
            
        } // group TP_HSSRole    
        
        group TP_CSCFRole{ // §5.2.1.2
            group TP_CSCFRole_MS {//Cx Messages
            
                function f_TC_CX_CSCF_MS_01_HSS() runs on DiameterCx {
                    // Local variables
                    // Preamble
@@ -5477,9 +5553,11 @@ module DiameterCxDx_Cx_TCFunctions {

                    f_send_RTR(m_RTR_Msg(vc_sessionId,
                                         m_RTR_basic
                                         (vc_originHost, vc_originRealm,
                                         (vc_originHost, 
                                         vc_originRealm,
                                          vc_destinationHost,
                                          vc_destinationRealm, vc_userName,
                                          vc_destinationRealm, 
                                          vc_userName,
                                          m_deregistrationReason
                                          (// containing a Deregistration-Reason
                                           // AVP
+112 −0
Original line number Diff line number Diff line
@@ -4823,6 +4823,118 @@ module DiameterCxDx_TestCases
                    f_cf_1CxDown_HSS(v_diameterComponent_hss);
                } // End of TC_CX_HSS_EH_01
                
                /**
                 * @desc    Verify that the IUT in case of MA-Request reception including a new S-CSCF name, which is not the same as the previously assigned S-CSCF and IMS Restoration Procedure is supported than IUT shall send appropriate RT-Request to the old S-CSCF
                 * <pre>
                 * Pics Selection: PICS_HSS_IUT and PICS_DIGEST_AKAv1_MD5_AUTH_PROCS
                 * Initial conditions: 
                 *     with {
                 *        The user is successfully registered
                 *        The current S-CSCF is stopped
                 *        The user is also registered on the new S-CSCF
                 *        Initiate a Re-registration procedure
                 *     }
                 * Expected behaviour:
                 *     ensure that {
                 *        when {
                 *            the IUT receives a MA-Request from new S-CSCF
                 *                containing a Server-Name AVP
                 *                   indicating an S-CSCF name different than the previous one
                 *        }
                 *        then {
                 *            the IUT sends an RT-Request to old S-CSCF
                 *                containing a Destination-Host AVP
                 *                    indicating the previous S-CSCF name
                 *                containing a Deregistration-Reason AVP
                 *                    indicating NEW_SERVER_ASSIGNED
                 *            the IUT sends a MA-Answer 
                 *                containing a Server-Name AVP
                 *                    indicating the new S-CSCF name
                 *        }
                 *     }
                 * </pre>
                 * 
                 * @version    0.0.8
                 * @see        ETSI DTS/INT-00103-2 V0.0.8 (2014-11) TP_CX_HSS_EH_02
                 */
                testcase TC_CX_HSS_EH_02() runs on DiameterCx system TestAdapter {
                    // Local variables
                    var DiameterCx v_diameterComponent_hss;
                    
                    // Test control
                    if (not PICS_HSS_IUT or not PICS_DIGEST_AKAv1_MD5_AUTH_PROCS) {
                        log("*** " & __SCOPE__ & ": ERROR: 'PICS_HSS_IUT and PICS_DIGEST_AKAv1_MD5_AUTH_PROCS' required for executing the TC. ***"); 
                        stop;
                    }
                    
                    // Test component configuration
                    f_cf_1CxUp_HSS(v_diameterComponent_hss);
                    
                    // Start
                    v_diameterComponent_hss.start(f_TC_CX_HSS_EH_02_I_S());
                    
                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClients(1, {c_prDone, c_tbDone, c_poDone});
                    
                    f_cf_1CxDown_HSS(v_diameterComponent_hss);
                } // End of TC_CX_HSS_EH_02
                
                /**
                 * @desc    Verify that the IUT in case of MA-Request reception including a new S-CSCF name, which is not the same as the previously assigned S-CSCF and IMS Restoration Procedure is not supported than IUT shall send appropriate RT-Request to the old S-CSCF.
                 * <pre>
                 * Pics Selection: Not PICS_HSS_IMS_RESTORATION_PROCS and PICS_HSS_IUT and PICS_DIGEST_AKAv1_MD5_AUTH_PROCS
                 * Initial conditions: 
                 *     with {
                 *        The user is successfully registered
                 *        The current S-CSCF is stopped
                 *        The user is also registered on the new S-CSCF
                 *        Initiate a Re-registration procedure
                 *     }
                 * Expected behaviour:
                 *     ensure that {
                 *        when {
                 *            the IUT receives a MA-Request
                 *                containing a Server-Name AVP
                 *                   indicating an S-CSCF name different than the previous one
                 *        }
                 *        then {
                 *            the IUT sends an RT-Request to old S-CSCF
                 *                containing a Destination-Host AVP
                 *                    indicating the previous S-CSCF name
                 *                containing a Deregistration-Reason AVP
                 *                    indicating NEW_SERVER_ASSIGNED
                 *            the IUT sends a MA-Answer 
                 *                containing a Server-Name AVP
                 *                    indicating the new S-CSCF name
                 *        }
                 *     }
                 * </pre>
                 * 
                 * @version    0.0.8
                 * @see        ETSI DTS/INT-00103-2 V0.0.8 (2014-11) TP_CX_HSS_EH_03
                 */
                testcase TC_CX_HSS_EH_03() runs on DiameterCx system TestAdapter {
                    // Local variables
                    var DiameterCx v_diameterComponent_hss;
                    
                    // Test control
                    if (PICS_HSS_IMS_RESTORATION_PROCS or not PICS_HSS_IUT or not PICS_DIGEST_AKAv1_MD5_AUTH_PROCS) {
                        log("*** " & __SCOPE__ & ": ERROR: 'Not PICS_HSS_IMS_RESTORATION_PROCS and PICS_HSS_IUT and PICS_DIGEST_AKAv1_MD5_AUTH_PROCS' required for executing the TC. ***"); 
                        stop;
                    }
                    
                    // Test component configuration
                    f_cf_1CxUp_HSS(v_diameterComponent_hss);
                    
                    // Start
                    v_diameterComponent_hss.start(f_TC_CX_HSS_EH_02_I_S()); // Only PICS changed
                    
                    // synchronize PTC on 1 sychronization points
                    f_serverSyncNClients(1, {c_prDone, c_tbDone, c_poDone});
                    
                    f_cf_1CxDown_HSS(v_diameterComponent_hss);
                } // End of TC_CX_HSS_EH_03
                
            } // group TP_HSSRole_EH
            
        } // group TP_HSSRole 
+9 −2
Original line number Diff line number Diff line
@@ -120,6 +120,14 @@ module DiameterCxDx_TestControl {
            execute(TC_CX_HSS_MA_10());
            execute(TC_CX_HSS_MA_11());
            execute(TC_CX_HSS_MA_12());
            
            if (PICS_DIGEST_AKAv1_MD5_AUTH_PROCS) {
                execute(TC_CX_HSS_EH_01());
                execute(TC_CX_HSS_EH_02());
                if (not PICS_HSS_IMS_RESTORATION_PROCS) {
                    execute(TC_CX_HSS_EH_03());
                }
            }
        }
        
        if (PICS_SCSCF_IUT) {
@@ -129,7 +137,6 @@ module DiameterCxDx_TestControl {
        execute(TC_DX_SLF_UA_01());
        execute(TC_DX_CSCF_UA_01());
        
        
    }// end module DiameterCx_TestCases    } // End of 'Control' statement
    } // End of 'Control' statement
    
} // End of module DiameterCx_TestControl 
 No newline at end of file