AtsImsIot_TestConfiguration.ttcn 75.7 KB
Newer Older
Bostjan Pintar's avatar
Bostjan Pintar committed
                f_cf_monitor_up(p_config.mxA);
                f_cf_monitor_up(p_config.ici);
Bostjan Pintar's avatar
Bostjan Pintar committed
                f_cf_monitor_up(p_config.mxB);
                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;
                
Bostjan Pintar's avatar
Bostjan Pintar committed
                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.ici.start(f_cf_setFilter(
                    valueof(m_SetFilterReq(
                        e_sip, 
                        f_getInterfaceInfoList("Ici", PX_EUT_A, PX_EUT_B)
                    )
                )));
                p_config.ici.done;
                
                p_config.gmB.start(f_cf_setFilter(
                    valueof (m_SetFilterReq(
                        e_sip, 
                        {f_getInterfaceInfo("Gm", PX_PRODUCTS[PX_EUT_B])}
Bostjan Pintar's avatar
Bostjan Pintar committed
                p_config.mxB.start(f_cf_setFilter(
                    valueof (m_SetFilterReq(
                        e_sip,
                        {f_getInterfaceInfo("Mx", PX_PRODUCTS[PX_EUT_B])}
                    )
                )));
                p_config.mxB.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 Clause 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);
Bostjan Pintar's avatar
Bostjan Pintar committed
                f_cf_monitor_down(p_config.mxA);
                f_cf_monitor_down(p_config.ici);
Bostjan Pintar's avatar
Bostjan Pintar committed
                f_cf_monitor_down(p_config.mxB);
                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 Clause
        *     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);
Bostjan Pintar's avatar
Bostjan Pintar committed
            f_cf_monitor_up(p_config.mxA);
            f_cf_monitor_up(p_config.ici);
Bostjan Pintar's avatar
Bostjan Pintar committed
            f_cf_monitor_up(p_config.mxB);
            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;
            
Bostjan Pintar's avatar
Bostjan Pintar committed
            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.ici.start(f_cf_setFilter(
                valueof(m_SetFilterReq(
                    e_sip, 
                    f_getInterfaceInfoList("Ici", PX_EUT_A, PX_EUT_B)
                )
            )));
            p_config.ici.done;
            
Bostjan Pintar's avatar
Bostjan Pintar committed
            p_config.mxB.start(f_cf_setFilter(
                valueof (m_SetFilterReq(
                    e_sip,
                    {f_getInterfaceInfo("Mx", PX_PRODUCTS[PX_EUT_B])}
                )
            )));
            p_config.mxB.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 Clause 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);
Bostjan Pintar's avatar
Bostjan Pintar committed
            f_cf_monitor_down(p_config.mxA);
            f_cf_monitor_down(p_config.ici);
Bostjan Pintar's avatar
Bostjan Pintar committed
            f_cf_monitor_down(p_config.mxB);
            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_cf_epc_call_up ( in CF_EPC_CALL p_config ) runs on ImsTestCoordinator {
Bostjan Pintar's avatar
Bostjan Pintar committed
            // Initialize the Adapter (including the TrafficCapture process).
            timer tc_configureGuard;
            var StartTrafficCaptureRsp startResult;
Bostjan Pintar's avatar
Bostjan Pintar committed
            activate(a_receiveIOTVerdict());
Bostjan Pintar's avatar
Bostjan Pintar committed
            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;
                }
            } 
Bostjan Pintar's avatar
Bostjan Pintar committed
            f_cf_monitor_up(p_config.gmA);
            f_cf_monitor_up(p_config.rx);
            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;
Bostjan Pintar's avatar
Bostjan Pintar committed
            p_config.rx.start(f_cf_setFilter(
                valueof (m_SetFilterReq(
                    e_diameter,
                    {f_getInterfaceInfo("Rx", PX_PRODUCTS[PX_EUT_A])}
                )
            )));
            p_config.rx.done;
Bostjan Pintar's avatar
Bostjan Pintar committed
            p_config.mxA.start(f_cf_setFilter(
                valueof (m_SetFilterReq(
                    e_sip,
                    {f_getInterfaceInfo("Mx", PX_PRODUCTS[PX_EUT_A])}
                )
            )));
            p_config.mxA.done;
Bostjan Pintar's avatar
Bostjan Pintar committed
            p_config.mw.start(f_cf_setFilter(
                valueof (m_SetFilterReq(
                    e_sip,
                    {f_getInterfaceInfo("Mw", PX_PRODUCTS[PX_EUT_A])}
                )
            )));
            p_config.mw.done;
Bostjan Pintar's avatar
Bostjan Pintar committed
            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_up
        function f_cf_epc_call_down(
            inout CF_EPC_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);
Bostjan Pintar's avatar
Bostjan Pintar committed
            f_cf_monitor_down(p_config.rx);
            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_down
    }
    
    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;
    }
    
    group g_release15 {
        
Bostjan Pintar's avatar
Bostjan Pintar committed
        function f_cf_epc_call_rel15_up_old ( in CF_ATT_old 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.mwPS);
            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.mwPS.start(f_cf_setFilter(
                valueof (m_SetFilterReq(
                    e_sip,
                    {f_getInterfaceInfo("Mw", PX_PRODUCTS[PX_EUT_A])}
                )
            )));
            p_config.mwPS.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_old(
            inout CF_ATT_old 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.mwPS);
            f_cf_monitor_down(p_config.sgi);
            f_cf_monitor_down(p_config.gmB);
        } // end of function f_cf_epc_call_rel15_down
        
        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_sip(p_config.gmA);
            f_cf_monitor_up_diameter(p_config.rx);
            f_cf_monitor_up_diameter(p_config.s6a);
            f_cf_monitor_up_diameter(p_config.gx);
            f_cf_monitor_up_sip(p_config.mxA);
            f_cf_monitor_up_sip(p_config.mw);
            f_cf_monitor_up_sgi(p_config.sgi);
            if(isvalue(p_config.gmB)) {
                f_cf_monitor_up_sip(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_sip(p_config.gmA);
            f_cf_monitor_down_diameter(p_config.rx);
            f_cf_monitor_down_diameter(p_config.s6a);
            f_cf_monitor_down_diameter(p_config.gx);
            f_cf_monitor_down_sip(p_config.mxA);
            f_cf_monitor_down_sip(p_config.mw);
            f_cf_monitor_down_sgi(p_config.sgi);
            if(isvalue(p_config.gmB)) {
                f_cf_monitor_down_sip(p_config.gmB);
            }
            
        } // end of function f_cf_epc_call_rel15_down
        
    } // end group g_release15