Sync with 5.4.0
[deliverable/titan.core.git] / regression_test / configOper / TconfigOper.ttcn
CommitLineData
970ed795 1/******************************************************************************
3abe9331 2 * Copyright (c) 2000-2015 Ericsson Telecom AB
970ed795
EL
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 ******************************************************************************/
8module TconfigOper {
9
10type port configOper_port1 message
11{ inout integer } with { extension "internal" };
12
13// A "black hole" port.
14type port configOper_port2 message {
15 inout charstring;
16 }
17
18type component configOper_comp1 {
19 port configOper_port1 Port1;
20 var integer xx1;
21 };
22
23type component configOper_comp2 {
24 port configOper_port1 Port2[5];
25 var integer xx2;
26 };
27
28type component configOper_comp4 {
29 port configOper_port2 Port4;
30 }
31
32type component configOper_comp5 {
33 port configOper_port1 P, Q, R;
34 timer T := 1.0;
35}
36
37function configOper_behav0() runs on configOper_comp1 {
38timer T:=1.0; // doing nothing, alt is needed for "stop"
39while (true) {
40 T.start;
41 alt
42 { [] T.timeout {T.start} }
43 };
44};
45
46function configOper_behav1() runs on configOper_comp1 {
47 //sends back x+1
48Port1.receive(integer:?) -> value xx1;
49xx1:=xx1+1;
50Port1.send(xx1);
51};
52
53function configOper_behav2() runs on configOper_comp1 {
54 //sends back x+2
55Port1.receive(integer:?) -> value xx1;
56xx1:=xx1+2;
57Port1.send(xx1);
58};
59
60function configOper_behav3() runs on configOper_comp1 {
61timer TT:=1.0;
62 //if receives anything -> stops
63Port1.receive(integer:?);
64TT.start;
65alt
66 { [] Port1.receive(integer:?) { action("configOper_behav3 received the integer after ", TT.read, " seconds");};
67 [] TT.timeout { action("configOper_behav3 timed out"); stop; } };
68};
69
70testcase configOperRunning1() runs on configOper_comp1 {
71var configOper_comp1 comp:=configOper_comp1.create;
72comp.start(configOper_behav0());
73if (comp.running) {setverdict(pass)}
74 else {setverdict(fail)};
75comp.stop;
76};
77
78testcase configOperRunning2() runs on configOper_comp1 {
79var configOper_comp1 comp:=configOper_comp1.create;
80comp.start(configOper_behav0());
81comp.stop;
82if (comp.running) {setverdict(fail)}
83 else {setverdict(pass)};
84};
85
86testcase configOperConnectMtc() runs on configOper_comp1 {
87var configOper_comp1 comp:=configOper_comp1.create;
88connect(mtc:Port1,comp:Port1);
89comp.start(configOper_behav1());
90xx1:=5;
91Port1.send(xx1);
92Port1.receive(integer:?) -> value xx1;
93if (xx1==6) {setverdict(pass)}
94 else {setverdict(fail)};
95comp.stop;
96};
97
98testcase configOperConnectSelf() runs on configOper_comp1 {
99var configOper_comp1 comp:=configOper_comp1.create;
100connect(self:Port1,comp:Port1);
101comp.start(configOper_behav1());
102xx1:=5;
103Port1.send(xx1);
104Port1.receive(integer:?) -> value xx1;
105if (xx1==6) {setverdict(pass)}
106 else {setverdict(fail)};
107comp.stop;
108};
109
110testcase configOperDisconnect() runs on configOper_comp1 {
111var configOper_comp1 comp1:=configOper_comp1.create;
112var configOper_comp1 comp2:=configOper_comp1.create;
113comp1.start(configOper_behav1());
114comp2.start(configOper_behav2());
115connect(self:Port1,comp1:Port1);
116disconnect(self:Port1,comp1:Port1);
117connect(self:Port1,comp2:Port1);
118xx1:=5;
119Port1.send(xx1);
120Port1.receive(integer:?) -> value xx1;
121if (xx1==7) {setverdict(pass)}
122 else {setverdict(fail)};
123comp1.stop;
124comp2.stop;
125};
126
127testcase configOperDone() runs on configOper_comp1 {
128var configOper_comp1 comp:=configOper_comp1.create;
129timer T1:=10.0;
130connect(self:Port1,comp:Port1);
131comp.start(configOper_behav3());
132xx1:=5;
133Port1.send(xx1);
134T1.start;
135alt {
136 [] Port1.receive(integer:?) -> value xx1 {setverdict(fail)}
137 [] comp.done {setverdict(pass)}
138 [] T1.timeout {setverdict(fail)}
139}
140};
141
142testcase configOperArray() runs on configOper_comp2 {
143var configOper_comp1 comp[5];
144var integer i;
145xx2:=5;
146for (i:=0; i<5; i:=i+1)
147{ comp[i]:=configOper_comp1.create;
148 connect(self:Port2[i],comp[i]:Port1);
149 comp[i].start(configOper_behav1());
150 Port2[i].send(xx2);
151 Port2[i].receive(integer:?) -> value xx2;
152 if (xx2==i+6) {setverdict(pass)}
153 else {setverdict(fail)};
154}
155for (i:=5; i<5; i:=i+1) {comp[i].stop};
156};
157
158testcase configOperRunningAny() runs on configOper_comp2 {
159var configOper_comp1 comp[5];
160var integer i;
161xx2:=5;
162for (i:=0; i<5; i:=i+1)
163{ comp[i]:=configOper_comp1.create;
164 comp[i].start(configOper_behav0());
165}
166for (i:=0; i<4; i:=i+1)
167{ comp[i].stop;
168 if (any component.running) {setverdict(pass)}
169 else {setverdict(fail)};
170}
171comp[4].stop;
172if (any component.running) {setverdict(fail)}
173 else {setverdict(pass)};
174};
175
176testcase configOperRunningAll() runs on configOper_comp2 {
177var configOper_comp1 comp[5];
178var integer i;
179xx2:=5;
180for (i:=0; i<5; i:=i+1)
181{ comp[i]:=configOper_comp1.create;
182 comp[i].start(configOper_behav0());
183}
184if (all component.running) {setverdict(pass)}
185 else {setverdict(fail)};
186for (i:=0; i<5; i:=i+1)
187{ comp[i].stop;
188 if (all component.running) {setverdict(pass)}
189 else {setverdict(fail)};
190}
191};
192
193testcase configOperDoneAny() runs on configOper_comp2 {
194 var configOper_comp1 comp[5];
195 var integer i;
196 timer T1:=2.0;
197 xx2:=5;
198 for (i:=0; i<5; i:=i+1)
199 { comp[i]:=configOper_comp1.create;
200 connect(self:Port2[i],comp[i]:Port1);
201 comp[i].start(configOper_behav3());
202 }
203 for (i:=0; i<5; i:=i+1) {
204 Port2[i].send(xx2);
205 }
206
207 T1.start;
208 T1.stop;
209
210 alt {
211 [] any component.done {setverdict(pass)}
212 [] T1.timeout {setverdict(fail)}
213 }
214
215};
216
217testcase configOperDoneAny2() runs on configOper_comp2 {
218 var configOper_comp1 ptc;
219 timer T1 := 1.0;
220 T1.start;
221 alt {
222 [] any component.done { setverdict(fail); }
223 [] T1.timeout { setverdict(pass); }
224 }
225 ptc := configOper_comp1.create;
226 T1.start;
227 alt {
228 [] any component.done { setverdict(fail); }
229 [] T1.timeout { setverdict(pass); }
230 }
231 ptc.stop;
232 T1.start;
233 alt {
234 [] any component.done { setverdict(pass); }
235 [] T1.timeout { setverdict(fail); }
236 }
237}
238
239testcase configOperDoneAny3() runs on configOper_comp2 {
240 var configOper_comp1 ptc := configOper_comp1.create;
241 timer T1 := 1.0;
242 ptc.kill;
243 T1.start;
244 alt {
245 [] any component.done { setverdict(pass); }
246 [] T1.timeout { setverdict(fail); }
247 }
248}
249
250testcase configOperDoneAll() runs on configOper_comp2 {
251var configOper_comp1 comp[5];
252var integer i;
253timer T1:=2.0;
254xx2:=5;
255log("xx");
256for (i:=0; i<5; i:=i+1)
257{ log(i);
258 comp[i]:=configOper_comp1.create;
259 connect(self:Port2[i],comp[i]:Port1);
260 comp[i].start(configOper_behav3());
261 }
262for (i:=0; i<5; i:=i+1) {
263 log(i);
264 Port2[i].send(xx2);
265 }
266T1.start;
267 alt {
268 [] Port2[2].receive(integer:?) {setverdict(fail)}
269 [] all component.done {setverdict(pass)}
270 [] T1.timeout {setverdict(fail)}
271 }
272};
273
274testcase configOperStopAll() runs on configOper_comp2 {
275var configOper_comp1 comp[5];
276var integer i;
277//timer T1:=2.0;
278//xx2:=5;
279for (i:=0; i<5; i:=i+1)
280{ log(i);
281 comp[i]:=configOper_comp1.create;
282 log("z");
283 connect(self:Port2[i],comp[i]:Port1);
284 comp[i].start(configOper_behav3());
285 Port2[i].start;
286 }
287all component.stop;
288if (any component.running) {setverdict(fail)}
289 else {setverdict(pass)};
290}
291
292testcase configOperAutostop1() runs on configOper_comp2 {
293var configOper_comp1 comp[5];
294var integer i;
295timer T1:=2.0;
296xx2:=5;
297for (i:=0; i<5; i:=i+1)
298{ comp[i]:=configOper_comp1.create;
299 connect(self:Port2[i],comp[i]:Port1);
300 comp[i].start(configOper_behav1());
301 Port2[i].send(xx2);
302 }
303all component.done;
304setverdict(pass);
305};
306
307testcase configOperAutostop2() runs on configOper_comp2 {
308var configOper_comp1 comp[5];
309var integer i;
310timer T1:=2.0;
311xx2:=5;
312for (i:=0; i<5; i:=i+1)
313{ comp[i]:=configOper_comp1.create;
314 connect(self:Port2[i],comp[i]:Port1);
315 comp[i].start(configOper_behav1());
316 }
317for (i:=0; i<5; i:=i+1)
318{ Port2[i].send(xx2);
319 Port2[i].receive(integer:?) -> value xx2;
320 if (xx2==i+6) {setverdict(pass)}
321 else {setverdict(fail)};
322}
323for (i:=5; i<5; i:=i+1) {comp[i].done};
324};
325
326type component configOper_comp3 {
327 port configOper_port1 Port3[5];
328 var integer xx1;
329};
330
331function configOper_behav4() runs on configOper_comp1 {
332 Port1.receive(integer:?) -> value xx1;
333 xx1:=xx1+1;
334};
335
336function configOper_behav5() runs on configOper_comp1 {
337 xx1:=xx1+200;
338};
339
340function configOper_behav6() runs on configOper_comp1 {
341 xx1:=xx1+2;
342 Port1.send(xx1);
343};
344
345function configOper_behav7(float par) runs on configOper_comp1 {
346 timer T:=par;
347 T.start;
348 T.timeout;
349};
350
351testcase configOperRunningAlive_alive() runs on configOper_comp1 {
352 var configOper_comp1 comp:=configOper_comp1.create alive;
353 comp.start(configOper_behav0());
354 if (comp.running and comp.alive)
355 {setverdict(pass)}
356 else
357 {setverdict(fail)};
358 comp.kill;
359};
360
361testcase configOperRunningAliveKill_alive() runs on configOper_comp1 {
362 var configOper_comp1 comp:=configOper_comp1.create alive;
363 comp.start(configOper_behav0());
364 comp.stop;
365 if (comp.running) {setverdict(fail)}
366 else {setverdict(pass)};
367 if (comp.alive) {setverdict(pass)}
368 else {setverdict(fail)};
369
370 comp.kill;
371 if (comp.alive) {setverdict(fail)}
372 else {setverdict(pass)};
373};
374
375testcase configOperRunningAliveKillMixed_alive() runs on configOper_comp1 {
376 var configOper_comp1 comp :=configOper_comp1.create alive;
377 var configOper_comp1 comp1:=configOper_comp1.create alive;
378 var configOper_comp1 comp2:=configOper_comp1.create alive;
379 comp.start(configOper_behav0());
380 comp1.start(configOper_behav0());
381 comp2.start(configOper_behav0());
382 if (all component.running) {setverdict(pass)}
383 else {setverdict(fail)};
384
385 comp.stop;
386 comp1.stop;
387 comp2.stop;
388 if (any component.running) {setverdict(fail)}
389 else {setverdict(pass)};
390 if (all component.alive) {setverdict(pass)}
391 else {setverdict(fail)};
392
393 comp.kill;
394 if (all component.alive) {setverdict(fail)}
395 else {setverdict(pass)};
396 if (any component.alive) {setverdict(pass)}
397 else {setverdict(fail)};
398
399 all component.kill;
400 if (any component.alive) {setverdict(fail)}
401 else {setverdict(pass)};
402};
403
404testcase configOperRunningAliveKillKilledMixed_alive() runs on configOper_comp1 {
405 var configOper_comp1 comp :=configOper_comp1.create ("comp alive") alive;
406 var configOper_comp1 comp1:=configOper_comp1.create ("comp1 alive") alive;
407 var configOper_comp1 comp2:=configOper_comp1.create ("comp2 alive") alive;
408 comp.start(configOper_behav0());
409 comp1.start(configOper_behav0());
410 comp2.start(configOper_behav0());
411 if (all component.running) {setverdict(pass)}
412 else {setverdict(fail)};
413
414 xx1 := 0;
415 do {
416 alt {
417 [] all component.killed {
418 if (xx1==3) {setverdict(pass);}
419 }
420 [] comp.killed {
421 all component.kill;
422 if (xx1!=2) {setverdict(fail);}
423 }
424 [] any component.killed {
425 comp.kill;
426 if (xx1!=1) {setverdict(fail);}
427 }
428 [else] {
429 comp1.kill;
430 if (xx1!=0) {setverdict(fail);}
431 }
432 }
433 xx1 := xx1 + 1;
434 } while ( xx1!=4);
435 if (any component.alive) {setverdict(fail)}
436 else {setverdict(pass)};
437};
438
439testcase configOperConnectMtc_alive() runs on configOper_comp1 {
440 var configOper_comp1 comp:=configOper_comp1.create alive;
441 connect(mtc:Port1,comp:Port1);
442 comp.start(configOper_behav4());
443 xx1:=5;
444 Port1.send(xx1);
445 comp.done;
446
447 comp.start(configOper_behav6());
448 Port1.receive(integer:?) -> value xx1;
449 if (xx1==8) {setverdict(pass)}
450 else {setverdict(fail)};
451 comp.stop;
452
453 comp.start(configOper_behav5());
454 comp.done;
455
456 comp.start(configOper_behav6());
457 Port1.receive(integer:?) -> value xx1;
458 if (xx1==210) {setverdict(pass)}
459 else {setverdict(fail)};
460 comp.kill;
461};
462
463testcase configOperConnectSelf_alive() runs on configOper_comp1 {
464 var configOper_comp1 comp:=configOper_comp1.create alive;
465 connect(self:Port1,comp:Port1);
466 comp.start(configOper_behav4());
467 xx1:=5;
468 Port1.send(xx1);
469 comp.done;
470
471 comp.start(configOper_behav6());
472 Port1.receive(integer:?) -> value xx1;
473 if (xx1==8) {setverdict(pass)}
474 else {setverdict(fail)};
475 comp.stop;
476
477 comp.start(configOper_behav5());
478 comp.done;
479
480 comp.start(configOper_behav6());
481 Port1.receive(integer:?) -> value xx1;
482 if (xx1==210) {setverdict(pass)}
483 else {setverdict(fail)};
484 comp.kill;
485};
486
487testcase configOperDisconnect_alive() runs on configOper_comp1 {
488 var configOper_comp1 comp1:=configOper_comp1.create alive;
489 var configOper_comp1 comp2:=configOper_comp1.create alive;
490 comp1.start(configOper_behav1());
491 comp2.start(configOper_behav2());
492 connect(self:Port1,comp1:Port1);
493 connect(self:Port1,comp2:Port1);
494 disconnect(self:Port1,comp1:Port1);
495 xx1:=5;
496 Port1.send(xx1);
497 Port1.receive(integer:?) -> value xx1;
498 if (xx1==7) {setverdict(pass)}
499 else {setverdict(fail)};
500 comp1.kill;
501 comp2.kill;
502};
503
504testcase configOperArray_alive() runs on configOper_comp3 {
505 var configOper_comp1 comp[5];
506 var integer i;
507 xx1:=5;
508 for (i:=0; i<5; i:=i+1)
509 {
510 comp[i]:=configOper_comp1.create alive;
511 connect(self:Port3[i],comp[i]:Port1);
512 comp[i].start(configOper_behav4());
513 Port3[i].send(xx1);
514 comp[i].done;
515// while (comp[i].running) {};
516 comp[i].start(configOper_behav5());
517 comp[i].done;
518 comp[i].start(configOper_behav6());
519 Port3[i].receive(integer:?) -> value xx1;
520 if (xx1==i*203+208) {setverdict(pass)}
521 else {setverdict(fail)};
522 }
523 for (i:=5; i<5; i:=i+1) {comp[i].kill};
524};
525
526testcase configOperRunningAny_alive() runs on configOper_comp2 {
527 var configOper_comp1 comp[5];
528 var integer i;
529 xx2:=5;
530 for (i:=0; i<5; i:=i+1)
531 {
532 comp[i]:=configOper_comp1.create alive;
533 comp[i].start(configOper_behav0());
534 }
535 for (i:=0; i<4; i:=i+1)
536 {
537 comp[i].stop;
538 if (any component.running) {setverdict(pass)}
539 else {setverdict(fail)};
540 }
541 comp[4].stop;
542 if (any component.running) {setverdict(fail)}
543 else {setverdict(pass)};
544};
545
546testcase configOperRunningAll_alive() runs on configOper_comp2 {
547 var configOper_comp1 comp[5];
548 var integer i;
549 xx2:=5;
550 for (i:=0; i<5; i:=i+1)
551 {
552 comp[i]:=configOper_comp1.create alive;
553 }
554 for (i:=0; i<5; i:=i+1)
555 {
556 comp[i].start(configOper_behav7(int2float(i + 1)));
557 }
558 if (all component.running) {setverdict(pass)}
559 else {setverdict(fail)};
560
561 comp[0].done;
562 if (all component.running) {setverdict(fail)}
563 else {setverdict(pass)};
564
565 comp[0].start(configOper_behav7(1.0));
566 for (i:=0; i<5; i:=i+1)
567 {
568 comp[i].stop;
569 if (all component.running) {setverdict(pass)}
570 else {setverdict(fail)};
571 }
572 for (i:=0; i<5; i:=i+1)
573 {
574 comp[i].kill;
575 if (all component.running) {setverdict(pass)}
576 else {setverdict(fail)};
577 }
578};
579
580testcase configOperAliveAny_alive() runs on configOper_comp2 {
581 var configOper_comp1 comp[5];
582 var integer i;
583 xx2:=5;
584 for (i:=0; i<5; i:=i+1)
585 {
586 comp[i]:=configOper_comp1.create alive;
587 comp[i].start(configOper_behav0());
588 }
589 for (i:=0; i<4; i:=i+1)
590 {
591 comp[i].kill;
592 if (any component.alive) {setverdict(pass)}
593 else {setverdict(fail)};
594 }
595 comp[4].kill;
596 if (any component.alive) {setverdict(fail)}
597 else {setverdict(pass)};
598};
599
600testcase configOperAliveAll_alive() runs on configOper_comp2 {
601 var configOper_comp1 comp[5];
602 var integer i;
603 xx2:=5;
604 for (i:=0; i<5; i:=i+1)
605 {
606 comp[i]:=configOper_comp1.create alive;
607 comp[i].start(configOper_behav0());
608 }
609 if (all component.alive) {setverdict(pass)}
610 else {setverdict(fail)};
611 for (i:=0; i<5; i:=i+1)
612 {
613 comp[i].kill;
614 if (all component.alive) {setverdict(fail)}
615 else {setverdict(pass)};
616 }
617};
618
619testcase configOperDone_alive() runs on configOper_comp1 {
620 var configOper_comp1 comp:=configOper_comp1.create alive;
621 timer T1:=10.0;
622 connect(self:Port1,comp:Port1);
623 comp.start(configOper_behav3());
624 xx1:=5;
625 Port1.send(xx1);
626 T1.start;
627 alt {
628 [] Port1.receive(integer:?) -> value xx1 {setverdict(fail, "received a value")}
629 [] comp.done {setverdict(pass)}
630 [] T1.timeout {setverdict(fail, "configOperDone_alive timed out after", T1.read, " seconds")}
631 }
632};
633
634testcase configOperDone2_alive() runs on configOper_comp1 {
635 var configOper_comp1 comp:=configOper_comp1.create alive;
636 timer T1:=10.0;
637 comp.start(configOper_behav0());
638 comp.stop;
639 alt {
640 [] comp.done {setverdict(pass)}
641 [else] {setverdict(fail)}
642 }
643 comp.kill;
644 alt {
645 [] comp.done {setverdict(pass)}
646 [else] {setverdict(fail)}
647 }
648};
649
650testcase configOperDoneAny_alive() runs on configOper_comp2 {
651 var configOper_comp1 comp[5];
652 var integer i;
653 timer T1:=2.0;
654 xx2:=5;
655 for (i:=0; i<5; i:=i+1)
656 {
657 comp[i]:=configOper_comp1.create alive;
658 connect(self:Port2[i],comp[i]:Port1);
659 comp[i].start(configOper_behav3());
660 }
661 for (i:=0; i<5; i:=i+1) {
662 log(i);
663 Port2[i].send(xx2);
664 T1.stop;
665 T1.start;
666 alt {
667 [] Port2[i].receive(integer:?) {setverdict(fail)}
668 [] any component.done {setverdict(pass)}
669 [] T1.timeout {setverdict(fail)}
670 [] comp[i].done {setverdict(fail)}
671 }
672 }
673};
674
675testcase configOperDoneAny2_alive() runs on configOper_comp1 {
676 var configOper_comp1 comp:=configOper_comp1.create alive;
677 var configOper_comp1 comp1:=configOper_comp1.create alive;
678 timer T1:=10.0;
679 comp.start(configOper_behav0());
680 comp1.start(configOper_behav0());
681 alt {
682 [] any component.done {setverdict(fail)}
683 [else] {setverdict(pass)}
684 }
685 comp.stop;
686 alt {
687 [] all component.done {setverdict(fail)}
688 [] any component.done {setverdict(pass)}
689 [else] {setverdict(fail)}
690 }
691 comp.kill;
692 alt {
693 [] all component.done {setverdict(fail)}
694 [] any component.done {setverdict(pass)}
695 [else] {setverdict(fail)}
696 }
697 all component.kill;
698 alt {
699 [] any component.done {setverdict(pass)}
700 [else] {setverdict(fail)}
701 }
702};
703
704testcase configOperDoneAll_alive() runs on configOper_comp2 {
705 var configOper_comp1 comp[5];
706 var integer i;
707 timer T1:=2.0;
708 xx2:=5;
709 log("xx");
710 for (i:=0; i<5; i:=i+1)
711 {
712 log(i);
713 comp[i]:=configOper_comp1.create alive;
714 connect(self:Port2[i],comp[i]:Port1);
715 comp[i].start(configOper_behav3());
716 }
717 for (i:=0; i<5; i:=i+1) {
718 log(i);
719 Port2[i].send(xx2);
720 }
721 T1.start;
722 alt {
723 [] Port2[2].receive(integer:?) {setverdict(fail)}
724 [] all component.done {setverdict(pass)}
725 [] T1.timeout {setverdict(fail)}
726 }
727};
728
729testcase configOperDoneAll2_alive() runs on configOper_comp2 {
730 var configOper_comp1 comp[5];
731 var integer i;
732 for (i:=0; i<5; i:=i+1)
733 {
734 comp[i]:=configOper_comp1.create alive;
735 comp[i].start(configOper_behav0());
736 }
737 for (i:=0; i<4; i:=i+1) {
738 comp[i].stop;
739 }
740 comp[4].kill;
741 alt {
742 [] all component.done {setverdict(pass)}
743 [else] {setverdict(fail)}
744 }
745};
746
747testcase configOperKilled_alive() runs on configOper_comp1 {
748 var configOper_comp1 comp:=configOper_comp1.create alive;
749 timer T1:=10.0;
750 comp.start(configOper_behav3());
751 comp.kill;
752 alt {
753 [] comp.killed {setverdict(pass)}
754 [else] {setverdict(fail)}
755 }
756};
757
758testcase configOperKilledAny_alive() runs on configOper_comp2 {
759 var configOper_comp1 comp[5];
760 var integer i;
761 timer T1:=2.0;
762 xx2:=5;
763 for (i:=0; i<5; i:=i+1)
764 {
765 comp[i]:=configOper_comp1.create alive;
766 connect(self:Port2[i],comp[i]:Port1);
767 comp[i].start(configOper_behav3());
768 }
769 for (i:=0; i<4; i:=i+1) {
770 comp[i].kill;
771 alt {
772 [] all component.done {setverdict(fail)}
773 [] any component.killed {setverdict(pass)}
774 [else] {setverdict(fail)}
775 }
776 }
777 comp[i].kill;
778};
779
780testcase configOperKilledAll_alive() runs on configOper_comp2 {
781 var integer i;
782 var configOper_comp1 comp[5];
783
784 for (i:=0; i<5; i:=i+1)
785 {
786 comp[i]:=configOper_comp1.create alive;
787 connect(self:Port2[i],comp[i]:Port1);
788 comp[i].start(configOper_behav3());
789 }
790 for (i:=0; i<4; i:=i+1) {
791 comp[i].kill;
792 alt {
793 [] all component.done {setverdict(fail)}
794 [] any component.killed {setverdict(pass)}
795 [else] {setverdict(fail)}
796 }
797 }
798 comp[i].kill;
799 alt {
800 [] all component.killed {setverdict(pass)}
801 [else] {setverdict(fail)}
802 }
803};
804
805testcase configOperStopAll_alive() runs on configOper_comp2 {
806 var configOper_comp1 comp[5];
807 var integer i;
808 for (i:=0; i<5; i:=i+1)
809 {
810 comp[i]:=configOper_comp1.create alive;
811 connect(self:Port2[i],comp[i]:Port1);
812 comp[i].start(configOper_behav3());
813 Port2[i].start;
814 }
815 all component.stop;
816 if (any component.running) {setverdict(fail)}
817 else {setverdict(pass)};
818 all component.kill;
819}
820
821testcase configOperKillAll_alive() runs on configOper_comp2 {
822 var configOper_comp1 comp[5];
823 var integer i;
824 for (i:=0; i<5; i:=i+1)
825 {
826 comp[i]:=configOper_comp1.create alive;
827 connect(self:Port2[i],comp[i]:Port1);
828 comp[i].start(configOper_behav3());
829 Port2[i].start;
830 }
831 all component.kill;
832 if (any component.alive) {setverdict(fail)}
833 else {setverdict(pass)};
834}
835
836testcase configOperAutoStopAndKill_alive() runs on configOper_comp2 {
837 var configOper_comp1 comp[5];
838 var integer i;
839 timer T1:=2.0;
840 xx2:=5;
841 for (i:=0; i<5; i:=i+1)
842 {
843 comp[i]:=configOper_comp1.create alive;
844 connect(self:Port2[i],comp[i]:Port1);
845 comp[i].start(configOper_behav1());
846 Port2[i].send(xx2);
847 }
848 T1.start;
849 T1.timeout;
850 setverdict(pass);
851};
852
853testcase configOperAutoStopAndKill2_alive() runs on configOper_comp2 {
854 var configOper_comp1 comp[5];
855 var integer i;
856 timer T1:=2.0;
857 xx2:=5;
858 for (i:=0; i<5; i:=i+1)
859 {
860 comp[i]:=configOper_comp1.create alive;
861 connect(self:Port2[i],comp[i]:Port1);
862 comp[i].start(configOper_behav1());
863 }
864 for (i:=0; i<5; i:=i+1)
865 {
866 Port2[i].send(xx2);
867 Port2[i].receive(integer:?) -> value xx2;
868 if (xx2==i+6) {setverdict(pass)}
869 else {setverdict(fail)};
870 }
871};
872
873///////////////////////////////////////////////////////////////////////
874///////////////////// Interleave Statement ////////////////////////////
875///////////////////////////////////////////////////////////////////////
876signature MySig() exception (integer);
877signature MySig1(inout float par) exception (integer);
878type port interleave_port_M message { inout integer, float } with { extension "internal" };
879type port interleave_port_P procedure { inout MySig, MySig1 } with { extension "internal" };
880template MySig MySigTemplate := {}
881template MySig1 MySigTemplate1 := {55.1}
882
883type component interleave_comp {
884 port interleave_port_M Port1;
885 port interleave_port_P Port2;
886 port interleave_port_P Port3;
887 var integer xx1;
888 var float xx2;
889 timer T;
890};
891
892function interleave_behav1(float par) runs on interleave_comp {
893 T.start(par);
894 T.timeout;
895};
896
897function interleave_behav2(integer par1, float par2) runs on interleave_comp {
898 T.start(par2);
899 T.timeout;
900 if (par1==0) { Port1.send(par2); }
901 else { Port1.send(par1); }
902};
903
904function interleave_behav3(float par1) runs on interleave_comp {
905 T.start(par1); T.timeout;
906 Port3.call(MySigTemplate1,nowait);
907 T.start(par1); T.timeout;
908 Port3.call(MySigTemplate,nowait);
909 var integer path := 0;
910 interleave {
911 [] Port3.getcall(MySigTemplate1) {
912 Port3.reply(MySigTemplate);
913 if (path==1) {setverdict(pass)}
914 else {setverdict(fail)};
915 path := path+1;
916 }
917 [] Port3.getcall(MySigTemplate) {
918 Port3.reply(MySigTemplate1);
919 if (path==0) {setverdict(pass)}
920 else {setverdict(fail)};
921 path := path+1;
922 }
923 }
924 if (path==2) {setverdict(pass)}
925 else {setverdict(fail)};
926};
927
928function interleave_behav4(float par1) runs on interleave_comp {
929 T.start(par1); T.timeout;
930 Port3.call(MySigTemplate1,nowait);
931 T.start(par1); T.timeout;
932 Port3.call(MySigTemplate,nowait);
933 var integer path := 0;
934 interleave {
935 [] Port3.getcall(MySigTemplate1) {
936 Port3.raise(MySig1,integer:15);
937 //interleave_verdict(1);
938 if (path==1) {setverdict(pass)}
939 else {setverdict(fail)};
940 path := path+1;
941 }
942 [] Port3.getcall(MySigTemplate) {
943 Port3.raise(MySig,integer:5);
944 //interleave_verdict(0);
945 if (path==0) {setverdict(pass)}
946 else {setverdict(fail)};
947 path := path+1;
948 }
949 }
950 if (path==2) {setverdict(pass)}
951 else {setverdict(fail)};
952};
953
954function interleave_behav5() runs on configOper_comp5
955{
956 T.start;
957 // interleave example identical to TTCN-3 Basic Course
958 interleave {
959 [] P.receive(1) { Q.receive(2); R.receive(3); log("1st branch ready") }
960 [] Q.receive(4) { P.send(-4); R.receive(5); log("2nd branch ready") }
961 [] R.receive(6) { P.receive(7); Q.send(-7); Q.receive(8); log("3rd branch ready") }
962 [] T.timeout { R.send(0); P.receive(9); log("timeout branch ready") }
963 }
964 setverdict(pass)
965}
966
967testcase InterleaveStatem1() runs on interleave_comp {
968 var integer loop := 0;
969 var interleave_comp comp :=interleave_comp.create ("comp alive") alive;
970 var interleave_comp comp1:=interleave_comp.create ("comp1 alive") alive;
971 var interleave_comp comp2:=interleave_comp.create ("comp2 alive") alive;
972 comp.start(interleave_behav1(1.2));
973 comp1.start(interleave_behav1(3.2));
974 comp2.start(interleave_behav1(2.2));
975 if (all component.running) {setverdict(pass)}
976 else {setverdict(fail, "not all components running")};
977 var integer counter := 0;
978 do {
979 T.start(4.1);
980 interleave {
981 [] any component.killed {
982 comp.kill;
983 if (loop==0 and counter==3) {setverdict(pass)}
984 else if (loop==1 and counter==7) {setverdict(pass)}
985 else {setverdict(fail, "reached line" & int2str(__LINE__) & " loop: " & int2str(loop) & " counter: " & int2str(counter))};
986 action("Any Killed: ", counter);
987 counter := counter+1;
988 }
989 [] T.timeout{
990 if (loop==0 and counter==6) {
991 setverdict(pass);
992 comp1:=interleave_comp.create ("comp1 alive") alive;
993 comp1.start(interleave_behav1(2.2));
994 }
995 else if (loop==1 and counter==13) {setverdict(pass)}
996 else {setverdict(fail, "reached line" & int2str(__LINE__) & " loop: " & int2str(loop) & " counter: " & int2str(counter))};
997 action("Timeout: ", counter);
998 counter := counter+1;
999 }
1000 [] comp1.done {
1001 all component.done;
1002 if (loop==0 and counter==1) {setverdict(pass)}
1003 else if (loop==1 and counter==9) {setverdict(pass)}
1004 else {setverdict(fail, "reached line" & int2str(__LINE__) & " loop: " & int2str(loop) & " counter: " & int2str(counter))};
1005 action("Done: ", counter);
1006 counter := counter+1;
1007 }
1008 [] all component.done {
1009 comp1.kill;
1010 if (loop==0 and counter==2) {setverdict(pass)}
1011 else if (loop==1 and counter==10) {setverdict(pass)}
1012 else {setverdict(fail, "reached line" & int2str(__LINE__) & " loop: " & int2str(loop) & " counter: " & int2str(counter))};
1013 action("All Done: ", counter);
1014 counter := counter+1;
1015 }
1016 [] all component.killed {
1017 if (loop==0 and counter==5) {setverdict(pass)}
1018 else if (loop==1 and counter==11) {setverdict(pass)}
1019 else {setverdict(fail, "reached line" & int2str(__LINE__) & " loop: " & int2str(loop) & " counter: " & int2str(counter))};
1020 action("All Killed: ", counter);
1021 counter := counter+1;
1022 }
1023 [] comp.killed {
1024 all component.kill;
1025 if (loop==0 and counter==4) {setverdict(pass)}
1026 else if (loop==1 and counter==8) {setverdict(pass)}
1027 else {setverdict(fail, "reached line" & int2str(__LINE__) & " loop: " & int2str(loop) & " counter: " & int2str(counter))};
1028 action("Killed: ", counter);
1029 counter := counter+1;
1030 }
1031 [] any component.done {
1032 if (loop==0 and counter==0) {setverdict(pass)}
1033 else if (loop==1 and counter==12) {setverdict(pass)}
1034 else {setverdict(fail, "reached line" & int2str(__LINE__) & " loop: " & int2str(loop) & " counter: " & int2str(counter))};
1035 action("Any Done: ", counter);
1036 counter := counter+1;
1037 }
1038 }
1039 loop := loop+1;
1040 } while (loop < 2);
1041 if (counter==14) {setverdict(pass)}
1042 else {setverdict(fail, "counter is: ", counter)};
1043};
1044
1045testcase InterleaveStatem2() runs on interleave_comp {
1046 var interleave_comp comp :=interleave_comp.create ("comp alive") alive;
1047 var interleave_comp comp1:=interleave_comp.create ("comp1 alive") alive;
1048 connect(mtc:Port1,comp:Port1);
1049 connect(mtc:Port1,comp1:Port1);
1050 comp.start(interleave_behav2(34, 0.1));
1051 comp1.start(interleave_behav2(0, 0.1));
1052 T.start(0.1);
1053 interleave {
1054 [] Port1.receive (integer:?) -> value xx1 {
1055 log("Receive");
1056 }
1057 [] Port1.trigger (float:?) -> value xx2 {
1058 log("Trigger");
1059 }
1060 [] any port.trigger {
1061 log("Any Port Trigger");
1062 }
1063 [] T.timeout{
1064 log("Timeout");
1065 comp.done;
1066 comp1.done;
1067 comp.start(interleave_behav2(0, 0.1));
1068 comp1.start(interleave_behav2(50, 0.1));
1069 }
1070 [] any port.receive {
1071 log("Any Port Receive");
1072 }
1073 }
1074 setverdict(pass);
1075};
1076
1077testcase InterleaveStatem3() runs on interleave_comp {
1078 var interleave_comp comp :=interleave_comp.create ("comp alive") alive;
1079 var interleave_comp comp1:=interleave_comp.create ("comp1 alive") alive;
1080 connect(self:Port2,comp:Port3);
1081 comp.start(interleave_behav3(0.1));
1082 T.start(0.1);
1083 var integer path1 := 0;// The execution path of comp1
1084 var integer path2 := 0;// the execution path of comp
1085 interleave {
1086 [] Port2.getcall(MySigTemplate1) {
1087 if (path2==0) {setverdict(pass)}
1088 else {setverdict(fail)};
1089 path2 := path2+1;
1090 }
1091 [] Port2.getreply(MySigTemplate1) {
1092 if (path2==2) {setverdict(pass)}
1093 else {setverdict(fail)};
1094 path2 := path2+1;
1095 Port2.call(MySigTemplate1,nowait);
1096 }
1097 [] comp1.done {
1098 if (path1==1) {setverdict(pass)}
1099 else {setverdict(fail)};
1100 path1 := path1+1;
1101 }
1102 [] T.timeout{
1103 if (path1==0) {setverdict(pass)}
1104 else {setverdict(fail)};
1105 path1 := path1+1;
1106 comp1.start(interleave_behav1(2.8));
1107 }
1108 [] any port.getcall {
1109 if (path2==1) {setverdict(pass)}
1110 else {setverdict(fail)};
1111 path2 := path2+1;
1112 Port2.call(MySigTemplate,nowait);
1113 }
1114 [] any port.getreply {
1115 if (path2==3) {setverdict(pass)}
1116 else {setverdict(fail)};
1117 path2 := path2+1;
1118 }
1119 }
1120 if (path1==2 and path2 == 4) {setverdict(pass)}
1121 else {setverdict(fail)};
1122};
1123
1124testcase InterleaveStatem4() runs on interleave_comp {
1125 var interleave_comp comp :=interleave_comp.create ("comp alive") alive;
1126 connect(self:Port2,comp:Port3);
1127 comp.start(interleave_behav4(0.1));
1128 T.start(0.1);
1129 var integer path1 := 0;//The timeout executionpath
1130 var integer path2 := 0;//The real executionpath
1131 interleave {
1132 [] Port2.catch(MySig, integer:5) {
1133 Port2.call(MySigTemplate1,nowait);
1134 if (path2==2) {setverdict(pass)}
1135 else {setverdict(fail)};
1136 path2 := path2+1;
1137 }
1138 []Port2.check(getcall(MySigTemplate1)) {
1139 Port2.getcall;
1140 if (path2==0) {setverdict(pass)}
1141 else {setverdict(fail)};
1142 path2 := path2+1;
1143 }
1144 [] T.timeout{
1145 path1 := 1;
1146 }
1147 [] any port.check {
1148 any port.getcall;
1149 Port2.call(MySigTemplate,nowait);
1150 if (path2==1) {setverdict(pass)}
1151 else {setverdict(fail)};
1152 path2 := path2+1;
1153 }
1154 [] any port.catch {
1155 if (path2==3) {setverdict(pass)}
1156 else {setverdict(fail)};
1157 path2 := path2+1;
1158 }
1159 }
1160 if (path1==1 and path2==4) {setverdict(pass)}
1161 else {setverdict(fail)};
1162};
1163
1164testcase InterleaveStatem5() runs on configOper_comp5
1165{
1166 var configOper_comp5 ptc := configOper_comp5.create;
1167 connect(mtc:P, ptc:P);
1168 connect(mtc:Q, ptc:Q);
1169 connect(mtc:R, ptc:R);
1170 ptc.start(interleave_behav5())
1171
1172 // exercise interleave statement
1173 P.send(1); // start 1st branch
1174 Q.send(4); // start 2nd branch
1175 R.send(6); // start 3rd branch
1176 P.send(7); // continue 3rd branch
1177 Q.send(2); // switch back and continue with 1st branch
1178 R.send(5); // switch over, continue with 2nd branch, terminate 2nd branch
1179 T.start; // enforce timeout event
1180 T.timeout; // begin with 4th branch
1181 Q.send(8); // switch over to 3rd branch, terminate 3rd branch
1182 P.send(9); // switch over and terminate to timeout branch
1183 R.send(3); // switch over and terminate 1st branch
1184 // all branches are fully terminated, interleve should finish
1185
1186 // wait for ptc to terminate normally
1187 T.start;
1188 T.stop;
1189
1190 // check if f_interleave() terminated properly
1191 T.start;
1192 alt {
1193 [] ptc.done { T.stop; setverdict(pass) }
1194 [] T.timeout { ptc.kill; setverdict(fail) } // verdict is fail for hanging ptc
1195 }
1196}
1197
1198testcase configOperConnectDisconnect() runs on configOper_comp1 {
1199var configOper_comp1 comp:=configOper_comp1.create;
1200connect(mtc:Port1,comp:Port1);
1201disconnect(mtc:Port1,comp:Port1);
1202connect(comp:Port1, mtc:Port1);
1203disconnect(mtc:Port1,comp:Port1);
1204connect(mtc:Port1,comp:Port1);
1205disconnect(comp:Port1, mtc:Port1);
1206connect(comp:Port1, mtc:Port1);
1207disconnect(comp:Port1, mtc:Port1);
1208comp.stop;
1209setverdict(pass);
1210};
1211
1212testcase configOperMapUnmap() runs on configOper_comp4
1213 system configOper_comp4 {
1214var configOper_comp4 comp:=configOper_comp4.create;
1215map(mtc:Port4,system:Port4);
1216unmap(mtc:Port4,system:Port4);
1217map(system:Port4, mtc:Port4);
1218unmap(mtc:Port4,system:Port4);
1219map(mtc:Port4,system:Port4);
1220unmap(system:Port4, mtc:Port4);
1221map(system:Port4, mtc:Port4);
1222unmap(system:Port4, mtc:Port4);
1223
1224map(comp:Port4,system:Port4);
1225unmap(comp:Port4,system:Port4);
1226map(system:Port4, comp:Port4);
1227unmap(comp:Port4,system:Port4);
1228map(comp:Port4,system:Port4);
1229unmap(system:Port4, comp:Port4);
1230map(system:Port4, comp:Port4);
1231unmap(system:Port4, comp:Port4);
1232comp.stop;
1233setverdict(pass);
1234};
1235
1236control {
1237 execute(configOperRunning1());
1238 execute(configOperRunning2());
1239 execute(configOperConnectMtc());
1240 execute(configOperConnectSelf());
1241 execute(configOperDisconnect());
1242 execute(configOperDone());
1243 execute(configOperArray());
1244 execute(configOperRunningAny());
1245 execute(configOperRunningAll());
1246 execute(configOperDoneAny());
1247 execute(configOperDoneAny2());
1248 execute(configOperDoneAny3());
1249 execute(configOperDoneAll());
1250 execute(configOperStopAll());
1251 execute(configOperAutostop1());
1252 execute(configOperAutostop2());
1253
1254 execute(configOperRunningAlive_alive());
1255 execute(configOperRunningAliveKill_alive());
1256 execute(configOperRunningAliveKillMixed_alive());
1257 execute(configOperRunningAliveKillKilledMixed_alive());
1258 execute(configOperConnectMtc_alive());
1259 execute(configOperConnectSelf_alive());
1260 execute(configOperDisconnect_alive());
1261 execute(configOperArray_alive());
1262 execute(configOperRunningAny_alive());
1263 execute(configOperRunningAll_alive());
1264 execute(configOperAliveAny_alive());
1265 execute(configOperAliveAll_alive());
1266 execute(configOperDone_alive());
1267 execute(configOperDone2_alive());
1268 execute(configOperDoneAny_alive());
1269 execute(configOperDoneAny2_alive());
1270 execute(configOperDoneAll_alive());
1271 execute(configOperDoneAll2_alive());
1272 execute(configOperKilled_alive());
1273 execute(configOperKilledAny_alive());
1274 execute(configOperKilledAll_alive());
1275 execute(configOperStopAll_alive());
1276 execute(configOperKillAll_alive());
1277 execute(configOperAutoStopAndKill_alive());
1278 execute(configOperAutoStopAndKill2_alive());
1279
1280 execute(InterleaveStatem1());
1281 execute(InterleaveStatem2());
1282 execute(InterleaveStatem3());
1283 execute(InterleaveStatem4());
1284 execute(InterleaveStatem5());
1285 execute(configOperConnectDisconnect());
1286 execute(configOperMapUnmap());
1287}
1288}
1289
This page took 0.181063 seconds and 5 git commands to generate.