/* * @author STF 370 * @version $Id $ * @desc This module contains functions which implement the * configuration of the SUT adapter and mapping of test * components for establishing and tearing down different * test configurations. */ module AtsImsIot_TestConfiguration { import from LibIms_UpperTester language "TTCN-3:2008 Amendment 1" { modulepar PX_IMS_USER_DATA; } import from LibIot_TypesAndValues { type StartTrafficCaptureRsp, StopTrafficCaptureRsp; } import from AtsImsIot_TestSystem {type CF_INT_CALL, CF_INT_AS, CF_ROAM_AS;} import from LibIot_PIXITS { modulepar PX_EUT_A, PX_EUT_B, PX_PRODUCTS, PX_MAX_MSG_WAIT; } import from LibIot_Functions language "TTCN-3:2008 Amendment 1" { altstep a_receiveIOTVerdict; function f_setConformanceVerdict, f_setE2EVerdict; } 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 LibCommon_VerdictControl {type FncRetCode;} import from LibIot_TypesAndValues { type InterfaceInfo, InterfaceInfoList, Product, ProtocolFilter, StartTrafficCaptureRsp, StopTrafficCaptureRsp, SetFilterReq, SetFilterRsp, Status; } import from LibIot_TestConfiguration { function f_cf_oracle_up, f_cf_oracle_down; } import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } import from LibIot_TestInterface {type IotEquipmentUser;} import from AtsImsIot_Functions {function f_setInterfaceNameOnComponent;} group constantDefinitions { //* interface monitor name Gm A const charstring c_gm_A := "Gm A"; //* interface monitor name Gm B const charstring c_gm_B := "Gm B"; //* interface monitor name Mx A const charstring c_mx_A := "Mx A"; //* interface monitor name Mx B const charstring c_mx_B := "Mx B"; //* interface monitor name Ic const charstring c_ic := "Ic"; //* interface monitor name Isc A const charstring c_isc_A := "Isc A"; //* interface monitor name Isc B const charstring c_isc_B := "Isc B"; //* eut trigger name User A const charstring c_trigger_A := "User A"; //* eut trigger name User B const charstring c_trigger_B := "User B"; //* eut trigger name User A const charstring c_userUE_A := "User A"; const charstring c_userUE_A2 := "User A2"; //* eut trigger name User B const charstring c_userUE_B := "User B"; const charstring c_userUE_B2 := "User B2"; } group mappingFunctions { /** * * @desc initialize the adapter port of MTC */ function f_cf_adapter_up() runs on ImsTestCoordinator { map(self:acPort, system:acPort); } /** * * @desc uninitialize the adapter port of MTC */ function f_cf_adapter_down() runs on ImsTestCoordinator { unmap(self:acPort, system:acPort); } /** * * @desc initialize trigger component ports * @param p_driver trigger component */ function f_cf_user_up(in IotEquipmentUser p_driver) runs on ImsTestCoordinator { // connect sync ports connect(p_driver:syncPort, self:syncPort); // connect TSI ports map(p_driver:eaPort, system:eaPort); // configure oracle f_cf_oracle_up(p_driver); } /** * * @desc uninitialize trigger component ports * @param p_driver trigger component */ function f_cf_user_down(in IotEquipmentUser p_driver) runs on ImsTestCoordinator { // disconnect sync ports disconnect(p_driver:syncPort, self:syncPort); // disconnect TSI ports unmap(p_driver:eaPort, system:eaPort); // release oracle ports f_cf_oracle_down(p_driver); } /** * @desc configures monitor component: connects to the synchronnization * port, maps to the TSI port and connects to the oracle * @param p_monitor monitor component */ function f_cf_monitor_up(in ImsInterfaceMonitor p_monitor) runs on ImsTestCoordinator { // connect sync ports connect(p_monitor:syncPort, self:syncPort); connect(p_monitor:icpPort, self:icpPort); // mapp TSI port map(p_monitor:dPort, system:dPort); map(p_monitor:acPort, system:acPort); // configure oracle f_cf_oracle_up(p_monitor); } /** * @desc frees monitor component: disconnects the synchronnization * port, unmaps from the TSI port and disconnects from the oracle * @param p_monitor monitor component */ function f_cf_monitor_down(in ImsInterfaceMonitor p_monitor) runs on ImsTestCoordinator { // connect sync ports disconnect(p_monitor:syncPort, self:syncPort); disconnect(p_monitor:icpPort, self:icpPort); // mapp TSI port unmap(p_monitor:dPort, system:dPort); unmap(p_monitor:acPort, system:acPort); // configure oracle f_cf_oracle_down(p_monitor); } } group adapterConfiguration { function f_cf_setFilter(in SetFilterReq p_req) runs on ImsInterfaceMonitor { var SetFilterRsp v_rsp; var template Status v_status := { code := e_success, reason := * } tc_wait.start; acPort.send(p_req); alt { [] acPort.receive (mw_SetFilterRsp(v_status)) -> value v_rsp { tc_wait.stop; f_setE2EVerdict(pass, "Adapter Configuration: setting monitor filter successful"); f_setConformanceVerdict(pass, "Adapter Configuration: setting monitor filter successful"); } [] acPort.receive (mw_SetFilterRsp(?)) -> value v_rsp { tc_wait.stop; f_setE2EVerdict(inconc, "Adapter Configuration: error while setting monitor filter"); f_setConformanceVerdict(inconc, "Adapter Configuration: error while setting monitor filter"); } [] tc_wait.timeout { f_setE2EVerdict(inconc, "Adapter Configuration: timer expires while waiting for response"); f_setConformanceVerdict(inconc, "Adapter Configuration: timer expires while waiting for response"); } } } } group componentCreation { /** * @desc creates a monitor component * @param p_name name of the monitor component * @return the created monitor component */ function f_cf_create_monitor(in charstring p_name) runs on ImsTestCoordinator return ImsInterfaceMonitor { var ImsInterfaceMonitor v_monitor := ImsInterfaceMonitor.create(p_name) alive; v_monitor.start(f_setInterfaceNameOnComponent(p_name)); v_monitor.done; return v_monitor; } } group testConfiguration { /** * @desc * Test configuration function for roaming registration szenario. * More information can be found in ETSI TS 186 011-2 V2.3.1 Cause * 4.3.4. * @param p_Gm Gm interface monitor component * @param p_ic Mw interface monitor component */ function f_cf_roam_reg_up( inout ImsInterfaceMonitor p_Gm, inout ImsInterfaceMonitor p_ic ) 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_Gm); f_cf_monitor_up(p_ic); // TODO UE IP address and port is missing p_Gm.start(f_cf_setFilter( valueof (m_SetFilterReq( e_sip, f_getInterfaceInfoList("Gm", PX_EUT_A, PX_EUT_B) ) ))); p_Gm.done; p_ic.start(f_cf_setFilter( valueof(m_SetFilterReq( e_sip, f_getInterfaceInfoList("Ic", PX_EUT_A, PX_EUT_B) ) ))); p_ic.done; // 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; } } } /** * @desc * Test configuration function for roaming registration szenario. * More information can be found in ETSI TS 186 011-2 V2.3.1 Cause * 4.3.4. * @param p_Gm Gm interface monitor component * @param p_ic Mw interface monitor component */ function f_cf_roam_reg_down( inout ImsInterfaceMonitor p_Gm, inout ImsInterfaceMonitor p_ic ) 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_Gm); f_cf_monitor_down(p_ic); } /** * @desc * Interworking Call test configuration. Mapps/connects all related * ports and initialize the test adapter. * More information can be found in ETSI TS 186 011-2 V2.3.1 Cause * 4.3.4. * @param p_GmA Gm A Interface Monitor component * @param p_ic Mw Interface Monitor component * @param p_GmB * Gm B Interface Monitor component (optional, can be omitted) */ function f_cf_int_call_up( inout CF_INT_CALL 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.mw); if(isvalue(p_config.gmB)) { f_cf_monitor_up(p_config.gmB); } // TODO UE IP address and port is missing 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.mw.start(f_cf_setFilter( valueof(m_SetFilterReq( e_sip, f_getInterfaceInfoList("Ic", PX_EUT_A, PX_EUT_B) ) ))); p_config.mw.done; if(isvalue(p_config.gmB)) { p_config.gmB.start(f_cf_setFilter( valueof (m_SetFilterReq( e_sip, {f_getInterfaceInfo("Gm", PX_PRODUCTS[PX_EUT_B])} ) ))); p_config.gmB.done; } // 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; } } } /** * @desc * Interworking Call test configuration. Ummaps/disconnect the * related component ports. More information can be found in ETSI TS * 186 011-2 V2.3.1 Cause 4.3.4. * @param p_GmA Gm A Interface Monitor component * @param p_ic Mw Interface Monitor component * @param p_GmB * Gm B Interface Monitor component (optional, can be omitted) */ function f_cf_int_call_down( inout CF_INT_CALL 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.mw); if(isvalue(p_config.gmB)) { f_cf_monitor_down(p_config.gmB); } } /** * @desc * Roaming Call test configuration. Mapps/connects all related * ports and initialize the test adapter. * More information can be found in ETSI TS 186 011-2 V2.3.1 Cause * 4.3.4. * @param p_Gm Gm A Interface Monitor component * @param p_ic Mw Interface Monitor component */ function f_cf_roam_call_up( inout ImsInterfaceMonitor p_Gm, inout ImsInterfaceMonitor p_ic ) 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_Gm); f_cf_monitor_up(p_ic); // TODO UE IP address and port is missing // TODO UE IP address and port is missing p_Gm.start(f_cf_setFilter( valueof (m_SetFilterReq( e_sip, f_getInterfaceInfoList("Gm", PX_EUT_A, PX_EUT_B) ) ))); p_Gm.done; p_ic.start(f_cf_setFilter( valueof(m_SetFilterReq( e_sip, f_getInterfaceInfoList("Ic", PX_EUT_A, PX_EUT_B) ) ))); p_ic.done; // 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; } } } /** * @desc * Roaming Call test configuration. Ummaps/disconnect the * related component ports. More information can be found in ETSI TS * 186 011-2 V2.3.1 Cause 4.3.4. * @param p_GmA Gm A Interface Monitor component * @param p_ic Mw Interface Monitor component */ function f_cf_roam_call_down( inout ImsInterfaceMonitor p_GmA, inout ImsInterfaceMonitor p_ic ) 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_GmA); f_cf_monitor_down(p_ic); } /** * @desc * Roaming Call test configuration. Mapps/connects all related * ports and initialize the test adapter. * More information can be found in ETSI TS 186 011-2 V2.3.1 Cause * 4.3.4. * @param p_config.gmA Gm A Interface Monitor component * @param p_config.mw Mw Interface Monitor component * @param p_config.gmB Gm B Interface Monitor component * @param p_config.iscA Isc A Interface Monitor component * @param p_config.iscB Isc B Interface Monitor component * IscA and IscB Interface Monitor component (optional, can be omitted) */ function f_cf_int_as_up( inout CF_INT_AS 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.mw); f_cf_monitor_up(p_config.gmB); if(isvalue(p_config.iscA)) { f_cf_monitor_up(p_config.iscA); } if(isvalue(p_config.iscB)) { f_cf_monitor_up(p_config.iscB); } // TODO UE IP address and port is missing 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.mw.start(f_cf_setFilter( valueof(m_SetFilterReq( e_sip, f_getInterfaceInfoList("Ic", PX_EUT_A, PX_EUT_B) ) ))); p_config.mw.done; p_config.gmB.start(f_cf_setFilter( valueof (m_SetFilterReq( e_sip, {f_getInterfaceInfo("Gm", PX_PRODUCTS[PX_EUT_B])} ) ))); p_config.gmB.done; if(isvalue(p_config.iscA)) { p_config.iscA.start(f_cf_setFilter( valueof (m_SetFilterReq( e_sip, {f_getInterfaceInfo("Isc", PX_PRODUCTS[PX_EUT_A])} ) ))); p_config.iscA.done; } if(isvalue(p_config.iscB)) { p_config.iscB.start(f_cf_setFilter( valueof (m_SetFilterReq( e_sip, {f_getInterfaceInfo("Isc", PX_PRODUCTS[PX_EUT_B])} ) ))); p_config.iscB.done; } // 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; } } } /** * @desc * Interworking Application Server test configuration. * Ummaps/disconnect the related component ports. More information * can be found in ETSI TS 186 011-2 V2.3.1 Cause 4.3.4. * @param p_config.gmA Gm A Interface Monitor component * @param p_config.mw Mw Interface Monitor component * @param p_config.gmB Gm B Interface Monitor component * @param p_config.iscA Isc A Interface Monitor component * @param p_config.iscB Isc B Interface Monitor component * IscA and IscB Interface Monitor component (optional, can be omitted) */ function f_cf_int_as_down( inout CF_INT_AS 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.mw); f_cf_monitor_down(p_config.gmB); if(isvalue(p_config.iscA)) { f_cf_monitor_down(p_config.iscA); } if(isvalue(p_config.iscB)) { f_cf_monitor_down(p_config.iscB); } } /** * @desc * Roaming Call test configuration. Mapps/connects all related * ports and initialize the test adapter. * More information can be found in ETSI TS 186 011-2 V2.3.1 Cause * 4.3.4. * @param p_config.gmA Gm A Interface Monitor component * @param p_config.mw Mw Interface Monitor component * @param p_config.gmB Gm B Interface Monitor component * @param p_config.iscA Isc A Interface Monitor component * @param p_config.iscB Isc B Interface Monitor component * IscA and IscB Interface Monitor component (optional, can be omitted) */ function f_cf_roam_as_up( inout CF_ROAM_AS 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.mw); f_cf_monitor_up(p_config.gmB); if(isvalue(p_config.iscA)) { f_cf_monitor_up(p_config.iscA); } if(isvalue(p_config.iscB)) { f_cf_monitor_up(p_config.iscB); } // TODO UE IP address and port is missing 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.mw.start(f_cf_setFilter( valueof(m_SetFilterReq( e_sip, f_getInterfaceInfoList("Ic", PX_EUT_A, PX_EUT_B) ) ))); p_config.mw.done; p_config.gmB.start(f_cf_setFilter( valueof (m_SetFilterReq( e_sip, {f_getInterfaceInfo("Gm", PX_PRODUCTS[PX_EUT_B])} ) ))); p_config.gmB.done; if(isvalue(p_config.iscA)) { p_config.iscA.start(f_cf_setFilter( valueof (m_SetFilterReq( e_sip, {f_getInterfaceInfo("Isc", PX_PRODUCTS[PX_EUT_A])} ) ))); p_config.iscA.done; } if(isvalue(p_config.iscB)) { p_config.iscB.start(f_cf_setFilter( valueof (m_SetFilterReq( e_sip, {f_getInterfaceInfo("Isc", PX_PRODUCTS[PX_EUT_B])} ) ))); p_config.iscB.done; } // 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; } } } /** * @desc * Interworking Application Server test configuration. * Ummaps/disconnect the related component ports. More information * can be found in ETSI TS 186 011-2 V2.3.1 Cause 4.3.4. * @param p_config.gmA Gm A Interface Monitor component * @param p_config.mw Mw Interface Monitor component * @param p_config.gmB Gm B Interface Monitor component * @param p_config.iscA Isc A Interface Monitor component * @param p_config.iscB Isc B Interface Monitor component * IscA and IscB Interface Monitor component (optional, can be omitted) */ function f_cf_roam_as_down( inout CF_ROAM_AS 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.mw); f_cf_monitor_down(p_config.gmB); if(isvalue(p_config.iscA)) { f_cf_monitor_down(p_config.iscA); } if(isvalue(p_config.iscB)) { f_cf_monitor_down(p_config.iscB); } } } function f_getInterfaceInfoList( in charstring p_interfaceName, in integer p_product1, in integer p_product2 ) return InterfaceInfoList { var InterfaceInfoList v_list := { f_getInterfaceInfo(p_interfaceName, PX_PRODUCTS[p_product1]), f_getInterfaceInfo(p_interfaceName, PX_PRODUCTS[p_product2]) }; return v_list; } function f_getInterfaceInfo(in charstring p_interfaceName, Product p_product) return InterfaceInfo { var InterfaceInfo v_info := { IpInterfaceInfo := { { domainName := "invalid", IpAddress := "0.0.0.0", portNumbers := {0} } } }; for(var integer i := 0; i < lengthof(p_product.monitorInterfaces); i := i + 1) { // YANN: <= instead of < if(p_product.monitorInterfaces[i].interfaceName == p_interfaceName) { return p_product.monitorInterfaces[i].interfaceInfo; } } return v_info; } }