/* * @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 */ 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*/; } 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 */ 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_MW_PSAP_MONITORENABLED == true){ vc_MonIntfList.mwPSAP := valueof(m_MonIntf_Sip_Mw_PSAP); } 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); } 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); } 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 */ 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.mwPSAP)){ vc_vxlte_monitor_components.mwPSAP := f_cf_create_monitor_sip ( vc_MonIntfList.mwPSAP); } 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); } 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); } 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 */ function f_cf_VxLteMonitor_Up() runs on ImsTestCoordinator{ //Initialize the Adapter (including the TrafficCapture process). 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( e_sip, {vc_MonIntfList.gmA.interfaceInfo} ) ))); } 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.mwPSAP)){ f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwPSAP); vc_vxlte_monitor_components.mwPI.start(f_cf_setFilter( valueof (m_SetFilterReq( e_sip, {vc_MonIntfList.mwPSAP.interfaceInfo} ) ))); } 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} ) ))); } 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} ) ))); } 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 */ 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.mwPSAP)){ f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPSAP); } 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); } 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); } 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