AtsImsIot_TestConfiguration.ttcn 57.7 KB
Newer Older
					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.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])}
					)
				)));
				p_config.gmB.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;
				
				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