Commit 576c5125 authored by wattelet's avatar wattelet
Browse files

HSS_UL_08 with 2 MME components

parent 26a9ec2d
Loading
Loading
Loading
Loading
+60 −15
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ module DiameterS6a_HSS_TCFunctions {
    import from DiameterS6a_PIXITS all;
    import from DiameterS6a_Steps {
        function 
            f_preamble_HSS, f_postamble_HSS, f_init_sendULR_awaitULA; 
            f_preamble_HSS, f_preamble_HSS2, f_postamble_HSS, f_init_sendULR_awaitULA; 
        altstep a_hss_default
    };
    
@@ -466,8 +466,8 @@ module DiameterS6a_HSS_TCFunctions {
        function f_TC_HSS_UL_08() runs on DiameterComponent {
            
            // 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 
            const charstring c_sync1 := "sync1";
            const charstring c_sync2 := "sync2";

            // Preamble
            f_preamble_HSS();
@@ -487,14 +487,19 @@ module DiameterS6a_HSS_TCFunctions {
                        m_userName(PX_USR_NAME),
                        m_rAT_Type(PX_RAT_TYPE),
                        md_ulr_Flags_AVP(2),
                        md_visitedPLMNId(                                           // from new MME
                            PX_NEW_VISITED_PLMN_ID
                        m_visitedPLMNId_dummy
                        ) 
                    ) // End of md_ulrBodyAvps
                ) // End of md_ULR
            );
            
                
            f_awaiting_ULA( mdw_ULA( 
                        ?,
                        mw_S6a_ULA_Body_dummy
            ));

            // Clause 'then': 
            f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
            f_awaiting_CLR( mdw_CLR( 
                            ?,
                            mdw_clrBodyAvps_cancellation_Type( 
@@ -502,6 +507,7 @@ module DiameterS6a_HSS_TCFunctions {
                                                                                    //     indicating MME_UPDATE_PROCEDURE
            ))); 
            
            f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Trigger  CL-Answer. ***");
            f_send_CLA(
                md_CLA( 
@@ -510,11 +516,51 @@ module DiameterS6a_HSS_TCFunctions {
                ) // End of md_CLA
            );
            
            f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
        
            // Postamble
            f_postamble_HSS();
            f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            
        } // End of TC function f_TC_HSS_UL_08
        /**
         * @desc    Verify that the IUT when UL Request is received over S6a shall send CL Request to the previous old MME
         */
        function f_TC_HSS_UL_08_NewMME() runs on DiameterComponent {

            // Local variables
			const charstring c_sync1 := "sync1";
            const charstring c_sync2 := "sync2";

            // Preamble
            f_preamble_HSS2();
            f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
            
            // Test Body
            f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());
            f_send_ULR(
                md_ULR( 
                    vc_sessionId2,
                    md_ulrBodyAvps(
                        md_auth_Session_State_noStateMaintained,
                        vc_originHost2,
                        vc_originRealm,
                        vc_destinationRealm,
                        m_userName(PX_USR_NAME),
                        m_rAT_Type(PX_RAT_TYPE),
                        md_ulr_Flags_AVP(2),
                        m_visitedPLMNId_dummy
                    ) // End of md_ulrBodyAvps
                ) // End of md_ULR
            );
        
            f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());
            f_awaiting_ULA( mdw_ULA( 
                        ?,
                        mw_S6a_ULA_Body_dummy
            ));
            
            f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
        
            // Postamble
@@ -522,7 +568,7 @@ module DiameterS6a_HSS_TCFunctions {
            f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
            log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            
        } // End of TC function f_TC_HSS_UL_08
        } // End of TC function f_TC_HSS_UL_08_OldMME
        
        /**
         * @desc    Verify that the IUT when UL Request is received over S6a shall send CL Request to the previous old SGSN
@@ -542,7 +588,7 @@ module DiameterS6a_HSS_TCFunctions {
            // Clause 'when': the IUT receives a UL-Request
            f_send_ULR(
                md_ULR( 
                    vc_sessionId,
                    vc_sessionId2,
                    md_ulrBodyAvps(
                        md_auth_Session_State_noStateMaintained,
                        vc_originHost,
@@ -2840,10 +2886,9 @@ module DiameterS6a_HSS_TCFunctions {
                            vc_sessionId,                                           // containing a Session-ID AVP
                            mdw_aiaBodyAvps_result_Code_authentication_Info( 
                                mw_resultCode(DIAMETER_SUCCESS_E),                  // containing a Result-Code AVP indicating DIAMETER_SUCCESS
                                (mdw_authentication_Info_UTRAN_Vectors(              // containing an authentication_Info AVP
                                    superset(mw_UTRAN_Vector_dummy)),
                                mdw_authentication_Info_GERAN_Vectors(              // containing an authentication_Info AVP
                                    superset(mw_GERAN_Vector_dummy))
                                ( (              // containing an authentication_Info AVP
                                mdw_authentication_Info_UTRAN_Vectors(superset(mw_UTRAN_Vector_dummy)),
                                mdw_authentication_Info_GERAN_Vectors(superset(mw_GERAN_Vector_dummy)))
            ))));
            
            f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
+18 −3
Original line number Diff line number Diff line
@@ -39,6 +39,11 @@ module DiameterS6a_PIXITS {
		 */
		modulepar charstring PX_DIAMETER_S6a_ETS_IPADDR := "192.168.42.1";
        
        /**
         * @desc second IP address of the test system
         */
        modulepar charstring PX_DIAMETER_S6a_ETS_IPADDR2 := "192.168.42.3";
        
        /**
         * @desc IP address of the system under test
         * @see  ETSI DTS/INT-094-1 V0.0.3 (2013-11) A.7/2 
@@ -51,6 +56,11 @@ module DiameterS6a_PIXITS {
         */
        modulepar integer PX_DIAMETER_S6a_ETS_PORT := 1300;
        
        /**
         * @desc Second Port number of the test system
         */
        modulepar integer PX_DIAMETER_S6a_ETS_PORT2 := 1302;
        
        /**
         * @desc Port number of the system under test
         * @see  ETSI DTS/INT-094-1 V0.0.3 (2013-11) A.7/4 
@@ -104,6 +114,11 @@ module DiameterS6a_PIXITS {
         */
        modulepar UTF8String PX_SESSION_ID := "sessionId";
        
        /**
         * @desc The Session-Id identifying another specific session
         */
        modulepar UTF8String PX_SESSION_ID2 := "sessionId2";
        
        /**
         * @desc The Origin-Host identifying the endpoint that originates the Diameter messages
         * @see  ETSI DTS/INT-094-1 V0.0.3 (2013-11) A.7/6 
+29 −16
Original line number Diff line number Diff line
@@ -20,18 +20,8 @@
        const c_applIdS6a
    };
    import from LibDiameter_Types_S6a_AVPs all;

    import from LibDiameter_Templates  {
        template    
        m_originHost, m_originRealm, m_sessionId, m_destinationHost, m_destinationRealm, m_userName,
        mw_DWR_dummy, m_DWA_basic;
    };
    import from LibDiameter_Steps {
        function 
            f_preambleDiameterBaseClient, f_preambleDiameterBaseServer, f_IPV4or6_String2Address, 
            f_send_ULR, f_send_ULA, f_awaiting_ULR, f_awaiting_ULA, f_send_DWA,
            f_postambleDiameterBase;
    };
    import from LibDiameter_Templates all;
    import from LibDiameter_Steps all;
    import from LibDiameter_Interface {
        type 
            DiameterComponent 
@@ -51,12 +41,15 @@
        runs on DiameterComponent {

			vc_ETS_address := PX_DIAMETER_S6a_ETS_IPADDR;
            vc_ETS_address2 := PX_DIAMETER_S6a_ETS_IPADDR2;
			vc_ETS_port    := PX_DIAMETER_S6a_ETS_PORT;
            vc_ETS_port2    := PX_DIAMETER_S6a_ETS_PORT2;
            vc_SUT_address := PX_DIAMETER_S6a_SUT_IPADDR;
            vc_SUT_port    := PX_DIAMETER_S6a_SUT_PORT;
            
            // Initialize component variables 
			vc_sessionId := m_sessionId(PX_SESSION_ID);
            vc_sessionId2 := m_sessionId(PX_SESSION_ID2);
            vc_originHost := m_originHost(PX_ORIGIN_HOST);
            vc_originRealm := m_originRealm(PX_ORIGIN_REALM); 
            
@@ -71,6 +64,7 @@
            
            
			vc_hostIPAddress := valueof(f_IPV4or6_String2Address (PX_DIAMETER_S6a_ETS_IPADDR));
            vc_hostIPAddress2 := valueof(f_IPV4or6_String2Address (PX_DIAMETER_S6a_ETS_IPADDR2));

            vc_send_hopid:= 4; //hex2int('00000100'H);
            vc_send_endid:= 1048575; //hex2int('01000000'H);
@@ -196,6 +190,25 @@
                f_preambleDiameterBaseClient(c_applIdS6a); // HSS acts as the server
            } // End of function f_preamble_HSS

			/**
			 * @desc Preamble for New MME
			 */
			function f_preamble_HSS2() runs on DiameterComponent {
				// Connect client sync port
				f_connect4SelfOrClientSync();
                
				// Initialilize the component's variables' 
				f_DiameterS6a_init();
                
				// Activate defaults
				activate( a_hss_default( ) );
                
                f_send_CER(m_CER_AppId(vc_originHost2, vc_originRealm, vc_hostIPAddress2, c_applIdS6a));
                f_awaiting_CEA(mw_CEA_dummy);
                f_send_DWR(m_DWR_basic(vc_originHost2, vc_originRealm));
                f_awaiting_DWA(mw_DWA_dummy);
        }
        
        } // End of group hssRole
        
    } // End of group Preambles
+17 −11
Original line number Diff line number Diff line
@@ -2544,6 +2544,9 @@ module DiameterS6a_TestCases {
            testcase TC_HSS_UL_08() runs on DiameterS6a system TestAdapter {
                // Local variables
                var DiameterComponent v_diameterS6a_mme; 
                var DiameterComponent v_diameterS6a_mme2; 
                const charstring c_sync1 := "sync1";
                const charstring c_sync2 := "sync2";
                
                // Test control
                if (not PICS_HSS_IUT or not PICS_IUT_HLR) {
@@ -2552,15 +2555,16 @@ module DiameterS6a_TestCases {
                }
                
                // Test component configuration
                f_cf_2S6aUp_HSS(v_diameterS6a_mme);
                f_cf_2S6aUp_HSS(v_diameterS6a_mme, v_diameterS6a_mme2);
                
                // Start
				v_diameterS6a_mme.start(f_TC_HSS_UL_08());
                v_diameterS6a_mme.start(f_TC_HSS_UL_08_NewMME());
                
                // synchronize PTC on 3 sychronization points
                f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});
                // synchronize PTC on 5 sychronization points
                f_serverSyncNClientsAndStop(2, {c_prDone, c_sync1, c_sync2, c_tbDone, c_poDone});
                
                f_cf_2S6aDown_HSS(v_diameterS6a_mme);
                f_cf_2S6aDown_HSS();
                
            } // End of testcase TC_HSS_UL_08
            
@@ -2596,6 +2600,7 @@ module DiameterS6a_TestCases {
            testcase TC_HSS_UL_09() runs on DiameterS6a system TestAdapter {
                // Local variables
				var DiameterComponent v_diameterS6a_mme; 
                var DiameterComponent v_diameterS6a_mme2; 
                
                // Test control
                if (not PICS_HSS_IUT or not PICS_IUT_HLR) {
@@ -2604,7 +2609,7 @@ module DiameterS6a_TestCases {
                }
                
                // Test component configuration
                f_cf_2S6aUp_HSS(v_diameterS6a_mme);
                f_cf_2S6aUp_HSS(v_diameterS6a_mme, v_diameterS6a_mme2);
                
                // Start
                v_diameterS6a_mme.start(f_TC_HSS_UL_09());
@@ -2612,7 +2617,7 @@ module DiameterS6a_TestCases {
                // synchronize PTC on 3 sychronization points
                f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});
                
                f_cf_2S6aDown_HSS(v_diameterS6a_mme);
                f_cf_2S6aDown_HSS();
                
            } // End of testcase TC_HSS_UL_09
            
@@ -2649,6 +2654,7 @@ module DiameterS6a_TestCases {
            testcase TC_HSS_UL_10() runs on DiameterS6a system TestAdapter {
                // Local variables
				var DiameterComponent v_diameterS6a_mme; 
                var DiameterComponent v_diameterS6a_mme2; 
                
                // Test control
                if (not PICS_HSS_IUT or not PICS_IUT_HLR) {
@@ -2657,7 +2663,7 @@ module DiameterS6a_TestCases {
                }
                
                // Test component configuration
                f_cf_2S6aUp_HSS(v_diameterS6a_mme);
				f_cf_2S6aUp_HSS(v_diameterS6a_mme, v_diameterS6a_mme2);
                
                // Start
                v_diameterS6a_mme.start(f_TC_HSS_UL_10());
@@ -2665,7 +2671,7 @@ module DiameterS6a_TestCases {
                // synchronize PTC on 3 sychronization points
                f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone});
                
                f_cf_2S6aDown_HSS(v_diameterS6a_mme);
                f_cf_2S6aDown_HSS();
                
            } // End of testcase TC_HSS_UL_10
            
+4 −5
Original line number Diff line number Diff line
@@ -98,12 +98,12 @@ module DiameterS6a_TestConfiguration {
         * @param v_diameterS6a_mme Component instance for HSS IUT role
         */
        function f_cf_2S6aUp_HSS (
                                  out DiameterComponent v_diameterS6a_mme//,
                                  //out DiameterComponent v_diameterS6a_mme2
                                  out DiameterComponent v_diameterS6a_mme,
                                  out DiameterComponent v_diameterS6a_mme2
        ) runs on DiameterS6a system TestAdapter {
            //     Create
            v_diameterS6a_mme := DiameterComponent.create;
            //v_diameterS6a_mme2 := DiameterComponent.create;
            v_diameterS6a_mme2 := DiameterComponent.create;
            // Map port
            map( v_diameterS6a_mme:DIAMP, system:MME_S6a );
            //map( v_diameterS6a_mme2:DIAMP, system:MME_S6a2 );  
@@ -165,7 +165,6 @@ module DiameterS6a_TestConfiguration {
         * @param v_diameterS6a_mme diameter component
         */
        function f_cf_2S6aDown_HSS( 
                                   in DiameterComponent v_diameterS6a_mme
        ) runs on DiameterS6a  {
            // Deactivte all
            deactivate;