1 /******************************************************************************
2 * Copyright (c) 2000-2016 Ericsson Telecom AB
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
9 * Adrien Kirjak – initial implementation
12 ** @purpose 1:22.3.2, Ensure that the getcall operation can be correctly restricted to a certain client
13 ** @verdict pass accept, ttcn3verdict:pass
14 *****************************************************************/
16 module Sem_220302_GetcallOperation_004 {
18 type charstring address;
19 const address c_client1Addr := "client1Addr";
20 const address c_client2Addr := "client2Addr";
23 * @desc testing of inline return template for remote procedure call
24 * @param p_par1 only input parameter
25 * @param p_par2 must have value 4 at return
26 * @param p_par3 must have value 5 at return
27 * @return must return value 1
29 signature p_Sem_220302_GetcallOperation_004(in integer p_par1, out integer p_par2, inout integer p_par3) return integer;
32 template p_Sem_220302_GetcallOperation_004 s_returnTemplate := {
33 p_par1 := 0, // p_par1 := - causes core dump
38 template p_Sem_220302_GetcallOperation_004 s_wrongTemplate := {
39 p_par1 := 0, // p_par1 := - causes core dump
44 template p_Sem_220302_GetcallOperation_004 s_callTemplate := {
46 p_par2 := 0, // p_par2 := - causes core dump
50 type port remotePort procedure {
51 inout p_Sem_220302_GetcallOperation_004;
52 } with {extension "internal"}
54 type component GeneralComp {
56 var GeneralComp v_myAddress;
59 function f_ClientQuery(GeneralComp p_myAddress) runs on GeneralComp {
60 var integer v_zero:=0;
62 var boolean first:=true;
63 v_myAddress := p_myAddress;
65 PCO.call(p_Sem_220302_GetcallOperation_004:s_callTemplate, 3.0) {
67 [first] PCO.getreply(p_Sem_220302_GetcallOperation_004:s_returnTemplate value 1) {
69 setverdict(fail); //receiving a reply is not expected for client2 query
71 [] PCO.catch (timeout) {
77 function f_ServerResponses(GeneralComp p_clientAddress) runs on GeneralComp {
78 var GeneralComp v_clientAddress;
81 timer t_timeout:=30.0;
83 template p_Sem_220302_GetcallOperation_004 s_acceptTemplate := {
93 [] PCO.getcall(p_Sem_220302_GetcallOperation_004:s_acceptTemplate) from p_clientAddress -> param(v_par1, v_par3) sender v_clientAddress {
94 PCO.reply(p_Sem_220302_GetcallOperation_004:{p_par1 := 0, p_par2 := v_par1+v_par3, p_par3 := v_par1+v_par3+1} value v_par1) to v_clientAddress; //procedure return values are sent
95 // p_par1 := - causes core dump
98 [] t_timeout.timeout {
106 function f_setAddress(GeneralComp p_myAddress) runs on GeneralComp {
107 v_myAddress := p_myAddress;
110 testcase TC_Sem_220302_GetcallOperation_004() runs on GeneralComp system GeneralComp {
111 var GeneralComp server := GeneralComp.create("RemoteProcedure Service");
112 var GeneralComp client := GeneralComp.create("RemoteProcedure Client");
113 var GeneralComp client2 := GeneralComp.create("RemoteProcedure Client");
115 connect(server:PCO, client:PCO);
116 connect(server:PCO, client2:PCO);
118 server.start(f_ServerResponses(client));
119 client.start(f_setAddress(client));
120 client2.start(f_ClientQuery(client));
130 disconnect(server:PCO, client:PCO);
131 disconnect(server:PCO, client2:PCO);
135 execute(TC_Sem_220302_GetcallOperation_004());