Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'tests/org.eclipse.etrice.generator.java.tests/model/dynamicActorTest6/DynamicActorTest6.room')
-rw-r--r--tests/org.eclipse.etrice.generator.java.tests/model/dynamicActorTest6/DynamicActorTest6.room226
1 files changed, 226 insertions, 0 deletions
diff --git a/tests/org.eclipse.etrice.generator.java.tests/model/dynamicActorTest6/DynamicActorTest6.room b/tests/org.eclipse.etrice.generator.java.tests/model/dynamicActorTest6/DynamicActorTest6.room
new file mode 100644
index 000000000..fe95b068f
--- /dev/null
+++ b/tests/org.eclipse.etrice.generator.java.tests/model/dynamicActorTest6/DynamicActorTest6.room
@@ -0,0 +1,226 @@
+RoomModel DynamicActorTest6 {
+
+ import etrice.api.types.int32
+ import etrice.api.types.string
+ import etrice.api.annotations.TestInstance
+
+ ActorClass Appl {
+ @TestInstance
+ Structure {
+ ActorRef ctrl: Controller
+ }
+ Behavior {
+ }
+ }
+
+ ActorClass Controller {
+ Structure {
+ conjugated Port pcont: PCtrl
+ conjugated Port pout: PC
+ conjugated Port pin: PC
+ Attribute caseId: int32
+ ActorRef cont: Container
+ Binding pcont and cont.fct
+ Binding pout and cont.pin
+ Binding pin and cont.pout
+ }
+ Behavior {
+ ctor '''caseId = etUnit_openAll("log", "DynamicActorTest6", "org.eclipse.etrice.generator.java.tests.DynamicActorTest6", "DynamicActorTest6_case");'''
+ dtor '''etUnit_closeAll(caseId);'''
+ StateMachine {
+ Transition init: initial -> CreateOptionals {
+ }
+ Transition tr0: CreateOptionals -> Sending {
+ triggers {
+ <done: pcont>
+ }
+ }
+ Transition tr1: Sending -> Destroy {
+ triggers {
+ <hello: pin>
+ }
+ action '''System.out.println("Controller received: "+transitionData);'''
+ }
+ Transition tr2: Destroy -> CreateAgain {
+ triggers {
+ <done: pcont>
+ }
+ }
+ Transition tr3: CreateAgain -> SendAgain {
+ triggers {
+ <done: pcont>
+ }
+ }
+ Transition tr4: SendAgain -> Done {
+ triggers {
+ <hello: pin>
+ }
+ action '''System.out.println("Controller received: "+transitionData);'''
+ }
+ State CreateOptionals {
+ entry '''pcont.createOpts();'''
+ }
+ State Sending {
+ entry '''pout.sayHello();'''
+ }
+ State Done {
+ entry '''etUnit_testFinished(caseId);'''
+ }
+ State Destroy {
+ entry '''pcont.destroyOpts();'''
+ }
+ State CreateAgain {
+ entry '''pcont.createOpts();'''
+ }
+ State SendAgain {
+ entry '''pout.sayHello();'''
+ }
+ }
+ }
+ }
+
+ ActorClass Container {
+ Interface {
+ Port fct: PCtrl
+ Port pout: PC
+ Port pin: PC
+ }
+ Structure {
+ external Port fct
+ optional ActorRef opt1: Optional1
+ optional ActorRef opt2: Optional2
+ Binding opt1.pout and opt2.pin
+ Binding pin and opt1.pin
+ Binding pout and opt2.pout
+ }
+ Behavior {
+
+ // this method prints the passed message and then dumps the object tree consisting of actors and ports
+ Operation dumpTree(msg: string) '''
+ System.out.println(msg);
+ System.out.println(((org.eclipse.etrice.runtime.java.messaging.RTObject)getRoot()).toStringRecursive());'''
+ StateMachine {
+ Transition init: initial -> Ready {
+ }
+ Transition tr0: Ready -> Ready {
+ triggers {
+ <createOpts: fct>
+ }
+ action '''
+ opt1.createOptionalActor("Optional1", getThread());
+ opt2.createOptionalActor("Optional2", getThread());
+ dumpTree("after creation of op1 and opt2");
+ fct.done();'''
+ }
+ Transition tr1: Ready -> Ready {
+ triggers {
+ <destroyOpts: fct>
+ }
+ action '''
+ opt1.destroyOptionalActor();
+ opt2.destroyOptionalActor();
+ fct.done();'''
+ }
+ State Ready
+ }
+ }
+ }
+
+ ActorClass Optional1 {
+ Interface {
+ Port pout: PC
+ Port pin: PC
+ }
+ Structure {
+ ActorRef sub1: AC1
+ Binding pin and sub1.pin
+ Binding pout and sub1.pout
+ }
+ Behavior {
+ }
+ }
+
+ ActorClass Optional2 {
+ Interface {
+ Port pout: PC
+ conjugated Port pin: PC
+ }
+ Structure {
+ ActorRef sub2: AC2
+ Binding pout and sub2.pout
+ Binding pin and sub2.pin
+ }
+ Behavior {
+ }
+ }
+
+ ActorClass AC1 {
+ Interface {
+ Port pout: PC
+ Port pin: PC
+ }
+ Structure {
+ external Port pout
+ external Port pin
+ }
+ Behavior {
+ StateMachine {
+ Transition init: initial -> Ready {
+ }
+ Transition tr0: Ready -> Ready {
+ triggers {
+ <sayHello: pin>
+ }
+ action '''pout.hello("this is AC1, instance "+getInstancePath());'''
+ }
+ State Ready
+ }
+ }
+ }
+
+ ActorClass AC2 {
+ Interface {
+ Port pout: PC
+ conjugated Port pin: PC
+ }
+ Structure {
+ external Port pout
+ external Port pin
+ }
+ Behavior {
+ StateMachine {
+ Transition init: initial -> Ready {
+ }
+ Transition tr0: Ready -> Ready {
+ triggers {
+ <hello: pin>
+ }
+ action '''
+ System.out.println("AC2 received "+transitionData);
+
+ pout.hello("AC2: forwarding "+transitionData);'''
+ }
+ State Ready
+ }
+ }
+ }
+
+ ProtocolClass PC {
+ incoming {
+ Message sayHello()
+ }
+ outgoing {
+ Message hello(string)
+ }
+ }
+
+ ProtocolClass PCtrl {
+ incoming {
+ Message createOpts()
+ Message destroyOpts()
+ }
+ outgoing {
+ Message done()
+ }
+ }
+} \ No newline at end of file

Back to the top