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_001.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 only matching procedure from the queue
13 ** @verdict pass accept, ttcn3verdict:pass
14 *****************************************************************/
15
16 module Sem_220302_GetcallOperation_001 {
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_001(in integer p_par1, out integer p_par2, inout integer p_par3) return integer;
26
27 template p_Sem_220302_GetcallOperation_001 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_001 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_001 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_001;
47 } with {extension "internal"}
48
49 type component GeneralComp {
50 port remotePort PCO;
51 }
52
53 function f_ClientQuery() runs on GeneralComp {
54
55 PCO.call(p_Sem_220302_GetcallOperation_001:s_callTemplate, 5.0) {
56
57 [] PCO.getreply(p_Sem_220302_GetcallOperation_001:s_wrongTemplate value 1) {
58 setverdict(fail);
59 }
60 [] PCO.getreply(p_Sem_220302_GetcallOperation_001:s_returnTemplate value 2) {
61 setverdict(fail);
62 }
63 [] PCO.getreply(p_Sem_220302_GetcallOperation_001:s_returnTemplate value 1) {
64 setverdict(pass);
65 }
66 [] PCO.catch (timeout) {
67 setverdict(fail);
68 }
69 }
70 }
71
72 function f_ServerResponses() runs on GeneralComp {
73
74 var integer v_par1;
75 var integer v_par3;
76 timer t_timeout:=30.0;
77
78 template p_Sem_220302_GetcallOperation_001 s_noacceptTemplate := {
79 p_par1 := 8,
80 p_par2 := 8,
81 p_par3 := 8
82 };
83
84 template p_Sem_220302_GetcallOperation_001 s_acceptTemplate := {
85 p_par1 := ?,
86 p_par2 := ?,
87 p_par3 := ?
88 };
89
90
91 t_timeout.start;
92
93 alt {
94 [] PCO.getcall(p_Sem_220302_GetcallOperation_001:s_noacceptTemplate) {
95 //should not remove incoming procedure
96 repeat;
97 }
98 [] PCO.getcall(p_Sem_220302_GetcallOperation_001:s_acceptTemplate) -> param(v_par1, v_par3) {
99 PCO.reply(p_Sem_220302_GetcallOperation_001:{p_par1 := 0, p_par2 := v_par1+v_par3, p_par3 := v_par1+v_par3+1} value v_par1);
100 //procedure return values are sent, // p_par1 := - causes core dump
101 }
102 [] t_timeout.timeout {
103 setverdict(fail);
104 }
105 }
106
107 }
108
109
110 testcase TC_Sem_220302_GetcallOperation_001() runs on GeneralComp system GeneralComp {
111 var GeneralComp server := GeneralComp.create("RemoteProcedure Service");
112 var GeneralComp client := GeneralComp.create("RemoteProcedure Client");
113 // map the PTCs to the system port
114 connect(server:PCO, client:PCO);
115
116 server.start(f_ServerResponses());
117 client.start(f_ClientQuery());
118
119 alt {
120 [] client.done {
121 server.stop;
122 }
123 }
124
125 alt {
126 [] all component.done {}
127 }
128
129 disconnect(server:PCO, client:PCO);
130 }
131
132 control{
133 execute(TC_Sem_220302_GetcallOperation_001());
134 }
135
136 }
This page took 0.044527 seconds and 5 git commands to generate.