conformance_test/positive_tests added
[deliverable/titan.core.git] / conformance_test / positive_tests / 22_communication_operations / 2203_procedure_based_communication / 220302_getcall_operation / Sem_220302_GetcallOperation_002.ttcn
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
7 *
8 * Contributors:
9 * Adrien Kirjak – initial implementation
10 *
11 ** @version 0.0.1
12 ** @purpose 1:22.3.2, Ensure that getcall operations remove the matching procedure from the queue
13 ** @verdict pass accept, ttcn3verdict:pass
14 *****************************************************************/
15
16 module Sem_220302_GetcallOperation_002 {
17
18 /**
19 * @desc testing of inline return template for remote procedure call
20 * @param p_par1 only input parameter
21 * @param p_par2 must have value 4 at return
22 * @param p_par3 must have value 5 at return
23 * @return must return value 1
24 */
25 signature p_Sem_220302_GetcallOperation_002(in integer p_par1, out integer p_par2, inout integer p_par3) return integer;
26
27 template p_Sem_220302_GetcallOperation_002 s_returnTemplate := {
28 p_par1 := 0, // p_par1 := - causes core dump
29 p_par2 := 4,
30 p_par3 := 5
31 }
32
33 template p_Sem_220302_GetcallOperation_002 s_wrongTemplate := {
34 p_par1 := 0, // p_par1 := - causes core dump
35 p_par2 := 2,
36 p_par3 := 3
37 }
38
39 template p_Sem_220302_GetcallOperation_002 s_callTemplate := {
40 p_par1 := 1,
41 p_par2 := 0, // p_par2 := - causes core dump
42 p_par3 := 3
43 }
44
45 type port remotePort procedure {
46 inout p_Sem_220302_GetcallOperation_002;
47 } with {extension "internal"}
48
49 type component GeneralComp {
50 port remotePort PCO;
51 }
52
53 function f_ClientQuery() runs on GeneralComp {
54 var integer v_zero:=0;
55 var integer v_one:=1;
56
57 PCO.call(p_Sem_220302_GetcallOperation_002:s_callTemplate, 5.0) {
58
59 [] PCO.getreply(p_Sem_220302_GetcallOperation_002:s_wrongTemplate value 1) {
60 setverdict(fail);
61 }
62 [] PCO.getreply(p_Sem_220302_GetcallOperation_002:s_returnTemplate value 2) {
63 setverdict(fail);
64 }
65 [v_one>v_zero] PCO.getreply(p_Sem_220302_GetcallOperation_002:s_returnTemplate value 1) {
66 //check that boolean guard is correctly evaluated
67 setverdict(pass);
68 }
69 [] PCO.catch (timeout) {
70 setverdict(fail);
71 }
72 }
73 }
74
75 function f_ServerResponses() runs on GeneralComp {
76
77 var integer v_par1;
78 var integer v_par3;
79 timer t_timeout:=30.0;
80
81 template p_Sem_220302_GetcallOperation_002 s_noacceptTemplate := {
82 p_par1 := 8,
83 p_par2 := 8,
84 p_par3 := 8
85 };
86
87 template p_Sem_220302_GetcallOperation_002 s_acceptTemplate := {
88 p_par1 := ?,
89 p_par2 := ?,
90 p_par3 := ?
91 };
92
93
94 t_timeout.start;
95
96 alt {
97 [] PCO.getcall(p_Sem_220302_GetcallOperation_002:s_acceptTemplate) -> param(v_par1, v_par3) {
98 PCO.reply(p_Sem_220302_GetcallOperation_002:{p_par1 := 0, p_par2 := v_par1+v_par3, p_par3 := v_par1+v_par3+1} value v_par1); //procedure return values are sent,
99 // p_par1 := - causes core dump
100 repeat;
101 }
102 [] PCO.getcall { //this part is not matched if procedure is removed from queue
103 setverdict(fail);
104 }
105 [] t_timeout.timeout {
106 }
107 }
108
109 }
110
111
112 testcase TC_Sem_220302_GetcallOperation_002() runs on GeneralComp system GeneralComp {
113 var GeneralComp server := GeneralComp.create("RemoteProcedure Service");
114 var GeneralComp client := GeneralComp.create("RemoteProcedure Client");
115 timer t_wait:=1.0;
116
117 connect(server:PCO, client:PCO);
118
119 server.start(f_ServerResponses());
120 client.start(f_ClientQuery());
121
122 alt {
123 [] client.done {
124 t_wait.start;
125 t_wait.timeout; //this gives a chance for server to still test for second getcall match
126 server.stop;
127 }
128 }
129
130 alt {
131 [] all component.done {}
132 }
133
134 disconnect(server:PCO, client:PCO);
135 }
136
137 control{
138 execute(TC_Sem_220302_GetcallOperation_002());
139 }
140
141 }
This page took 0.034222 seconds and 5 git commands to generate.