LibIot_VxLTE_Functions.ttcn 39.5 KB
Newer Older
Bostjan Pintar's avatar
Bostjan Pintar committed
/*
 *    @author        STF    574
 *    @version        $Id: LibIot_VxLTE_Functions.ttcn    1    2020-05-29 15:06:42Z pintar    $
 *    @desc        This module    provides Functions parameters    which    need to    be 
 *                changeable within    validation
Bostjan Pintar's avatar
Bostjan Pintar committed
 */

module LibIot_VxLTE_Functions     {
 
    import from LibIot_TypesAndValues {
        type
            IOTExecMode,
            IotVerdictType,
            CaptureMode,
            RecordMode,
            FileList,
            TimeOffset,
            EutInterfaceInfoList,
            ProtocolFilter,
            IpAddress,
            PortNumber,
            ProductList,
            InterfaceAvailable,
            InterfaceAvailableList,
            MonitorInterfaceInfo,
            VxLTEMonitorInterfaceList;
    }
    import from AtsImsIot_Templates {
        template /*m_generalConfigurationReq_offline, m_generalConfigurationReq_online, m_generalConfigurationReq_merge,
                        m_generalConfigurationRsp_success, m_generalConfigurationRsp_error, m_generalConfigurationRsp_timeout,*/
            m_SetFilterReq /*, mw_SetFilterRsp, m_startTrafficCaptureReq, m_stopTrafficCaptureReq,
                        m_startTrafficCaptureRsp_any, m_stopTrafficCaptureRsp_any*/;
Bostjan Pintar's avatar
Bostjan Pintar committed
    }
    import from LibIot_VxLTE_PIXITS all;
    import from LibIot_VxLTE_Templates all;
    
    import from AtsImsIot_TestConfiguration all; 
    import from AtsImsIot_TestSystem all;
    
    type record of charstring InterfaceNamesList;
    group ConfigurationFunctions{
        /**
        * @desc     Check and create a list of monitor interfaces based on PIXITS
        * @param      
        * @return     the created monitor component list in vc_MonIntfList
Bostjan Pintar's avatar
Bostjan Pintar committed
        */
        function f_setVxLteMonIterfacesAvailability(/*inout VxLTEMonitorInterfaceList p_vxlteMonIntfList*/)runs on ImsTestCoordinator{
            
            
            if (PX_SIP_GMA_MONITORENABLED == true){
                //p_vxlteMonIntfList.gmA := valueof(m_MonIntf_Sip_Gm_A);
                vc_MonIntfList.gmA := valueof(m_MonIntf_Sip_Gm_A);
            }
            if (PX_SIP_GMB_MONITORENABLED == true){
                vc_MonIntfList.gmB := valueof(m_MonIntf_Sip_Gm_B);
            }
            if (PX_SIP_MM_B_PSAP_MONITORENABLED == true){
                vc_MonIntfList.mmB_PSAP := valueof(m_MonIntf_Sip_MmB_PSAP);
            }
			if (PX_SIP_MW_EB_MONITORENABLED == true){
				vc_MonIntfList.mwEB := valueof(m_MonIntf_Sip_Mw_EB);
			}
			if (PX_SIP_MW_S_PSAP_MONITORENABLED == true){
			    vc_MonIntfList.mwS_PSAP := valueof(m_MonIntf_Sip_MwS_PSAP);
		    }
Bostjan Pintar's avatar
Bostjan Pintar committed
            if (PX_SIP_IC_MONITORENABLED == true){
                vc_MonIntfList.ic := valueof(m_MonIntf_Sip_Ic);
            }
            if (PX_SIP_MW_PI_MONITORENABLED == true){
                vc_MonIntfList.mwPI := valueof(m_MonIntf_Sip_Mw_PI);
            }
            if (PX_SIP_MW_PS_MONITORENABLED == true){
                vc_MonIntfList.mwPS := valueof(m_MonIntf_Sip_Mw_PS);
            }
            if (PX_SIP_MW_PE_MONITORENABLED == true){
                vc_MonIntfList.mwPE := valueof(m_MonIntf_Sip_Mw_PE);
            }
Bostjan Pintar's avatar
Bostjan Pintar committed
            if (PX_SIP_MW_IS_MONITORENABLED == true){
                vc_MonIntfList.mwIS := valueof(m_MonIntf_Sip_Mw_IS);
            }
            if (PX_SIP_MW_PB_MONITORENABLED == true){
                vc_MonIntfList.mwPB := valueof(m_MonIntf_Sip_Mw_PB);
            }
            if (PX_SIP_MW_IB_MONITORENABLED == true){
                vc_MonIntfList.mwIB := valueof(m_MonIntf_Sip_Mw_IB);
            }
            if (PX_SIP_MW_IE_MONITORENABLED == true){
                vc_MonIntfList.mwIE := valueof(m_MonIntf_Sip_Mw_IE);
            }
Bostjan Pintar's avatar
Bostjan Pintar committed
            if (PX_SIP_ISC_MONITORENABLED == true){
                vc_MonIntfList.isc := valueof(m_MonIntf_Sip_ISC);
            }
    
    
            if (PX_DIAMETER_CX_IH_MONITORENABLED == true){
                vc_MonIntfList.cxIH := valueof(m_MonIntf_Diameter_Cx_IH);
            }
            if (PX_DIAMETER_CX_SH_MONITORENABLED == true){
                vc_MonIntfList.cxSH := valueof(m_MonIntf_Diameter_Cx_SH);
            }
            if (PX_DIAMETER_GX_MONITORENABLED == true){
                vc_MonIntfList.gx := valueof(m_MonIntf_Diameter_Gx);
            }
            if (PX_DIAMETER_RX_MONITORENABLED == true){
                vc_MonIntfList.rx := valueof(m_MonIntf_Diameter_Rx);
            }
            if (PX_DIAMETER_S6A_MONITORENABLED == true){
                vc_MonIntfList.s6a := valueof(m_MonIntf_Diameter_S6a);
            }
            if (PX_DIAMETER_S9_MONITORENABLED == true){
                vc_MonIntfList.s9 := valueof(m_MonIntf_Diameter_S9);
            }
            if (PX_DIAMETER_SH_MONITORENABLED == true){
                vc_MonIntfList.sh := valueof(m_MonIntf_Diameter_Sh);
        * @desc     Create monitor components based on vc_MonIntfList
        * @param      
        * @return     the created monitor components in vc_vxlte_monitor_components
Bostjan Pintar's avatar
Bostjan Pintar committed
        */
        function f_cf_createVxLteMonitor() runs on ImsTestCoordinator{
            
            if (isvalue(vc_MonIntfList.gmA)){
                vc_vxlte_monitor_components.gmA := f_cf_create_monitor_sip ( vc_MonIntfList.gmA);
            }
            if (isvalue(vc_MonIntfList.gmB)){
                vc_vxlte_monitor_components.gmB := f_cf_create_monitor_sip ( vc_MonIntfList.gmB);
            }
            
            if (isvalue(vc_MonIntfList.mmB_PSAP)){
                vc_vxlte_monitor_components.mmB_PSAP := f_cf_create_monitor_sip ( vc_MonIntfList.mmB_PSAP);
            }
			if (isvalue(vc_MonIntfList.mwEB)){
				vc_vxlte_monitor_components.mwEB := f_cf_create_monitor_sip ( vc_MonIntfList.mwEB);
			}
			if (isvalue(vc_MonIntfList.mwS_PSAP)){
				vc_vxlte_monitor_components.mwS_PSAP := f_cf_create_monitor_sip ( vc_MonIntfList.mwS_PSAP);
			}
Bostjan Pintar's avatar
Bostjan Pintar committed
            if (isvalue(vc_MonIntfList.ic)){
                vc_vxlte_monitor_components.ic := f_cf_create_monitor_sip ( vc_MonIntfList.ic);
            }
                    
            if (isvalue(vc_MonIntfList.mwPI)){
                vc_vxlte_monitor_components.mwPI := f_cf_create_monitor_sip ( vc_MonIntfList.mwPI);
            }
            if (isvalue(vc_MonIntfList.mwPS)){
                vc_vxlte_monitor_components.mwPS := f_cf_create_monitor_sip ( vc_MonIntfList.mwPS);
            }
            if (isvalue(vc_MonIntfList.mwPE)){
                vc_vxlte_monitor_components.mwPE := f_cf_create_monitor_sip ( vc_MonIntfList.mwPE);
            }
Bostjan Pintar's avatar
Bostjan Pintar committed
            if (isvalue(vc_MonIntfList.mwIS)){
                vc_vxlte_monitor_components.mwIS := f_cf_create_monitor_sip ( vc_MonIntfList.mwIS);
            }
            if (isvalue(vc_MonIntfList.mwPB)){
                vc_vxlte_monitor_components.mwPB := f_cf_create_monitor_sip ( vc_MonIntfList.mwPB);
            }
            if (isvalue(vc_MonIntfList.mwIB)){
                vc_vxlte_monitor_components.mwIB := f_cf_create_monitor_sip ( vc_MonIntfList.mwIB);
            }
            if (isvalue(vc_MonIntfList.mwIE)){
                vc_vxlte_monitor_components.mwIE := f_cf_create_monitor_sip ( vc_MonIntfList.mwIE);
            }
Bostjan Pintar's avatar
Bostjan Pintar committed
            
            if (isvalue(vc_MonIntfList.isc)){
                vc_vxlte_monitor_components.isc := f_cf_create_monitor_sip ( vc_MonIntfList.isc);
            }
            
            
            
            if (isvalue(vc_MonIntfList.cxIH)){
                vc_vxlte_monitor_components.cxIH := f_cf_create_monitor_diameter ( vc_MonIntfList.cxIH);
            }
            if (isvalue(vc_MonIntfList.cxSH)){
                vc_vxlte_monitor_components.cxSH := f_cf_create_monitor_diameter ( vc_MonIntfList.cxSH);
            }
            if (isvalue(vc_MonIntfList.gx)){
                vc_vxlte_monitor_components.gx := f_cf_create_monitor_diameter ( vc_MonIntfList.gx);
            }
            if (isvalue(vc_MonIntfList.rx)){
                vc_vxlte_monitor_components.rx := f_cf_create_monitor_diameter ( vc_MonIntfList.rx);
            }
            if (isvalue(vc_MonIntfList.s6a)){
                vc_vxlte_monitor_components.s6a := f_cf_create_monitor_diameter ( vc_MonIntfList.s6a);
            }
            if (isvalue(vc_MonIntfList.s9)){
                vc_vxlte_monitor_components.s9 := f_cf_create_monitor_diameter ( vc_MonIntfList.s9);
            }
            if (isvalue(vc_MonIntfList.sh)){
                vc_vxlte_monitor_components.sh := f_cf_create_monitor_diameter ( vc_MonIntfList.sh);
            }        
        }
        
        /**
        * @desc     Start monitor components based on vc_MonIntfList
        * @param      
        * @return     Created monitor components in vc_vxlte_monitor_components are connected/mapped
Bostjan Pintar's avatar
Bostjan Pintar committed
        */
        function f_cf_VxLteMonitor_Up() runs on ImsTestCoordinator{
            //Initialize the Adapter (including the TrafficCapture process).
Bostjan Pintar's avatar
Bostjan Pintar committed
            timer tc_noAct;
            f_cf_initCapture();
            
            if (isvalue(vc_MonIntfList.gmA)){
                f_cf_monitor_up_sip(vc_vxlte_monitor_components.gmA);
                vc_vxlte_monitor_components.gmA.start(f_cf_setFilter(
                                                           valueof (m_SetFilterReq(
Bostjan Pintar's avatar
Bostjan Pintar committed
                                                                       e_sip,
                                                                       {vc_MonIntfList.gmA.interfaceInfo}
Bostjan Pintar's avatar
Bostjan Pintar committed
            }
            if (isvalue(vc_MonIntfList.gmB)){
                f_cf_monitor_up_sip(vc_vxlte_monitor_components.gmB);
                vc_vxlte_monitor_components.gmB.start(f_cf_setFilter(
                                                        valueof (m_SetFilterReq(
                                                                    e_sip,
                                                                    {vc_MonIntfList.gmB.interfaceInfo}
                                                        )
                                                     )));
            }
            
            if (isvalue(vc_MonIntfList.mmB_PSAP)){
                f_cf_monitor_up_sip(vc_vxlte_monitor_components.mmB_PSAP);
                vc_vxlte_monitor_components.mmB_PSAP.start(f_cf_setFilter(
                                                        valueof (m_SetFilterReq(
                                                                    e_sip,
                                                                    {vc_MonIntfList.mmB_PSAP.interfaceInfo}
			if (isvalue(vc_MonIntfList.mwEB)){
				f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwEB);
				vc_vxlte_monitor_components.mwEB.start(f_cf_setFilter(
														valueof (m_SetFilterReq(
																	e_sip,
																	{vc_MonIntfList.mwEB.interfaceInfo}
														)
													 )));
			}
			if (isvalue(vc_MonIntfList.mwS_PSAP)){
			    f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwS_PSAP);
			    vc_vxlte_monitor_components.mwS_PSAP.start(f_cf_setFilter(
				 									   valueof (m_SetFilterReq(
				 												   e_sip,
				 												   {vc_MonIntfList.mwS_PSAP.interfaceInfo}
				 									   )
				 									)));
		    }             
Bostjan Pintar's avatar
Bostjan Pintar committed
            if (isvalue(vc_MonIntfList.ic)){
                f_cf_monitor_up_sip(vc_vxlte_monitor_components.ic);
                vc_vxlte_monitor_components.ic.start(f_cf_setFilter(
                                                        valueof (m_SetFilterReq(
                                                                    e_sip,
                                                                    {vc_MonIntfList.ic.interfaceInfo}
                                                        )
                                                     )));
            }
                    
            if (isvalue(vc_MonIntfList.mwPI)){
                f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwPI);
                vc_vxlte_monitor_components.mwPI.start(f_cf_setFilter(
                                                        valueof (m_SetFilterReq(
                                                                    e_sip,
                                                                    {vc_MonIntfList.mwPI.interfaceInfo}
                                                        )
                                                     )));
            }
            if (isvalue(vc_MonIntfList.mwPS)){
                f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwPS);
                vc_vxlte_monitor_components.mwPS.start(f_cf_setFilter(
                                                        valueof (m_SetFilterReq(
                                                                    e_sip,
                                                                    {vc_MonIntfList.mwPS.interfaceInfo}
                                                        )
                                                     )));
            }
            if (isvalue(vc_MonIntfList.mwPE)){
                f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwPE);
                vc_vxlte_monitor_components.mwPS.start(f_cf_setFilter(
                                                        valueof (m_SetFilterReq(
                                                                    e_sip,
                                                                    {vc_MonIntfList.mwPE.interfaceInfo}
                                                        )
                                                     )));
            }
Bostjan Pintar's avatar
Bostjan Pintar committed
            if (isvalue(vc_MonIntfList.mwIS)){
                f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwIS);
                vc_vxlte_monitor_components.mwIS.start(f_cf_setFilter(
                                                        valueof (m_SetFilterReq(
                                                                    e_sip,
                                                                    {vc_MonIntfList.mwIS.interfaceInfo}
                                                        )
                                                     )));
            }
            if (isvalue(vc_MonIntfList.mwPB)){
                f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwPB);
                vc_vxlte_monitor_components.mwPB.start(f_cf_setFilter(
                                                        valueof (m_SetFilterReq(
                                                                    e_sip,
                                                                    {vc_MonIntfList.mwPB.interfaceInfo}
                                                        )
                                                     )));
            }
            if (isvalue(vc_MonIntfList.mwIB)){
                f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwIB);
                vc_vxlte_monitor_components.mwIB.start(f_cf_setFilter(
                                                        valueof (m_SetFilterReq(
                                                                    e_sip,
                                                                    {vc_MonIntfList.mwIB.interfaceInfo}
                                                        )
                                                     )));
            }
            if (isvalue(vc_MonIntfList.mwIE)){
                f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwIE);
                vc_vxlte_monitor_components.mwPS.start(f_cf_setFilter(
                                                        valueof (m_SetFilterReq(
                                                                    e_sip,
                                                                    {vc_MonIntfList.mwIE.interfaceInfo}
                                                        )
                                                     )));
            }
Bostjan Pintar's avatar
Bostjan Pintar committed
            
            if (isvalue(vc_MonIntfList.isc)){
                f_cf_monitor_up_sip(vc_vxlte_monitor_components.isc);
                vc_vxlte_monitor_components.isc.start(f_cf_setFilter(
                                                        valueof (m_SetFilterReq(
                                                                    e_sip,
                                                                    {vc_MonIntfList.isc.interfaceInfo}
                                                        )
                                                     )));
            }
            
            
            
            if (isvalue(vc_MonIntfList.cxIH)){
                f_cf_monitor_up_diameter(vc_vxlte_monitor_components.cxIH);
                vc_vxlte_monitor_components.cxIH.start(f_cf_setFilter(
                                                        valueof (m_SetFilterReq(
                                                                    e_diameter,
                                                                    {vc_MonIntfList.cxIH.interfaceInfo}
                                                        )
                                                     )));
            }
            if (isvalue(vc_MonIntfList.cxSH)){
                f_cf_monitor_up_diameter(vc_vxlte_monitor_components.cxSH);
                vc_vxlte_monitor_components.cxSH.start(f_cf_setFilter(
                                                        valueof (m_SetFilterReq(
                                                                    e_diameter,
                                                                    {vc_MonIntfList.cxSH.interfaceInfo}
                                                        )
                                                     )));
            }
            if (isvalue(vc_MonIntfList.gx)){
                f_cf_monitor_up_diameter(vc_vxlte_monitor_components.gx);
                vc_vxlte_monitor_components.gx.start(f_cf_setFilter(
                                                        valueof (m_SetFilterReq(
                                                                    e_diameter,
                                                                    {vc_MonIntfList.gx.interfaceInfo}
                                                        )
                                                     )));
            }
            if (isvalue(vc_MonIntfList.rx)){
                f_cf_monitor_up_diameter(vc_vxlte_monitor_components.rx);
                vc_vxlte_monitor_components.rx.start(f_cf_setFilter(
                                                        valueof (m_SetFilterReq(
                                                                    e_diameter,
                                                                    {vc_MonIntfList.rx.interfaceInfo}
                                                        )
                                                     )));
            }
            if (isvalue(vc_MonIntfList.s6a)){
                f_cf_monitor_up_diameter(vc_vxlte_monitor_components.s6a);
                vc_vxlte_monitor_components.s6a.start(f_cf_setFilter(
                                                        valueof (m_SetFilterReq(
                                                                    e_diameter,
                                                                    {vc_MonIntfList.s6a.interfaceInfo}
                                                        )
                                                     )));
            }
            if (isvalue(vc_MonIntfList.s9)){
                f_cf_monitor_up_diameter(vc_vxlte_monitor_components.s9);
                vc_vxlte_monitor_components.s9.start(f_cf_setFilter(
                                                        valueof (m_SetFilterReq(
                                                                    e_diameter,
                                                                    {vc_MonIntfList.s9.interfaceInfo}
                                                        )
                                                     )));
            }
            if (isvalue(vc_MonIntfList.sh)){
                f_cf_monitor_up_diameter(vc_vxlte_monitor_components.sh);
                vc_vxlte_monitor_components.sh.start(f_cf_setFilter(
                                                        valueof (m_SetFilterReq(
                                                                    e_diameter,
                                                                    {vc_MonIntfList.sh.interfaceInfo}
                                                        )
                                                     )));
            }
            
            tc_noAct.start(3.0);
            alt {
                [] tc_noAct.timeout {
                }
            }
            f_cf_startCapture();
        }
        
        /**
        * @desc     Stops monitor components based on vc_MonIntfList
        * @param      
        * @return     Created monitor components in vc_vxlte_monitor_components are disconnected/unmapped
Bostjan Pintar's avatar
Bostjan Pintar committed
        */
        function f_cf_VxLteMonitor_Down() runs on ImsTestCoordinator{
            //Stop traffic capture processing.
            f_cf_stopCapture();
            
            if (isvalue(vc_MonIntfList.gmA)){
                f_cf_monitor_down_sip(vc_vxlte_monitor_components.gmA);
            }
            if (isvalue(vc_MonIntfList.gmB)){
                f_cf_monitor_down_sip(vc_vxlte_monitor_components.gmB);
            }
            if (isvalue(vc_MonIntfList.mmB_PSAP)){
                f_cf_monitor_down_sip(vc_vxlte_monitor_components.mmB_PSAP);
			if (isvalue(vc_MonIntfList.mwEB)){
				f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwEB);
			}
			if (isvalue(vc_MonIntfList.mwS_PSAP)){
				f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwS_PSAP);
			}
Bostjan Pintar's avatar
Bostjan Pintar committed
            if (isvalue(vc_MonIntfList.ic)){
                f_cf_monitor_down_sip(vc_vxlte_monitor_components.ic);
            }
                
            if (isvalue(vc_MonIntfList.mwPI)){
                f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPI);
            }
            if (isvalue(vc_MonIntfList.mwPS)){
                f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPS);
            }
            if (isvalue(vc_MonIntfList.mwPE)){
                f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPE);
            }
Bostjan Pintar's avatar
Bostjan Pintar committed
            if (isvalue(vc_MonIntfList.mwIS)){
                f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwIS);
            }
            if (isvalue(vc_MonIntfList.mwPB)){
                f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPB);
            }
            if (isvalue(vc_MonIntfList.mwIB)){
                f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwIB);
            }
            if (isvalue(vc_MonIntfList.mwIE)){
                f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwIE);
            }
Bostjan Pintar's avatar
Bostjan Pintar committed
        
            if (isvalue(vc_MonIntfList.isc)){
                f_cf_monitor_down_sip(vc_vxlte_monitor_components.isc);
            }
        
        
        
            if (isvalue(vc_MonIntfList.cxIH)){
                f_cf_monitor_down_diameter(vc_vxlte_monitor_components.cxIH);
            }
            if (isvalue(vc_MonIntfList.cxSH)){
                f_cf_monitor_down_diameter(vc_vxlte_monitor_components.cxSH);
            }
            if (isvalue(vc_MonIntfList.gx)){
                f_cf_monitor_down_diameter(vc_vxlte_monitor_components.gx);
            }
            if (isvalue(vc_MonIntfList.rx)){
                f_cf_monitor_down_diameter(vc_vxlte_monitor_components.rx);
            }
            if (isvalue(vc_MonIntfList.s6a)){
                f_cf_monitor_down_diameter(vc_vxlte_monitor_components.s6a);
            }
            if (isvalue(vc_MonIntfList.s9)){
                f_cf_monitor_down_diameter(vc_vxlte_monitor_components.s9);
            }
            if (isvalue(vc_MonIntfList.sh)){
                f_cf_monitor_down_diameter(vc_vxlte_monitor_components.sh);
            }
        }
    }//end group ConfigurationFunctions
    group CheckFunctions{
        
        /**
        * @desc     Check monitor components based on interfaces names
        * @param     
        * @return   true - Monitorinteface available/active
        *           false - Monitorinteface not exists or not available/active
        */
        function f_checkVxLteRequiredMonitorInterface(InterfaceNamesList p_interfaces) runs on ImsTestCoordinator return boolean{
            var integer v_len:=lengthof(p_interfaces);
            var integer i:=0;
            var boolean v_check := false;
            
            if (v_len>0){
                for(i:=0;i<v_len;i:=i+1){
                    v_check := v_check or f_SipMonitorInterface_available(p_interfaces[i]) or f_DiameterMonitorInterface_available(p_interfaces[i]);
                }
            }
            else{//condition of required list of interfaces not meet
                return v_check; 
            }
            return v_check;
        }
        
        /**
        * @desc     Check monitor component based on interface name
        * @param      
        * @return     true - Monitorinteface available/active
Bostjan Pintar's avatar
Bostjan Pintar committed
        *             false - Monitorinteface not exists or not available/active
        */
        function f_SipMonitorInterface_available(charstring p_interfaceName) runs on ImsTestCoordinator return boolean{

//            if (vc_vxlte_monitor_components.gmA.vc_interfacename) {return true;}
            if ((isvalue(vc_MonIntfList.gmA))  and (vc_MonIntfList.gmA.interfaceName==p_interfaceName)){ return true;}
            //if ((isvalue(vc_MonIntfList.gmB))  and (vc_MonIntfList.gmB.interfaceName==p_interfaceName)){ return true;}
            if ((isvalue(vc_MonIntfList.mmB_PSAP)) and (vc_MonIntfList.mmB_PSAP.interfaceName==p_interfaceName)){ return true;}
			if ((isvalue(vc_MonIntfList.mwEB)) and (vc_MonIntfList.mwEB.interfaceName==p_interfaceName)){ return true;}
			if ((isvalue(vc_MonIntfList.mwS_PSAP)) and (vc_MonIntfList.mwS_PSAP.interfaceName==p_interfaceName)){ return true;}
Bostjan Pintar's avatar
Bostjan Pintar committed
            if ((isvalue(vc_MonIntfList.ic))   and (vc_MonIntfList.ic.interfaceName==p_interfaceName)){ return true;}

            if ((isvalue(vc_MonIntfList.mwPI)) and (vc_MonIntfList.mwPI.interfaceName==p_interfaceName)){ return true;}
            if ((isvalue(vc_MonIntfList.mwPS)) and (vc_MonIntfList.mwPS.interfaceName==p_interfaceName)){ return true;}
            if ((isvalue(vc_MonIntfList.mwPE)) and (vc_MonIntfList.mwPE.interfaceName==p_interfaceName)){ return true;}
Bostjan Pintar's avatar
Bostjan Pintar committed
            if ((isvalue(vc_MonIntfList.mwIS)) and (vc_MonIntfList.mwIS.interfaceName==p_interfaceName)){ return true;}
            if ((isvalue(vc_MonIntfList.mwPB)) and (vc_MonIntfList.mwPB.interfaceName==p_interfaceName)){ return true;}
            if ((isvalue(vc_MonIntfList.mwIB)) and (vc_MonIntfList.mwIB.interfaceName==p_interfaceName)){ return true;}
            if ((isvalue(vc_MonIntfList.mwIE)) and (vc_MonIntfList.mwIE.interfaceName==p_interfaceName)){ return true;}
Bostjan Pintar's avatar
Bostjan Pintar committed

            if ((isvalue(vc_MonIntfList.isc))  and (vc_MonIntfList.isc.interfaceName==p_interfaceName)){ return true;}
                    
            return false;
        }
        
        /**
        * @desc     Check monitor component based on interface name
        * @param      
        * @return     true - Monitorinteface available/active
Bostjan Pintar's avatar
Bostjan Pintar committed
        *             false - Monitorinteface not exists or not available/active
        */
        function f_DiameterMonitorInterface_available(charstring p_interfaceName) runs on ImsTestCoordinator return boolean{

            if ((isvalue(vc_MonIntfList.cxIH)) and (vc_MonIntfList.cxIH.interfaceName==p_interfaceName)){ return true;}
            if ((isvalue(vc_MonIntfList.cxSH)) and (vc_MonIntfList.cxSH.interfaceName==p_interfaceName)){ return true;}
            
            if ((isvalue(vc_MonIntfList.gx))   and (vc_MonIntfList.gx.interfaceName==p_interfaceName)){ return true;}
            if ((isvalue(vc_MonIntfList.rx))   and (vc_MonIntfList.rx.interfaceName==p_interfaceName)){ return true;}
            if ((isvalue(vc_MonIntfList.s6a))  and (vc_MonIntfList.s6a.interfaceName==p_interfaceName)){ return true;}
            if ((isvalue(vc_MonIntfList.s9))   and (vc_MonIntfList.s9.interfaceName==p_interfaceName)){ return true;}
            
            if ((isvalue(vc_MonIntfList.sh))   and (vc_MonIntfList.sh.interfaceName==p_interfaceName)){ return true;}
            
            return false;
        }
        
    }
    group temporary_functions{    
    function f_check_and_setup_monitor_interfaces() runs on ImsTestCoordinator{
        
        var InterfaceAvailableList v_VxLTE_MonIntf_Available;
        var InterfaceAvailable v_InterfaceAvailable;
        var SipInterfaceMonitor v_gmA, v_gmB, v_mmBPSAP, v_mwEB, v_mwSPSAP, v_ic, v_mwPI, v_mwPS, v_mwPE, v_mwSI, v_mwPB, v_mwIB, v_mwIE, v_isc;
Bostjan Pintar's avatar
Bostjan Pintar committed
        var DiameterInterfaceMonitor v_cxIH, v_cxSH, v_gx, v_rx, v_s6a, v_s9, v_sh;
        
        if (PX_SIP_GMA_MONITORENABLED == true){
            v_InterfaceAvailable.interfaceName := PX_SIP_GMA_INTERFACENAME; 
            v_InterfaceAvailable.available := PX_SIP_GMA_MONITORENABLED;
            v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
            v_gmA := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Gm_A)/*PX_SIP_GMA_INTERFACENAME*/ );
            f_cf_monitor_up_sip(v_gmA);
        }
        if (PX_SIP_GMB_MONITORENABLED == true){
            v_InterfaceAvailable.interfaceName := PX_SIP_GMB_INTERFACENAME; 
            v_InterfaceAvailable.available := PX_SIP_GMB_MONITORENABLED;
            v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
            v_gmB := f_cf_create_monitor_sip (  valueof(m_MonIntf_Sip_Gm_B)/*PX_SIP_GMB_INTERFACENAME*/);
Bostjan Pintar's avatar
Bostjan Pintar committed
            f_cf_monitor_up_sip(v_gmB);
        }
        if (PX_SIP_MM_B_PSAP_MONITORENABLED == true){
            v_InterfaceAvailable.interfaceName := PX_SIP_MM_B_PSAP_INTERFACENAME; 
            v_InterfaceAvailable.available := PX_SIP_MM_B_PSAP_MONITORENABLED;
            v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
            v_mmBPSAP := f_cf_create_monitor_sip (  valueof(m_MonIntf_Sip_MmB_PSAP)/*PX_SIP_MW_PSAP_INTERFACENAME*/ );
            f_cf_monitor_up_sip(v_mmBPSAP);
		if (PX_SIP_MW_EB_MONITORENABLED == true){
    
			v_InterfaceAvailable.interfaceName := PX_SIP_MW_EB_INTERFACENAME; 
			v_InterfaceAvailable.available := PX_SIP_MW_EB_MONITORENABLED;
			v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
			v_mwEB := f_cf_create_monitor_sip (  valueof(m_MonIntf_Sip_Mw_EB)/*PX_SIP_MW_PI_INTERFACENAME*/ );
			f_cf_monitor_up_sip(v_mwEB);
		}
		if (PX_SIP_MW_S_PSAP_MONITORENABLED == true){
    
		    v_InterfaceAvailable.interfaceName := PX_SIP_MW_S_PSAP_INTERFACENAME; 
		    v_InterfaceAvailable.available := PX_SIP_MW_S_PSAP_MONITORENABLED;
		    v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
		    v_mwSPSAP := f_cf_create_monitor_sip (  valueof(m_MonIntf_Sip_MwS_PSAP)/*PX_SIP_MW_PSAP_INTERFACENAME*/ );
		    f_cf_monitor_up_sip(v_mwSPSAP);
	    }
Bostjan Pintar's avatar
Bostjan Pintar committed
        if (PX_SIP_IC_MONITORENABLED == true){
            v_InterfaceAvailable.interfaceName := PX_SIP_IC_INTERFACENAME; 
            v_InterfaceAvailable.available := PX_SIP_IC_MONITORENABLED;
            v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
            v_ic := f_cf_create_monitor_sip (  valueof(m_MonIntf_Sip_Ic)/*PX_SIP_IC_INTERFACENAME*/ );
            f_cf_monitor_up_sip(v_ic);
        }
        if (PX_SIP_MW_PI_MONITORENABLED == true){
            
            v_InterfaceAvailable.interfaceName := PX_SIP_MW_PI_INTERFACENAME; 
            v_InterfaceAvailable.available := PX_SIP_MW_PI_MONITORENABLED;
            v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
            v_mwPI := f_cf_create_monitor_sip (  valueof(m_MonIntf_Sip_Mw_PI)/*PX_SIP_MW_PI_INTERFACENAME*/ );
            f_cf_monitor_up_sip(v_mwPI);
        }
        if (PX_SIP_MW_PS_MONITORENABLED == true){
            v_InterfaceAvailable.interfaceName := PX_SIP_MW_PS_INTERFACENAME; 
            v_InterfaceAvailable.available := PX_SIP_MW_PS_MONITORENABLED;
            v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
            v_mwPS := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Mw_PS)/*PX_SIP_MW_PS_INTERFACENAME*/ );
            f_cf_monitor_up_sip(v_mwPS);
        }
        if (PX_SIP_MW_PE_MONITORENABLED == true){
            v_InterfaceAvailable.interfaceName := PX_SIP_MW_PE_INTERFACENAME; 
            v_InterfaceAvailable.available := PX_SIP_MW_PE_MONITORENABLED;
            v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
            v_mwPE := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Mw_PE)/*PX_SIP_MW_PE_INTERFACENAME*/ );
            f_cf_monitor_up_sip(v_mwPE);
        }
Bostjan Pintar's avatar
Bostjan Pintar committed
        if (PX_SIP_MW_IS_MONITORENABLED == true){
            v_InterfaceAvailable.interfaceName := PX_SIP_MW_IS_INTERFACENAME; 
            v_InterfaceAvailable.available := PX_SIP_MW_IS_MONITORENABLED;
            v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
            v_mwSI := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Mw_IS)/*PX_SIP_MW_IS_INTERFACENAME*/ );
            f_cf_monitor_up_sip(v_mwSI);
        }
        if (PX_SIP_MW_PB_MONITORENABLED == true){
            v_InterfaceAvailable.interfaceName := PX_SIP_MW_PB_INTERFACENAME; 
            v_InterfaceAvailable.available := PX_SIP_MW_PB_MONITORENABLED;
            v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
            v_mwPB := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Mw_PB)/*PX_SIP_MW_PB_INTERFACENAME*/ );
            f_cf_monitor_up_sip(v_mwPB);
        }
        if (PX_SIP_MW_IB_MONITORENABLED == true){
            v_InterfaceAvailable.interfaceName := PX_SIP_MW_IB_INTERFACENAME; 
            v_InterfaceAvailable.available := PX_SIP_MW_IB_MONITORENABLED;
            v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
            v_mwIB := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Mw_IB)/*PX_SIP_MW_IB_INTERFACENAME*/ );
            f_cf_monitor_up_sip(v_mwIB);
        }
        if (PX_SIP_ISC_MONITORENABLED == true){
            v_InterfaceAvailable.interfaceName := PX_SIP_ISC_INTERFACENAME; 
            v_InterfaceAvailable.available := PX_SIP_ISC_MONITORENABLED;
            v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
            v_isc := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_ISC)/*PX_SIP_ISC_INTERFACENAME*/ );
            f_cf_monitor_up_sip(v_isc);
        }
        if (PX_SIP_MW_IE_MONITORENABLED == true){
            v_InterfaceAvailable.interfaceName := PX_SIP_MW_IE_INTERFACENAME; 
            v_InterfaceAvailable.available := PX_SIP_MW_IE_MONITORENABLED;
            v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
            v_mwIE := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Mw_IE)/*PX_SIP_MW_IE_INTERFACENAME*/ );
            f_cf_monitor_up_sip(v_mwIE);
        }
Bostjan Pintar's avatar
Bostjan Pintar committed
        
        if (PX_DIAMETER_CX_IH_MONITORENABLED == true){
            v_InterfaceAvailable.interfaceName := PX_DIAMETER_CX_IH_INTERFACENAME; 
            v_InterfaceAvailable.available := PX_DIAMETER_CX_IH_MONITORENABLED;
            v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
            v_cxIH := f_cf_create_monitor_diameter ( valueof(m_MonIntf_Diameter_Cx_IH)/*PX_DIAMETER_CX_IH_INTERFACENAME*/ );
            f_cf_monitor_up_diameter(v_cxIH);
        }
        if (PX_DIAMETER_CX_SH_MONITORENABLED == true){
            v_InterfaceAvailable.interfaceName := PX_DIAMETER_CX_SH_INTERFACENAME; 
            v_InterfaceAvailable.available := PX_DIAMETER_CX_SH_MONITORENABLED;
            v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
            v_cxSH := f_cf_create_monitor_diameter (  valueof(m_MonIntf_Diameter_Cx_SH)/*PX_DIAMETER_CX_SH_INTERFACENAME*/ );
            f_cf_monitor_up_diameter(v_cxSH);
        }
        if (PX_DIAMETER_GX_MONITORENABLED == true){
            v_InterfaceAvailable.interfaceName := PX_DIAMETER_GX_INTERFACENAME; 
            v_InterfaceAvailable.available := PX_DIAMETER_GX_MONITORENABLED;
            v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
            v_gx := f_cf_create_monitor_diameter (  valueof(m_MonIntf_Diameter_Gx)/*PX_DIAMETER_GX_INTERFACENAME*/ );
            f_cf_monitor_up_diameter(v_gx);
        }
        if (PX_DIAMETER_RX_MONITORENABLED == true){
            v_InterfaceAvailable.interfaceName := PX_DIAMETER_RX_INTERFACENAME; 
            v_InterfaceAvailable.available := PX_DIAMETER_RX_MONITORENABLED;
            v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
            v_rx := f_cf_create_monitor_diameter (  valueof(m_MonIntf_Diameter_Rx)/*PX_DIAMETER_RX_INTERFACENAME*/ );
            f_cf_monitor_up_diameter(v_rx);
        }
        if (PX_DIAMETER_S6A_MONITORENABLED == true){
            v_InterfaceAvailable.interfaceName := PX_DIAMETER_S6A_INTERFACENAME; 
            v_InterfaceAvailable.available := PX_DIAMETER_S6A_MONITORENABLED;
            v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
            v_s6a := f_cf_create_monitor_diameter (  valueof(m_MonIntf_Diameter_S6a)/*PX_DIAMETER_S6A_INTERFACENAME*/ );
            f_cf_monitor_up_diameter(v_s6a);
        }
        if (PX_DIAMETER_S9_MONITORENABLED == true){
            v_InterfaceAvailable.interfaceName := PX_DIAMETER_S9_INTERFACENAME; 
            v_InterfaceAvailable.available := PX_DIAMETER_S9_MONITORENABLED;
            v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
            v_s9 := f_cf_create_monitor_diameter (  valueof(m_MonIntf_Diameter_S9)/*PX_DIAMETER_S9_INTERFACENAME*/ );
            f_cf_monitor_up_diameter(v_s9);
        }
        if (PX_DIAMETER_SH_MONITORENABLED == true){
            v_InterfaceAvailable.interfaceName := PX_DIAMETER_SH_INTERFACENAME; 
            v_InterfaceAvailable.available := PX_DIAMETER_SH_MONITORENABLED;
            v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
            v_sh := f_cf_create_monitor_diameter (  valueof(m_MonIntf_Diameter_Sh)/*PX_DIAMETER_SH_INTERFACENAME*/ );
            f_cf_monitor_up_diameter(v_sh);
Bostjan Pintar's avatar
Bostjan Pintar committed
    }
    
    function f_update_MonitorInterfaceList(
                in InterfaceAvailableList p_MI_List,
                in InterfaceAvailable p_MI
            )
            return InterfaceAvailableList  {
                var InterfaceAvailable v_IntfAvail;
                var InterfaceAvailableList v_MI_List := p_MI_List;
                var integer v_size_mi_list := lengthof(v_MI_List);
                var integer v_size_mi_updated := v_size_mi_list + 1;
                var InterfaceAvailableList v_MI_List_updated;
                var integer i;

                for (i := 0; i < v_size_mi_updated; i := i + 1) {
                    v_MI_List_updated[i] := v_MI_List[i];
                }
                v_MI_List_updated[v_size_mi_updated] := p_MI;
                
                return (v_MI_List_updated);
            }
    }
}