Commit faf1d06a authored by Rennoch's avatar Rennoch
Browse files

first test case using diameter test purposes

parent 2aa353bc
Loading
Loading
Loading
Loading
+80 −0
Original line number Diff line number Diff line
@@ -38,6 +38,9 @@ module AtsImsIot_Behavior {
            m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, 
            mw_contentType 
    };
    import from DiameterS6a_Templates all;
    import from DiameterS6a_PIXITS all;
    import from DiameterGx_Templates all;
	// LibDiameter
    import from LibDiameter_Templates all;
//	import from DiameterRx_Templates all;
@@ -3939,6 +3942,83 @@ group checksTC_IMS_SHARE_0009 {
        
	}//end group checksTC_IMS_SHARE_0009

	group checksTC_VxLTE_INT_ATT_01 {

			 /**
			  * @desc Starts monitor component behavior 
			  * @param p_monitorCompRef Reference to monitor component
			  */
			 function f_mtc_check_TP_S6A_MME_ULR_01(
				 ImsInterfaceMonitor p_monitorCompRef,
				 boolean p_checkMessage
			 ) runs on ImsTestCoordinator {
			 	
				p_monitorCompRef.start (
					f_receiveDiameterMsg ( { uLR_MSG := mdw_ULR(?,mdw_ulrBodyAvps(
						        md_auth_Session_State_noStateMaintained,    // containing an Auth-Session-State AVP indicating NO_STATE_MAINTAINED
                                ?, //vc_originHost_IUT,                          // containing an Origin-Host AVP
                                ?, //vc_originRealm_IUT,                         // containing an Origin-Realm AVP
                                ?, //vc_destinationRealm,                        // containing a Destination-Realm AVP
                                m_userName(PX_USR_NAME),                    // containing a User-Name AVP
						        DiameterS6a_Templates.m_rAT_Type(PX_RAT_TYPE),                    // containing a RAT-Type AVP
                                ?,                                          // containing a ULR-Flags AVP with S6a-indicator bit set
                                m_visitedPLMNId_dummy                       // containing a Visited-PLMN-ID AVP						
						)) } , "TP_S6A_MME_ULR_01", true )
				);
				p_monitorCompRef.done;
			 }
        
        
			 /**
			  * @desc Starts monitor component behavior
			  * @param p_monitorCompRef Reference to monitor component
			  */
			 function f_mtc_check_TP_S6A_HSS_ULA_01(
				 ImsInterfaceMonitor p_monitorCompRef,
				 boolean p_checkMessage
			 ) runs on ImsTestCoordinator  {    

				p_monitorCompRef.start (
					f_receiveDiameterMsg ( { uLA_MSG := mdw_ULA(?,mdw_ulaBodyAvps(
						        mw_resultCode(DIAMETER_SUCCESS_E),              // containing a Result-Code AVP indicating DIAMETER_SUCCESS
                                md_auth_Session_State_noStateMaintained,        // containing an Auth-Session-State AVP indicating NO_STATE_MAINTAINED
                                ?, //vc_originHost_IUT,                              // containing an Origin-Host AVP
                                ?, //vc_originRealm_IUT,                             // containing an Origin-Realm AVP
                                mdw_ula_Flags_AVP(1),                           // containing a ULA-Flags AVP with Separation-indicator bit set
                                mw_subscriptionData_dummy                       // containing a Subscription-Data AVP
						        )						
						) } , "TP_S6A_MME_ULA_01", true )
				);
			    p_monitorCompRef.done;
			} //function*/

			/**
			 * @desc Starts monitor component behavior
			 * @param p_monitorCompRef Reference to monitor component
			 */
			function f_mtc_check_TP_GX_PCRF_CCA_01(
				ImsInterfaceMonitor p_monitorCompRef,
				boolean p_checkMessage
			) runs on ImsTestCoordinator  {    

				p_monitorCompRef.start (
					f_receiveDiameterMsg ( { cCR_MSG := mw_CCR_Request(?,
						?, //vc_originHost,
						?, //vc_originRealm,
						?, //vc_destinationRealm,
						mw_cC_Request_Type(INITIAL_REQUEST_E),
						*, *, *) } , "TP_GX_PCRF_CCA_01 CCR", true )
				);
				p_monitorCompRef.start (
					f_receiveDiameterMsg ( { cCA_MSG := mw_CCA_ResultCode(?,?,?,mw_resultCode(DIAMETER_SUCCESS_E)) } , "TP_GX_PCRF_CCA_01 CCA", true )
				);
				p_monitorCompRef.done;

		   } //function*/
        
		}//end group checksTC_VxLTE_INT_ATT_01


	group messagingChecks {
		/**
		 * @desc Starts monitor component behavior for TP_IMS_5097_05
+82 −0
Original line number Diff line number Diff line
/**
 *  @author     STF 574
 *  @version    $Id: $
 *  @desc       This module provides ATS specific test case definitions for Network Attachment.
 *  @see        ETSI TS 103 653-2 (2020)
 */
module AtsImsIot_TestCases_ATT {
    
    // LibCommon
    // LibSip
    // LibIms
    import from LibIms_UpperTester { type ImsUserInfo };
    // LibIot
    import from LibIot_TestInterface { type IotEquipmentUser };
    import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser };
    import from LibIot_PIXITS { modulepar PX_EUT_A, PX_EUT_B, PX_EUT_C };
    // LibImsIot
    import from AtsImsIot_Functions { function f_getImUser };
    // ImsIot
    import from AtsImsIot_TestConfiguration all; 
    import from AtsImsIot_TestSystem all; 
    import from AtsImsIot_Functions all; 
    import from AtsImsIot_Behavior { group epcChecks; function f_mtc_check_response_mx, f_mtc_check_TP_IMS_5011_01_gm; group checksTC_VxLTE_INT_ATT_01 }; 
    
    group networkAttachmentAndDefaultBearer {
        /**
         * @desc	Initial Network Attachment and Establishment of the Default Bearer.
         * On successful initial network attachment, the UE should discover the P-CSCF IP address.
         * The EPC will create the Default Bearers which will allow communication only between the UE and the P-CSCF
         * @see TS 124 229 [2], clause 9.2.1 and L.2.2.1; TS 129 212 [9], clauses 4.5.1 (item 1) and 4a.5.1 (item 1); TS 129 272 [10], clause 5.2.1.1
         */
        testcase TC_VxLTE_INT_ATT_01 ( ) runs on ImsTestCoordinator system IotSystemInterface {
			var CF_ATT v_config;
            var IotEquipmentUser v_ueA	:= f_cf_create_IotEquipmentUser ( c_userUE_A );
            var IotEquipmentUser v_ueB	:= f_cf_create_IotEquipmentUser ( c_userUE_B );
            var ImsUserInfo v_userInfoA	:= f_getImUser ( PX_EUT_A );
            var ImsUserInfo v_userInfoB	:= f_getImUser ( PX_EUT_B ); 
            v_config.gmA				:= f_cf_create_monitor ( c_gm_A );
            v_config.gmB				:= f_cf_create_monitor ( c_gm_B );
            v_config.mxA				:= f_cf_create_monitor ( c_mx_A );
			v_config.rx                 := f_cf_create_monitor ( c_rx );
            v_config.s6a				:= f_cf_create_monitor ( c_s6a );
            v_config.gx                 := f_cf_create_monitor ( c_gx );
            v_config.mw					:= f_cf_create_monitor ( c_mw );
            v_config.sgi				:= f_cf_create_monitor ( c_sgi );
            
            // map/connect component ports
            f_cf_adapter_up ( );
            f_cf_user_up ( v_ueA );
            f_cf_user_up ( v_ueA );
            f_cf_epc_call_rel15_up ( v_config );
            
            // preamble
            f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
            f_mtc_userRegistration ( v_ueB, v_userInfoB );
            
            // test body
            // Check that user A can register to IMS A
            f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message
            f_mtc_check_TP_EPC_6002_01 ( v_config.gmA, false ); // Check
            f_mtc_check_TP_S6A_MME_ULR_01 ( v_config.s6a, false ); // Check (ULR – Event 2)
            f_mtc_check_TP_S6A_HSS_ULA_01 ( v_config.s6a, false ); // Check (ULA – Event 3) 
            f_mtc_check_TP_GX_PCRF_CCA_01 ( v_config.gx, false ); // Check (CCR, CCA – Events 4, 5)
            f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); 
            f_mtc_check_TP_EPC_6003_01 ( v_ueA, v_config.gmA, v_ueB, v_config.gmB ); // Test sequence #4-5
            
            // postamble
            f_PO_user_home_deregistration ( v_ueB );
            f_PO_user_home_deregistration ( v_ueA );
            f_mtc_userRadioEnabled ( v_ueA, false, true );
            
            //unmap/disconnet component ports
            f_cf_user_down ( v_ueB );
            f_cf_user_down ( v_ueA );
            f_cf_epc_call_rel15_down ( v_config );
            f_cf_adapter_down ( );
        } // End of TC TC_VxLTE_INT_ATT_01
        
    } // End of group networkAttachmentAndDefaultBearer

    
} // End of module AtsImsIot_TestCases_ATT
 No newline at end of file
+156 −2
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ module AtsImsIot_TestConfiguration {
    import from LibIot_Functions  { altstep a_receiveIOTVerdict; function f_setConformanceVerdict, f_setE2EVerdict; }
	import from LibIot_TestConfiguration { function f_cf_oracle_up, f_cf_oracle_down; }
	import from LibIot_TestInterface {type IotEquipmentUser;}
	import from AtsImsIot_TestSystem {type ImsInterfaceMonitor, ImsTestCoordinator, CF_INT_CALL, CF_INT_AS, CF_ROAM_AS, CF_EPC_CALL;}
	import from AtsImsIot_TestSystem {type ImsInterfaceMonitor, ImsTestCoordinator, CF_INT_CALL, CF_INT_AS, CF_ROAM_AS, CF_EPC_CALL, CF_ATT;}
	import from AtsImsIot_Templates {
		template	m_generalConfigurationReq_offline, m_generalConfigurationReq_online, m_generalConfigurationReq_merge,
					m_generalConfigurationRsp_success, m_generalConfigurationRsp_error, m_generalConfigurationRsp_timeout,
@@ -71,6 +71,10 @@ module AtsImsIot_TestConfiguration {
        const charstring c_mx := "Mx";
		//* interface monitor name Sgi
		const charstring c_sgi := "Sgi";
		//* interface monitor name Rx
		const charstring c_s6a := "S6a";
		//* interface monitor name Rx
		const charstring c_gx := "Gx";
	}
	
	group mappingFunctions {
@@ -1233,6 +1237,156 @@ module AtsImsIot_TestConfiguration {
		return v_info;
	}
	
	group g_release15 {
		
        function f_cf_epc_call_rel15_up ( in CF_ATT p_config ) runs on ImsTestCoordinator {
            // Initialize the Adapter (including the TrafficCapture process).
            timer tc_configureGuard;
            var StartTrafficCaptureRsp startResult;
                
            activate(a_receiveIOTVerdict());
                
            tc_configureGuard.start(PX_MAX_MSG_WAIT);
            acPort.send(m_generalConfigurationReq_offline);
            alt {
                [] acPort.receive (m_generalConfigurationRsp_success) {
                    log("General configuration succeed.");
                    tc_configureGuard.stop;
                }
                [] acPort.receive (m_generalConfigurationRsp_timeout) {
                    setverdict(fail);
                    tc_configureGuard.stop;
                    stop;
                }
                [] acPort.receive (m_generalConfigurationRsp_error) {
                    setverdict(fail);
                    tc_configureGuard.stop;
                    stop;
                }
                [] acPort.receive {
                    log("Unknown response.");
                    tc_configureGuard.stop;
                    setverdict (inconc);
                    stop;
                }
                [] tc_configureGuard.timeout {
                    log("Timeout.");
                    setverdict (inconc);
                    stop;
                }
            } 
                
            f_cf_monitor_up(p_config.gmA);
            f_cf_monitor_up(p_config.rx);
            f_cf_monitor_up(p_config.s6a);
            f_cf_monitor_up(p_config.gx);
            f_cf_monitor_up(p_config.mxA);
            f_cf_monitor_up(p_config.mw);
            f_cf_monitor_up(p_config.sgi);
            if(isvalue(p_config.gmB)) {
                f_cf_monitor_up(p_config.gmB);
            }

            p_config.gmA.start(f_cf_setFilter(
                valueof (m_SetFilterReq(
                    e_sip,
                    {f_getInterfaceInfo("Gm", PX_PRODUCTS[PX_EUT_A])}
                )
            )));
            p_config.gmA.done;
                
            p_config.rx.start(f_cf_setFilter(
                valueof (m_SetFilterReq(
                    e_diameter,
                    {f_getInterfaceInfo("Rx", PX_PRODUCTS[PX_EUT_A])}
                )
            )));
            p_config.rx.done;
                
            p_config.mxA.start(f_cf_setFilter(
                valueof (m_SetFilterReq(
                    e_sip,
                    {f_getInterfaceInfo("Mx", PX_PRODUCTS[PX_EUT_A])}
                )
            )));
            p_config.mxA.done;
                
            p_config.mw.start(f_cf_setFilter(
                valueof (m_SetFilterReq(
                    e_sip,
                    {f_getInterfaceInfo("Mw", PX_PRODUCTS[PX_EUT_A])}
                )
            )));
            p_config.mw.done;
                
            p_config.sgi.start(f_cf_setFilter(
                valueof (m_SetFilterReq(
                    e_sip,
                    {f_getInterfaceInfo("Sgi", PX_PRODUCTS[PX_EUT_A])}
                )
            )));
            p_config.sgi.done;

            p_config.gmB.start(f_cf_setFilter(
                valueof (m_SetFilterReq(
                    e_sip, 
                    {f_getInterfaceInfo("Gm", PX_PRODUCTS[PX_EUT_B])}
                )
            )));
            // Start traffic capture processing.
            tc_configureGuard.start(PX_MAX_MSG_WAIT);
            acPort.send(m_startTrafficCaptureReq);
            alt {
            [] acPort.receive (m_startTrafficCaptureRsp_any) -> value startResult {
                tc_configureGuard.stop;
                        if (startResult.status.code != e_success)
                        {
                            log("**** StartTrafficCaptureReq unsuccessfull! ****");
                            setverdict(fail);
                            stop;
                        }
                    }
                    [] tc_configureGuard.timeout {
                        log("**** StartTrafficCaptureReq not answered. ****");
                        setverdict (inconc);
                        stop;
                    }
            } 
        } // end of function f_cf_epc_call_rel15_up
    
        function f_cf_epc_call_rel15_down(
            inout CF_ATT p_config
        ) runs on ImsTestCoordinator {
            // Stop traffic capture processing.
            timer tc_configureGuard;
            var StopTrafficCaptureRsp stopResult;
            tc_configureGuard.start(PX_MAX_MSG_WAIT);
            acPort.send(m_stopTrafficCaptureReq);
            alt {
                [] acPort.receive (m_stopTrafficCaptureRsp_any) -> value stopResult {
                    tc_configureGuard.stop;
                    if (stopResult.status.code != e_success)
                    {
                        log("**** TC_IMS_MESS_0001: StopTrafficCaptureReq unsuccessfull! ****");
                        setverdict(fail);
                    }
                }
                [] tc_configureGuard.timeout {
                    log("**** TC_IMS_MESS_0001: StopTrafficCaptureReq not answered. ****");
                    setverdict (inconc);
                }
            }
            
            f_cf_monitor_down(p_config.gmA);
            f_cf_monitor_down(p_config.rx);
            f_cf_monitor_down(p_config.s6a);
            f_cf_monitor_down(p_config.gx);
            f_cf_monitor_down(p_config.mxA);
            f_cf_monitor_down(p_config.mw);
            f_cf_monitor_down(p_config.sgi);
            f_cf_monitor_down(p_config.gmB);
        } // end of function f_cf_epc_call_rel15_down
		
	} // end group g_release15	
	
}
 No newline at end of file
+14 −0
Original line number Diff line number Diff line
@@ -89,4 +89,18 @@ module AtsImsIot_TestSystem {
        ImsInterfaceMonitor sgi,	
		ImsInterfaceMonitor gmB		// See ETSI TS 103 029 V3.1.1 clause 5.4.1.1
	}

	group g_release15 {

		type record CF_ATT {
			ImsInterfaceMonitor gmA,
            ImsInterfaceMonitor rx,
			ImsInterfaceMonitor s6a,
            ImsInterfaceMonitor gx,
			ImsInterfaceMonitor mxA,    
			ImsInterfaceMonitor mw, 
			ImsInterfaceMonitor sgi,    
			ImsInterfaceMonitor gmB
		}
	} // end of g_release15
}
 No newline at end of file
+505 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading