1 /******************************************************************************
2 * Copyright (c) 2000-2014 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 ******************************************************************************/
10 type port configOper_port1 message
11 { inout integer } with { extension "internal" };
13 // A "black hole" port.
14 type port configOper_port2 message {
18 type component configOper_comp1 {
19 port configOper_port1 Port1;
23 type component configOper_comp2 {
24 port configOper_port1 Port2[5];
28 type component configOper_comp4 {
29 port configOper_port2 Port4;
32 type component configOper_comp5 {
33 port configOper_port1 P, Q, R;
37 function configOper_behav0() runs on configOper_comp1 {
38 timer T:=1.0; // doing nothing, alt is needed for "stop"
42 { [] T.timeout {T.start} }
46 function configOper_behav1() runs on configOper_comp1 {
48 Port1.receive(integer:?) -> value xx1;
53 function configOper_behav2() runs on configOper_comp1 {
55 Port1.receive(integer:?) -> value xx1;
60 function configOper_behav3() runs on configOper_comp1 {
62 //if receives anything -> stops
63 Port1.receive(integer:?);
66 { [] Port1.receive(integer:?) { action("configOper_behav3 received the integer after ", TT.read, " seconds");};
67 [] TT.timeout { action("configOper_behav3 timed out"); stop; } };
70 testcase configOperRunning1() runs on configOper_comp1 {
71 var configOper_comp1 comp:=configOper_comp1.create;
72 comp.start(configOper_behav0());
73 if (comp.running) {setverdict(pass)}
74 else {setverdict(fail)};
78 testcase configOperRunning2() runs on configOper_comp1 {
79 var configOper_comp1 comp:=configOper_comp1.create;
80 comp.start(configOper_behav0());
82 if (comp.running) {setverdict(fail)}
83 else {setverdict(pass)};
86 testcase configOperConnectMtc() runs on configOper_comp1 {
87 var configOper_comp1 comp:=configOper_comp1.create;
88 connect(mtc:Port1,comp:Port1);
89 comp.start(configOper_behav1());
92 Port1.receive(integer:?) -> value xx1;
93 if (xx1==6) {setverdict(pass)}
94 else {setverdict(fail)};
98 testcase configOperConnectSelf() runs on configOper_comp1 {
99 var configOper_comp1 comp:=configOper_comp1.create;
100 connect(self:Port1,comp:Port1);
101 comp.start(configOper_behav1());
104 Port1.receive(integer:?) -> value xx1;
105 if (xx1==6) {setverdict(pass)}
106 else {setverdict(fail)};
110 testcase configOperDisconnect() runs on configOper_comp1 {
111 var configOper_comp1 comp1:=configOper_comp1.create;
112 var configOper_comp1 comp2:=configOper_comp1.create;
113 comp1.start(configOper_behav1());
114 comp2.start(configOper_behav2());
115 connect(self:Port1,comp1:Port1);
116 disconnect(self:Port1,comp1:Port1);
117 connect(self:Port1,comp2:Port1);
120 Port1.receive(integer:?) -> value xx1;
121 if (xx1==7) {setverdict(pass)}
122 else {setverdict(fail)};
127 testcase configOperDone() runs on configOper_comp1 {
128 var configOper_comp1 comp:=configOper_comp1.create;
130 connect(self:Port1,comp:Port1);
131 comp.start(configOper_behav3());
136 [] Port1.receive(integer:?) -> value xx1 {setverdict(fail)}
137 [] comp.done {setverdict(pass)}
138 [] T1.timeout {setverdict(fail)}
142 testcase configOperArray() runs on configOper_comp2 {
143 var configOper_comp1 comp[5];
146 for (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());
151 Port2[i].receive(integer:?) -> value xx2;
152 if (xx2==i+6) {setverdict(pass)}
153 else {setverdict(fail)};
155 for (i:=5; i<5; i:=i+1) {comp[i].stop};
158 testcase configOperRunningAny() runs on configOper_comp2 {
159 var configOper_comp1 comp[5];
162 for (i:=0; i<5; i:=i+1)
163 { comp[i]:=configOper_comp1.create;
164 comp[i].start(configOper_behav0());
166 for (i:=0; i<4; i:=i+1)
168 if (any component.running) {setverdict(pass)}
169 else {setverdict(fail)};
172 if (any component.running) {setverdict(fail)}
173 else {setverdict(pass)};
176 testcase configOperRunningAll() runs on configOper_comp2 {
177 var configOper_comp1 comp[5];
180 for (i:=0; i<5; i:=i+1)
181 { comp[i]:=configOper_comp1.create;
182 comp[i].start(configOper_behav0());
184 if (all component.running) {setverdict(pass)}
185 else {setverdict(fail)};
186 for (i:=0; i<5; i:=i+1)
188 if (all component.running) {setverdict(pass)}
189 else {setverdict(fail)};
193 testcase configOperDoneAny() runs on configOper_comp2 {
194 var configOper_comp1 comp[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());
203 for (i:=0; i<5; i:=i+1) {
211 [] any component.done {setverdict(pass)}
212 [] T1.timeout {setverdict(fail)}
217 testcase configOperDoneAny2() runs on configOper_comp2 {
218 var configOper_comp1 ptc;
222 [] any component.done { setverdict(fail); }
223 [] T1.timeout { setverdict(pass); }
225 ptc := configOper_comp1.create;
228 [] any component.done { setverdict(fail); }
229 [] T1.timeout { setverdict(pass); }
234 [] any component.done { setverdict(pass); }
235 [] T1.timeout { setverdict(fail); }
239 testcase configOperDoneAny3() runs on configOper_comp2 {
240 var configOper_comp1 ptc := configOper_comp1.create;
245 [] any component.done { setverdict(pass); }
246 [] T1.timeout { setverdict(fail); }
250 testcase configOperDoneAll() runs on configOper_comp2 {
251 var configOper_comp1 comp[5];
256 for (i:=0; i<5; i:=i+1)
258 comp[i]:=configOper_comp1.create;
259 connect(self:Port2[i],comp[i]:Port1);
260 comp[i].start(configOper_behav3());
262 for (i:=0; i<5; i:=i+1) {
268 [] Port2[2].receive(integer:?) {setverdict(fail)}
269 [] all component.done {setverdict(pass)}
270 [] T1.timeout {setverdict(fail)}
274 testcase configOperStopAll() runs on configOper_comp2 {
275 var configOper_comp1 comp[5];
279 for (i:=0; i<5; i:=i+1)
281 comp[i]:=configOper_comp1.create;
283 connect(self:Port2[i],comp[i]:Port1);
284 comp[i].start(configOper_behav3());
288 if (any component.running) {setverdict(fail)}
289 else {setverdict(pass)};
292 testcase configOperAutostop1() runs on configOper_comp2 {
293 var configOper_comp1 comp[5];
297 for (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());
307 testcase configOperAutostop2() runs on configOper_comp2 {
308 var configOper_comp1 comp[5];
312 for (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());
317 for (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)};
323 for (i:=5; i<5; i:=i+1) {comp[i].done};
326 type component configOper_comp3 {
327 port configOper_port1 Port3[5];
331 function configOper_behav4() runs on configOper_comp1 {
332 Port1.receive(integer:?) -> value xx1;
336 function configOper_behav5() runs on configOper_comp1 {
340 function configOper_behav6() runs on configOper_comp1 {
345 function configOper_behav7(float par) runs on configOper_comp1 {
351 testcase 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)
361 testcase configOperRunningAliveKill_alive() runs on configOper_comp1 {
362 var configOper_comp1 comp:=configOper_comp1.create alive;
363 comp.start(configOper_behav0());
365 if (comp.running) {setverdict(fail)}
366 else {setverdict(pass)};
367 if (comp.alive) {setverdict(pass)}
368 else {setverdict(fail)};
371 if (comp.alive) {setverdict(fail)}
372 else {setverdict(pass)};
375 testcase 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)};
388 if (any component.running) {setverdict(fail)}
389 else {setverdict(pass)};
390 if (all component.alive) {setverdict(pass)}
391 else {setverdict(fail)};
394 if (all component.alive) {setverdict(fail)}
395 else {setverdict(pass)};
396 if (any component.alive) {setverdict(pass)}
397 else {setverdict(fail)};
400 if (any component.alive) {setverdict(fail)}
401 else {setverdict(pass)};
404 testcase 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)};
417 [] all component.killed {
418 if (xx1==3) {setverdict(pass);}
422 if (xx1!=2) {setverdict(fail);}
424 [] any component.killed {
426 if (xx1!=1) {setverdict(fail);}
430 if (xx1!=0) {setverdict(fail);}
435 if (any component.alive) {setverdict(fail)}
436 else {setverdict(pass)};
439 testcase 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());
447 comp.start(configOper_behav6());
448 Port1.receive(integer:?) -> value xx1;
449 if (xx1==8) {setverdict(pass)}
450 else {setverdict(fail)};
453 comp.start(configOper_behav5());
456 comp.start(configOper_behav6());
457 Port1.receive(integer:?) -> value xx1;
458 if (xx1==210) {setverdict(pass)}
459 else {setverdict(fail)};
463 testcase 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());
471 comp.start(configOper_behav6());
472 Port1.receive(integer:?) -> value xx1;
473 if (xx1==8) {setverdict(pass)}
474 else {setverdict(fail)};
477 comp.start(configOper_behav5());
480 comp.start(configOper_behav6());
481 Port1.receive(integer:?) -> value xx1;
482 if (xx1==210) {setverdict(pass)}
483 else {setverdict(fail)};
487 testcase 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);
497 Port1.receive(integer:?) -> value xx1;
498 if (xx1==7) {setverdict(pass)}
499 else {setverdict(fail)};
504 testcase configOperArray_alive() runs on configOper_comp3 {
505 var configOper_comp1 comp[5];
508 for (i:=0; i<5; i:=i+1)
510 comp[i]:=configOper_comp1.create alive;
511 connect(self:Port3[i],comp[i]:Port1);
512 comp[i].start(configOper_behav4());
515 // while (comp[i].running) {};
516 comp[i].start(configOper_behav5());
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)};
523 for (i:=5; i<5; i:=i+1) {comp[i].kill};
526 testcase configOperRunningAny_alive() runs on configOper_comp2 {
527 var configOper_comp1 comp[5];
530 for (i:=0; i<5; i:=i+1)
532 comp[i]:=configOper_comp1.create alive;
533 comp[i].start(configOper_behav0());
535 for (i:=0; i<4; i:=i+1)
538 if (any component.running) {setverdict(pass)}
539 else {setverdict(fail)};
542 if (any component.running) {setverdict(fail)}
543 else {setverdict(pass)};
546 testcase configOperRunningAll_alive() runs on configOper_comp2 {
547 var configOper_comp1 comp[5];
550 for (i:=0; i<5; i:=i+1)
552 comp[i]:=configOper_comp1.create alive;
554 for (i:=0; i<5; i:=i+1)
556 comp[i].start(configOper_behav7(int2float(i + 1)));
558 if (all component.running) {setverdict(pass)}
559 else {setverdict(fail)};
562 if (all component.running) {setverdict(fail)}
563 else {setverdict(pass)};
565 comp[0].start(configOper_behav7(1.0));
566 for (i:=0; i<5; i:=i+1)
569 if (all component.running) {setverdict(pass)}
570 else {setverdict(fail)};
572 for (i:=0; i<5; i:=i+1)
575 if (all component.running) {setverdict(pass)}
576 else {setverdict(fail)};
580 testcase configOperAliveAny_alive() runs on configOper_comp2 {
581 var configOper_comp1 comp[5];
584 for (i:=0; i<5; i:=i+1)
586 comp[i]:=configOper_comp1.create alive;
587 comp[i].start(configOper_behav0());
589 for (i:=0; i<4; i:=i+1)
592 if (any component.alive) {setverdict(pass)}
593 else {setverdict(fail)};
596 if (any component.alive) {setverdict(fail)}
597 else {setverdict(pass)};
600 testcase configOperAliveAll_alive() runs on configOper_comp2 {
601 var configOper_comp1 comp[5];
604 for (i:=0; i<5; i:=i+1)
606 comp[i]:=configOper_comp1.create alive;
607 comp[i].start(configOper_behav0());
609 if (all component.alive) {setverdict(pass)}
610 else {setverdict(fail)};
611 for (i:=0; i<5; i:=i+1)
614 if (all component.alive) {setverdict(fail)}
615 else {setverdict(pass)};
619 testcase configOperDone_alive() runs on configOper_comp1 {
620 var configOper_comp1 comp:=configOper_comp1.create alive;
622 connect(self:Port1,comp:Port1);
623 comp.start(configOper_behav3());
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")}
634 testcase configOperDone2_alive() runs on configOper_comp1 {
635 var configOper_comp1 comp:=configOper_comp1.create alive;
637 comp.start(configOper_behav0());
640 [] comp.done {setverdict(pass)}
641 [else] {setverdict(fail)}
645 [] comp.done {setverdict(pass)}
646 [else] {setverdict(fail)}
650 testcase configOperDoneAny_alive() runs on configOper_comp2 {
651 var configOper_comp1 comp[5];
655 for (i:=0; i<5; i:=i+1)
657 comp[i]:=configOper_comp1.create alive;
658 connect(self:Port2[i],comp[i]:Port1);
659 comp[i].start(configOper_behav3());
661 for (i:=0; i<5; i:=i+1) {
667 [] Port2[i].receive(integer:?) {setverdict(fail)}
668 [] any component.done {setverdict(pass)}
669 [] T1.timeout {setverdict(fail)}
670 [] comp[i].done {setverdict(fail)}
675 testcase configOperDoneAny2_alive() runs on configOper_comp1 {
676 var configOper_comp1 comp:=configOper_comp1.create alive;
677 var configOper_comp1 comp1:=configOper_comp1.create alive;
679 comp.start(configOper_behav0());
680 comp1.start(configOper_behav0());
682 [] any component.done {setverdict(fail)}
683 [else] {setverdict(pass)}
687 [] all component.done {setverdict(fail)}
688 [] any component.done {setverdict(pass)}
689 [else] {setverdict(fail)}
693 [] all component.done {setverdict(fail)}
694 [] any component.done {setverdict(pass)}
695 [else] {setverdict(fail)}
699 [] any component.done {setverdict(pass)}
700 [else] {setverdict(fail)}
704 testcase configOperDoneAll_alive() runs on configOper_comp2 {
705 var configOper_comp1 comp[5];
710 for (i:=0; i<5; i:=i+1)
713 comp[i]:=configOper_comp1.create alive;
714 connect(self:Port2[i],comp[i]:Port1);
715 comp[i].start(configOper_behav3());
717 for (i:=0; i<5; i:=i+1) {
723 [] Port2[2].receive(integer:?) {setverdict(fail)}
724 [] all component.done {setverdict(pass)}
725 [] T1.timeout {setverdict(fail)}
729 testcase configOperDoneAll2_alive() runs on configOper_comp2 {
730 var configOper_comp1 comp[5];
732 for (i:=0; i<5; i:=i+1)
734 comp[i]:=configOper_comp1.create alive;
735 comp[i].start(configOper_behav0());
737 for (i:=0; i<4; i:=i+1) {
742 [] all component.done {setverdict(pass)}
743 [else] {setverdict(fail)}
747 testcase configOperKilled_alive() runs on configOper_comp1 {
748 var configOper_comp1 comp:=configOper_comp1.create alive;
750 comp.start(configOper_behav3());
753 [] comp.killed {setverdict(pass)}
754 [else] {setverdict(fail)}
758 testcase configOperKilledAny_alive() runs on configOper_comp2 {
759 var configOper_comp1 comp[5];
763 for (i:=0; i<5; i:=i+1)
765 comp[i]:=configOper_comp1.create alive;
766 connect(self:Port2[i],comp[i]:Port1);
767 comp[i].start(configOper_behav3());
769 for (i:=0; i<4; i:=i+1) {
772 [] all component.done {setverdict(fail)}
773 [] any component.killed {setverdict(pass)}
774 [else] {setverdict(fail)}
780 testcase configOperKilledAll_alive() runs on configOper_comp2 {
782 var configOper_comp1 comp[5];
784 for (i:=0; i<5; i:=i+1)
786 comp[i]:=configOper_comp1.create alive;
787 connect(self:Port2[i],comp[i]:Port1);
788 comp[i].start(configOper_behav3());
790 for (i:=0; i<4; i:=i+1) {
793 [] all component.done {setverdict(fail)}
794 [] any component.killed {setverdict(pass)}
795 [else] {setverdict(fail)}
800 [] all component.killed {setverdict(pass)}
801 [else] {setverdict(fail)}
805 testcase configOperStopAll_alive() runs on configOper_comp2 {
806 var configOper_comp1 comp[5];
808 for (i:=0; i<5; i:=i+1)
810 comp[i]:=configOper_comp1.create alive;
811 connect(self:Port2[i],comp[i]:Port1);
812 comp[i].start(configOper_behav3());
816 if (any component.running) {setverdict(fail)}
817 else {setverdict(pass)};
821 testcase configOperKillAll_alive() runs on configOper_comp2 {
822 var configOper_comp1 comp[5];
824 for (i:=0; i<5; i:=i+1)
826 comp[i]:=configOper_comp1.create alive;
827 connect(self:Port2[i],comp[i]:Port1);
828 comp[i].start(configOper_behav3());
832 if (any component.alive) {setverdict(fail)}
833 else {setverdict(pass)};
836 testcase configOperAutoStopAndKill_alive() runs on configOper_comp2 {
837 var configOper_comp1 comp[5];
841 for (i:=0; i<5; i:=i+1)
843 comp[i]:=configOper_comp1.create alive;
844 connect(self:Port2[i],comp[i]:Port1);
845 comp[i].start(configOper_behav1());
853 testcase configOperAutoStopAndKill2_alive() runs on configOper_comp2 {
854 var configOper_comp1 comp[5];
858 for (i:=0; i<5; i:=i+1)
860 comp[i]:=configOper_comp1.create alive;
861 connect(self:Port2[i],comp[i]:Port1);
862 comp[i].start(configOper_behav1());
864 for (i:=0; i<5; i:=i+1)
867 Port2[i].receive(integer:?) -> value xx2;
868 if (xx2==i+6) {setverdict(pass)}
869 else {setverdict(fail)};
873 ///////////////////////////////////////////////////////////////////////
874 ///////////////////// Interleave Statement ////////////////////////////
875 ///////////////////////////////////////////////////////////////////////
876 signature MySig() exception (integer);
877 signature MySig1(inout float par) exception (integer);
878 type port interleave_port_M message { inout integer, float } with { extension "internal" };
879 type port interleave_port_P procedure { inout MySig, MySig1 } with { extension "internal" };
880 template MySig MySigTemplate := {}
881 template MySig1 MySigTemplate1 := {55.1}
883 type component interleave_comp {
884 port interleave_port_M Port1;
885 port interleave_port_P Port2;
886 port interleave_port_P Port3;
892 function interleave_behav1(float par) runs on interleave_comp {
897 function interleave_behav2(integer par1, float par2) runs on interleave_comp {
900 if (par1==0) { Port1.send(par2); }
901 else { Port1.send(par1); }
904 function 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;
911 [] Port3.getcall(MySigTemplate1) {
912 Port3.reply(MySigTemplate);
913 if (path==1) {setverdict(pass)}
914 else {setverdict(fail)};
917 [] Port3.getcall(MySigTemplate) {
918 Port3.reply(MySigTemplate1);
919 if (path==0) {setverdict(pass)}
920 else {setverdict(fail)};
924 if (path==2) {setverdict(pass)}
925 else {setverdict(fail)};
928 function 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;
935 [] Port3.getcall(MySigTemplate1) {
936 Port3.raise(MySig1,integer:15);
937 //interleave_verdict(1);
938 if (path==1) {setverdict(pass)}
939 else {setverdict(fail)};
942 [] Port3.getcall(MySigTemplate) {
943 Port3.raise(MySig,integer:5);
944 //interleave_verdict(0);
945 if (path==0) {setverdict(pass)}
946 else {setverdict(fail)};
950 if (path==2) {setverdict(pass)}
951 else {setverdict(fail)};
954 function interleave_behav5() runs on configOper_comp5
957 // interleave example identical to TTCN-3 Basic Course
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") }
967 testcase 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;
981 [] any component.killed {
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;
990 if (loop==0 and counter==6) {
992 comp1:=interleave_comp.create ("comp1 alive") alive;
993 comp1.start(interleave_behav1(2.2));
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;
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;
1008 [] all component.done {
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;
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;
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;
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;
1041 if (counter==14) {setverdict(pass)}
1042 else {setverdict(fail, "counter is: ", counter)};
1045 testcase 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));
1054 [] Port1.receive (integer:?) -> value xx1 {
1057 [] Port1.trigger (float:?) -> value xx2 {
1060 [] any port.trigger {
1061 log("Any Port Trigger");
1067 comp.start(interleave_behav2(0, 0.1));
1068 comp1.start(interleave_behav2(50, 0.1));
1070 [] any port.receive {
1071 log("Any Port Receive");
1077 testcase 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));
1083 var integer path1 := 0;// The execution path of comp1
1084 var integer path2 := 0;// the execution path of comp
1086 [] Port2.getcall(MySigTemplate1) {
1087 if (path2==0) {setverdict(pass)}
1088 else {setverdict(fail)};
1091 [] Port2.getreply(MySigTemplate1) {
1092 if (path2==2) {setverdict(pass)}
1093 else {setverdict(fail)};
1095 Port2.call(MySigTemplate1,nowait);
1098 if (path1==1) {setverdict(pass)}
1099 else {setverdict(fail)};
1103 if (path1==0) {setverdict(pass)}
1104 else {setverdict(fail)};
1106 comp1.start(interleave_behav1(2.8));
1108 [] any port.getcall {
1109 if (path2==1) {setverdict(pass)}
1110 else {setverdict(fail)};
1112 Port2.call(MySigTemplate,nowait);
1114 [] any port.getreply {
1115 if (path2==3) {setverdict(pass)}
1116 else {setverdict(fail)};
1120 if (path1==2 and path2 == 4) {setverdict(pass)}
1121 else {setverdict(fail)};
1124 testcase 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));
1129 var integer path1 := 0;//The timeout executionpath
1130 var integer path2 := 0;//The real executionpath
1132 [] Port2.catch(MySig, integer:5) {
1133 Port2.call(MySigTemplate1,nowait);
1134 if (path2==2) {setverdict(pass)}
1135 else {setverdict(fail)};
1138 []Port2.check(getcall(MySigTemplate1)) {
1140 if (path2==0) {setverdict(pass)}
1141 else {setverdict(fail)};
1149 Port2.call(MySigTemplate,nowait);
1150 if (path2==1) {setverdict(pass)}
1151 else {setverdict(fail)};
1155 if (path2==3) {setverdict(pass)}
1156 else {setverdict(fail)};
1160 if (path1==1 and path2==4) {setverdict(pass)}
1161 else {setverdict(fail)};
1164 testcase InterleaveStatem5() runs on configOper_comp5
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())
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
1186 // wait for ptc to terminate normally
1190 // check if f_interleave() terminated properly
1193 [] ptc.done { T.stop; setverdict(pass) }
1194 [] T.timeout { ptc.kill; setverdict(fail) } // verdict is fail for hanging ptc
1198 testcase configOperConnectDisconnect() runs on configOper_comp1 {
1199 var configOper_comp1 comp:=configOper_comp1.create;
1200 connect(mtc:Port1,comp:Port1);
1201 disconnect(mtc:Port1,comp:Port1);
1202 connect(comp:Port1, mtc:Port1);
1203 disconnect(mtc:Port1,comp:Port1);
1204 connect(mtc:Port1,comp:Port1);
1205 disconnect(comp:Port1, mtc:Port1);
1206 connect(comp:Port1, mtc:Port1);
1207 disconnect(comp:Port1, mtc:Port1);
1212 testcase configOperMapUnmap() runs on configOper_comp4
1213 system configOper_comp4 {
1214 var configOper_comp4 comp:=configOper_comp4.create;
1215 map(mtc:Port4,system:Port4);
1216 unmap(mtc:Port4,system:Port4);
1217 map(system:Port4, mtc:Port4);
1218 unmap(mtc:Port4,system:Port4);
1219 map(mtc:Port4,system:Port4);
1220 unmap(system:Port4, mtc:Port4);
1221 map(system:Port4, mtc:Port4);
1222 unmap(system:Port4, mtc:Port4);
1224 map(comp:Port4,system:Port4);
1225 unmap(comp:Port4,system:Port4);
1226 map(system:Port4, comp:Port4);
1227 unmap(comp:Port4,system:Port4);
1228 map(comp:Port4,system:Port4);
1229 unmap(system:Port4, comp:Port4);
1230 map(system:Port4, comp:Port4);
1231 unmap(system:Port4, comp:Port4);
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());
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());
1280 execute(InterleaveStatem1());
1281 execute(InterleaveStatem2());
1282 execute(InterleaveStatem3());
1283 execute(InterleaveStatem4());
1284 execute(InterleaveStatem5());
1285 execute(configOperConnectDisconnect());
1286 execute(configOperMapUnmap());