Commit 50af84ac authored by filatov's avatar filatov
Browse files

CSCF role UAR/UAA done

parent 6f09aa38
Loading
Loading
Loading
Loading
+325 −6
Original line number Diff line number Diff line
@@ -5,24 +5,39 @@
 *              for IMS-DIAMETER tests.
 */
module DiameterCxDx_Cx_TCFunctions {
    import from LibIms_Interface {type ImsComponent;}

    // LibCommon
    import from LibCommon_Sync {function f_selfOrClientSyncAndVerdict;
                                const c_prDone, c_tbDone, c_poDone;}
    import from LibCommon_Sync {
        function f_selfOrClientSyncAndVerdict;
        const c_prDone, c_tbDone, c_poDone;
    }
    import from LibCommon_VerdictControl all;

    // LibDiameter
    import from LibDiameter_Types_CxDx_AVPs all;
    import from LibDiameter_TypesAndValues all;
    import from LibDiameter_TypesAndValues {
        const
            c_public_Identity_AVP_Code,
            c_vendor_Specific_Appl_Id_AVP_Code,
            c_visited_Network_Identifier_AVP_Code;
    }
    import from LibDiameter_Templates all;
    import from LibDiameter_Interface all;
    import from LibDiameter_Steps all;
    import from LibDiameter_Types_Base_AVPs all;
    import from LibDiameter_Types_Base_AVPs {
        type
            Auth_Session_State_Type,
            Experimental_Result_Type,
            Result_Code_Type,
            SIP_Reason_Code_Type;
    }
    
    //DiameterCx
    import from DiameterCxDx_Templates all;
    import from DiameterCxDx_Steps all;
    import from DiameterCxDx_PIXITS all;
    import from DiameterCxDx_TestSystem all;
    import from DiameterCxDx_TestSystem {type DiameterCx;}
    
    group TP_Cx {
        
@@ -2534,6 +2549,7 @@ module DiameterCxDx_Cx_TCFunctions {
                                                                //     indicating any deregistration reason
                                    mw_reason_Code_AVP
                    ))));
                    //TODO: DF: Are you sure this is 'awaiting'?
                    f_awaiting_RTA(
                        mw_RTA_Msg(
                            vc_sessionId, 
@@ -3412,10 +3428,313 @@ module DiameterCxDx_Cx_TCFunctions {
        
        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
					// Clause 'Initial conditions'
					f_preamble_HSS();
					f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
					// Test Body
					// Clause 'when': the IUT receives a RT-Request
                    
                    f_send_RTR(
                        m_RTR_Msg(
                            vc_sessionId,                       // containing a Session-ID AVP
                            m_RTR_wo_VSAId (
                                vc_originHost,
                                vc_originRealm,
                                vc_destinationHost,
                                vc_destinationRealm,
                                vc_userName,                    // containing a User-Name AVP
                                                                //     indicating the private user identity
                                m_deregistrationReason(         // containing a Deregistration-Reason AVP
                                                                //     indicating any deregistration reason
                                    m_reasonCode(PERMANENT_TERMINATION_E)
                    ))));
                    f_awaiting_RTA(
                        mw_RTA_Msg(
                            vc_sessionId,
					        mw_RTA_ResulExpreFailedAVP (
					            mw_resultCode(                     // containing a Result-Code AVP
									DIAMETER_MISSING_AVP_E ),      //     indicating DIAMETER_MISSING_AVP_E  
                                omit,
                                c_vendor_Specific_Appl_Id_AVP_Code // containing a Failed AVP
                                                                   //     indicating missing AVP
                    )));
					
					f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    
					// Postamble
					// no de-registration needed
					f_postamble_HSS();
					f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
				}
            } // group TP_CSCFRole_MS
            group TP_CSCFRole_UA {//Cx UA
				function f_TC_CX_CSCF_UA_01_UA() runs on ImsComponent {
					// Preamble
					f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // TODO: Send registration message to I-CSCF
					f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    
					// Postamble
					f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
				}
                function f_TC_CX_CSCF_UA_01_HSS() runs on DiameterCx {
                    // Local variables
                    // Preamble
                    // Clause 'Initial conditions'
                    f_preamble_HSS();
                    
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                	
					// Test Body
					// the IUT sends a UA-Request
					f_awaiting_UAR(mw_UAR_Msg(?, mw_UAR(                                    // IUT sends a UA-Request
														?,                                  //   containing an Origin-Host AVP
														?,                                  //   containing an Origin-Realm AVP
														*,                                  //   
														?,                                  //   containing a Destination-Realm AVP
														mw_userName(                        //   containing a User-Name AVP
																	PX_UserName),           //     indicating the private user identity
														mw_publicIdentity(                  //   containing a Public-Identity AVP
																	PX_PublicIdentity),     //     indicating the public user identity to be registered
														mw_visitedNetworkId(                //   containing a Visited-Network-Identifier AVP
																	PX_VisitedNetworkId),   //     indicating the domain name of the visited network
														mw_authSessionState(                //   containing an Auth-Session-State AVP
																	NO_STATE_MAINTAINED_E), //     indicating NO_STATE_MAINTAINED
														mw_userAuthorizationType(           //   containing a User-Authorization-Type AVP
																	REGISTRATION),          //     indicating REGISTRATION
														mw_uARFlag(                         //   containing a UAR-Flags AVP
																	0)                      //     with IMS-Emergency-Registration bit not set
					)));

                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    
                    // Postamble
                    // answer with 
                    // answer with registration error
                    f_send_UAA(m_UAA_Msg(vc_sessionId, m_UAA_basic(vc_originHost, vc_originRealm, m_resultCode(DIAMETER_AUTHENTICATION_REJECTED_E))));
                    
                    f_postamble_HSS();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                }

                function f_TC_CX_CSCF_UA_02_UA() runs on ImsComponent {
                    // Preamble
                    // TODO: Send registration message to CSCF with registration time limited to 10 sec
                    //       Wait 10 sec
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // TODO: Send the second registration message
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    
                    // Postamble
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                }
                
                function f_TC_CX_CSCF_UA_02_HSS() runs on DiameterCx {
                    // Local variables
                    // Preamble
                    // Clause 'Initial conditions'
                    f_preamble_HSS();
                    
                    //waiting for the first registration message                    
                    f_awaiting_UAR(mw_UAR_Msg(?, mw_UAR()));
                    //send a successful respond
                    f_send_UAA(m_UAA_Msg(vc_sessionId, m_UAA_basic(vc_originHost, vc_originRealm, m_resultCode(DIAMETER_SUCCESS_E))));
                    
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // Test Body
                    // the IUT sends a UA-Request
                    f_awaiting_UAR(mw_UAR_Msg(                                           // IUT sends a UA-Request
                                              ?,                                         //   containing Session-ID AVP
                                              mw_UAR(                                    //
                                                     ?,                                  //   containing an Origin-Host AVP
                                                     ?,                                  //   containing an Origin-Realm AVP
                                                     *,                                  //   optional Destination-Host AVP
                                                     ?,                                  //   containing a Destination-Realm AVP
                                                     mw_userName(                        //   containing a User-Name AVP
                                                                 PX_UserName),           //     indicating the private user identity
                                                     mw_publicIdentity(                  //   containing a Public-Identity AVP
                                                                 PX_PublicIdentity),     //     indicating the public user identity to be registered
                                                     mw_visitedNetworkId(                //   containing a Visited-Network-Identifier AVP
                                                                 PX_VisitedNetworkId),   //     indicating the domain name of the visited network
                                                     mw_authSessionState(?),                //   containing an Auth-Session-State AVP
                                                     mw_userAuthorizationType(           //   containing a User-Authorization-Type AVP
                                                                 REGISTRATION),          //     indicating REGISTRATION
                                                     mw_uARFlag(                         //   containing a UAR-Flags AVP
                                                                 0)                      //     with IMS-Emergency-Registration bit not set
                    )));

                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    
                    // Postamble
					// answer with registration error
					f_send_UAA(m_UAA_Msg(vc_sessionId, m_UAA_basic(vc_originHost, vc_originRealm, m_resultCode(DIAMETER_AUTHENTICATION_REJECTED_E))));
                    f_postamble_HSS();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                }

                function f_TC_CX_CSCF_UA_03_UA() runs on ImsComponent {
                    // Preamble
                    // TODO: Send registration message to CSCF
                    //       Wait 5 sec
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // TODO: Send the deregistration message
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    
                    // Postamble
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                }
                
                function f_TC_CX_CSCF_UA_03_HSS() runs on DiameterCx {
                    // Local variables
                    // Preamble
                    // Clause 'Initial conditions'
                    f_preamble_HSS();
                    
                    //waiting for the first registration message                    
                    f_awaiting_UAR(mw_UAR_Msg(?, mw_UAR()));
                    //send a successful respond
                    f_send_UAA(m_UAA_Msg(vc_sessionId, m_UAA_basic(vc_originHost, vc_originRealm, m_resultCode(DIAMETER_SUCCESS_E))));
                    
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // Test Body
                    // the IUT sends a UA-Request
                    f_awaiting_UAR(mw_UAR_Msg(                                           // IUT sends a UA-Request
                                              ?,                                         //   containing Session-ID AVP
                                              mw_UAR(                                    //
                                                     ?,                                  //   containing an Origin-Host AVP
                                                     ?,                                  //   containing an Origin-Realm AVP
                                                     *,                                  //   optional Destination-Host AVP
                                                     ?,                                  //   containing a Destination-Realm AVP
                                                     mw_userName(                        //   containing a User-Name AVP
                                                                 PX_UserName),           //     indicating the private user identity
                                                     mw_publicIdentity(                  //   containing a Public-Identity AVP
                                                                 PX_PublicIdentity),     //     indicating the public user identity to be registered
                                                     mw_visitedNetworkId(                //   containing a Visited-Network-Identifier AVP
                                                                 PX_VisitedNetworkId),   //     indicating the domain name of the visited network
                                                     mw_authSessionState(?),             //   containing an Auth-Session-State AVP
                                                     mw_userAuthorizationType(           //   containing a User-Authorization-Type AVP
                                                                 DE_REGISTRATION),       //     indicating REGISTRATION
                                                     mw_uARFlag(                         //   containing a UAR-Flags AVP
                                                                 0)                      //     with IMS-Emergency-Registration bit not set
                    )));

                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    
                    // Postamble
                    f_send_UAA(m_UAA_Msg(vc_sessionId, m_UAA_basic(vc_originHost, vc_originRealm, m_resultCode(DIAMETER_SUCCESS_E))));
                    f_postamble_HSS();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                }

                function f_TC_CX_CSCF_UA_04_UA() runs on ImsComponent {
                    // Preamble
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // TODO: Send the IMS emergency registration
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    
                    // Postamble
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                }
                
                function f_TC_CX_CSCF_UA_04_HSS() runs on DiameterCx {
                    // Local variables
                    // Preamble
                    // Clause 'Initial conditions'
                    f_preamble_HSS();
                    
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // Test Body
                    // the IUT sends a UA-Request
                    f_awaiting_UAR(mw_UAR_Msg(                                           // IUT sends a UA-Request
                                              ?,                                         //   containing Session-ID AVP
                                              mw_UAR(                                    //
                                                     ?,                                  //   containing an Origin-Host AVP
                                                     ?,                                  //   containing an Origin-Realm AVP
                                                     *,                                  //   optional Destination-Host AVP
                                                     ?,                                  //   containing a Destination-Realm AVP
                                                     mw_userName(                        //   containing a User-Name AVP
                                                                 PX_UserName),           //     indicating the private user identity
                                                     mw_publicIdentity(                  //   containing a Public-Identity AVP
                                                                 PX_PublicIdentity),     //     indicating the public user identity to be registered
                                                     mw_visitedNetworkId(                //   containing a Visited-Network-Identifier AVP
                                                                 PX_VisitedNetworkId),   //     indicating the domain name of the visited network
                                                     mw_authSessionState(?),             //   containing an Auth-Session-State AVP
                                                     mw_userAuthorizationType(           //   containing a User-Authorization-Type AVP
                                                                 DE_REGISTRATION),       //     indicating REGISTRATION
                                                     mw_uARFlag(                         //   containing a UAR-Flags AVP
                                                                 1)                      //     with IMS-Emergency-Registration bit set
                    )));

                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    
                    // Postamble
                    f_send_UAA(m_UAA_Msg(vc_sessionId, m_UAA_basic(vc_originHost, vc_originRealm, m_resultCode(DIAMETER_AUTHENTICATION_REJECTED_E))));
                    f_postamble_HSS();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                }

            } // group TP_CSCFRole_UA
            group TP_CSCFRole_SA {//Cx SA
                function f_TC_CX_CSCF_SA_01_UA() runs on ImsComponent {
                    // Preamble
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // TODO: Send registration message to I-CSCF
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    
                    // Postamble
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                }
                function f_TC_CX_CSCF_SA_01_HSS() runs on DiameterCx {
                    // Local variables
                    // Preamble
                    // Clause 'Initial conditions'
                    f_preamble_HSS();
                    
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
                    
                    // Test Body
                    // the IUT sends a UA-Request
                    f_awaiting_UAR(mw_UAR_Msg(?, mw_UAR(                                    // IUT sends a UA-Request
                                                        ?,                                  //   containing an Origin-Host AVP
                                                        ?,                                  //   containing an Origin-Realm AVP
                                                        *,                                  //   
                                                        ?,                                  //   containing a Destination-Realm AVP
                                                        mw_userName(                        //   containing a User-Name AVP
                                                                    PX_UserName),           //     indicating the private user identity
                                                        mw_publicIdentity(                  //   containing a Public-Identity AVP
                                                                    PX_PublicIdentity),     //     indicating the public user identity to be registered
                                                        mw_visitedNetworkId(                //   containing a Visited-Network-Identifier AVP
                                                                    PX_VisitedNetworkId),   //     indicating the domain name of the visited network
                                                        mw_authSessionState(                //   containing an Auth-Session-State AVP
                                                                    NO_STATE_MAINTAINED_E), //     indicating NO_STATE_MAINTAINED
                                                        mw_userAuthorizationType(           //   containing a User-Authorization-Type AVP
                                                                    REGISTRATION),          //     indicating REGISTRATION
                                                        mw_uARFlag(                         //   containing a UAR-Flags AVP
                                                                    0)                      //     with IMS-Emergency-Registration bit not set
                    )));

                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    
                    // Postamble
                    // answer with 
                    // answer with registration error
                    f_send_UAA(m_UAA_Msg(vc_sessionId, m_UAA_basic(vc_originHost, vc_originRealm, m_resultCode(DIAMETER_AUTHENTICATION_REJECTED_E))));
                    
                    f_postamble_HSS();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
                }
            } // group TP_CSCFRole_SA
            group TP_CSCFRole_RT {//Cx RT
            } // group TP_CSCFRole_RT
+57 −8

File changed.

Preview size limit exceeded, changes collapsed.

+167 −44

File changed.

Preview size limit exceeded, changes collapsed.

+5 −5
Original line number Diff line number Diff line
@@ -3707,7 +3707,7 @@ module DiameterCxDx_TestCases
                runs on DiameterCx
                system TestAdapter {
                    // Local variables
                    var DiameterCx v_diameterComponent_cscf;
                    var DiameterCx v_diameterComponent_hss;
                    var ImsComponent v_imsComponent_ue1;
                    
                    // Test control
@@ -3717,16 +3717,16 @@ module DiameterCxDx_TestCases
                    }
                    
                    // Test component configuration
                    f_cf_1Cx1GmUp_CSCF(v_diameterComponent_cscf, v_imsComponent_ue1);
                    f_cf_1Cx1GmUp_CSCF(v_diameterComponent_hss, v_imsComponent_ue1);
                    
                    //Start
                    //v_diameterComponent_cscf.start(f_TC_CX_CSCF_MS_01()));
                    //v_imsComponent_ue1.start(f_TC_CX_CSCF_MS_01_UE()));
                    v_diameterComponent_hss.start(f_TC_CX_CSCF_MS_01_HSS());
                    //v_imsComponent_ue1.start(f_TC_CX_CSCF_MS_01_UE());
                    
                    // synchronize PTC on 3 sychronization points
                    f_serverSyncNClients(f_NrofCompsCx(),{c_prDone, c_tbDone, c_poDone});
                    
                    f_cf_1Cx1GmDown_CSCF(v_diameterComponent_cscf, v_imsComponent_ue1);
                    f_cf_1Cx1GmDown_CSCF(v_diameterComponent_hss, v_imsComponent_ue1);
                } // End of TC_CX_CSCF_MS_01
                
            } // group TP_CSCFRole_MS