diff options
author | Henrik Rentz-Reichert | 2013-11-18 16:51:11 +0000 |
---|---|---|
committer | Henrik Rentz-Reichert | 2013-11-19 17:36:56 +0000 |
commit | af70a003bffc78a40b716f493069545a9d94ad5c (patch) | |
tree | 43f8136fec492fd07aed57122c0e5f07b7c1770a /tests/org.eclipse.etrice.generator.common.tests | |
parent | 6a31f677cdc6076eb2c16d0e5642acc237b3ac5e (diff) | |
download | org.eclipse.etrice-af70a003bffc78a40b716f493069545a9d94ad5c.tar.gz org.eclipse.etrice-af70a003bffc78a40b716f493069545a9d94ad5c.tar.xz org.eclipse.etrice-af70a003bffc78a40b716f493069545a9d94ad5c.zip |
[runtime.java][generator.java] Bug 422044: add possibility to
store/restore an actor's extended state using POJOs
https://bugs.eclipse.org/422044
Change-Id: Iba98c6dff98da807098a82d37e7d8dd8489df180
Diffstat (limited to 'tests/org.eclipse.etrice.generator.common.tests')
5 files changed, 226 insertions, 1 deletions
diff --git a/tests/org.eclipse.etrice.generator.common.tests/models/StaticConfigTest_Java.room b/tests/org.eclipse.etrice.generator.common.tests/models/StaticConfigTest_Java.room index 489a1a209..5c396a422 100644 --- a/tests/org.eclipse.etrice.generator.common.tests/models/StaticConfigTest_Java.room +++ b/tests/org.eclipse.etrice.generator.common.tests/models/StaticConfigTest_Java.room @@ -50,7 +50,7 @@ RoomModel StaticConfigTest { State s1 { entry { "data_3.varCheck3(caseId);" - "SubSystemClassBase subSystem = (SubSystemClassBase) ((ActorClassBase)getParent()).getParent();" + "SubSystemClassBase subSystem = (SubSystemClassBase) RTServices.getInstance().getSubSystem();" "Testee_Super2_ac testee_super2 = (Testee_Super2_ac) subSystem.getInstance(\"/System_StaticConfigTest/subSystem/top/tester/testee_super2\");" "int caseId_2 = testee_super2.getCaseId();" "testee_super2.getReg_port().varCheck(caseId_2);" diff --git a/tests/org.eclipse.etrice.generator.common.tests/models/StoreRestore.room b/tests/org.eclipse.etrice.generator.common.tests/models/StoreRestore.room new file mode 100644 index 000000000..c67843e64 --- /dev/null +++ b/tests/org.eclipse.etrice.generator.common.tests/models/StoreRestore.room @@ -0,0 +1,219 @@ +RoomModel StoreRestore { + + SubSystemClass SubSystem_StoreRestore { + ActorRef top: StoreRestore_Top + LogicalThread defaultThread + } + + ActorClass StoreRestore_Top { + Structure { + ActorRef tester: Tester + ActorRef testee: Testee + Binding tester.prt and testee.prt + } + Behavior { } + } + + ActorClass Testee { + Interface { + Port prt: PC + } + Structure { + usercode1 { "import StoreRestore.ObjectHolder;" } + + external Port prt + + Attribute ival: int16 + Attribute iarr [ 3 ]: int32 + Attribute sdval: SomeData + Attribute sdarr [ 5 ]: SomeData + Attribute cdval: ComplexData + } + Behavior { + Operation doStore() { + "System.out.println(\"doStore()\");" + "IActorClassDataObject dataObject = newDataObject();" + "store(dataObject);" + "ObjectHolder.setObject(dataObject);" + } + Operation doRestore() { + "System.out.println(\"doRestore()\");" + "IActorClassDataObject dataObject = ObjectHolder.getObject();" + "restore(dataObject);" + } + StateMachine { + Transition tr0: my tp0 -> Restore { + triggers { + <restore: prt> + } + } + Transition init: initial -> Begin { } + Transition tr1: Begin -> Store { + triggers { + <step: prt> + } + } + Transition tr2: Store -> state2 { + triggers { + <step: prt> + } + } + Transition tr3: state2 -> state3 { + triggers { + <step: prt> + } + } + TransitionPoint tp0 + State Begin { + entry { + "ival = 3;" + } + } + State Store { + entry { + "System.out.println(\"<|MODEL_LOCATION|>\");" + "setFinalAction(new SingleFinalAction() {" + "\tpublic void run() {" + "\t\tdoStore();" + "\t}" + "});" + } + } + State state2 { + entry { + "prt.valueIs(ival);" + "" + "ival = 123;" + } + } + State Restore { + entry { + "System.out.println(\"<|MODEL_LOCATION|>\");" + "setFinalAction(new SingleFinalAction() {" + "\tpublic void run() {" + "\t\tdoRestore();" + "\t}" + "});" + } + } + State state3 { + entry { + "ival = 456;" + "" + "prt.answer();" + } + } + } + } + } + + ActorClass Tester { + Interface { + conjugated Port prt: PC + } + Structure { + external Port prt + + Attribute caseId: int32 + Attribute counter: int32 = "0" + } + Behavior { + Operation Tester() { + "caseId = etUnit_openAll(\"tmp\", \"StoreRestore\", \"org.eclipse.etrice.generator.common.tests.StoreRestore\", \"StoreRestore_case\");" + } + Operation ~Tester() { + "etUnit_closeAll(caseId);" + } + + StateMachine { + Transition init: initial -> Prepare { } + Transition tr1: Loop2 -> cp cp0 { + triggers { + <answer: prt> + } + } + Transition tr2: cp cp0 -> Done + Transition tr3: cp cp0 -> Loop { + cond { + "++counter<10" + } + } + Transition tr0: Prepare -> Prepare2 { + triggers { + <valueIs: prt> + } + action { + "EXPECT_EQUAL_INT16(caseId, \"check old value <|MODEL_LOCATION|>\", (short)3, val);" + } + } + Transition tr4: Prepare2 -> Loop { + triggers { + <answer: prt> + } + } + Transition tr5: Loop -> Loop2 { + triggers { + <valueIs: prt> + } + action { + "EXPECT_EQUAL_INT16(caseId, \"check old value <|MODEL_LOCATION|>\", (short)3, val);" + } + } + ChoicePoint cp0 + State Prepare { + entry { + "prt.step();" + "prt.step();" + } + } + State Loop { + entry { + "prt.restore();" + "" + "prt.step();" + "prt.step();" + } + } + State Done { + entry { + "etUnit_testFinished(caseId);" + } + } + State Prepare2 { + entry { + "prt.step();" + } + } + State Loop2 { + entry { + "prt.step();" + } + } + } + } + } + + ProtocolClass PC { + incoming { + Message step() + Message restore() + } + outgoing { + Message answer() + Message valueIs(val: int16) + } + } + + DataClass SomeData { + Attribute ival: int16 + Attribute iarr [ 3 ]: int32 + } + + DataClass ComplexData { + Attribute sdval: SomeData + Attribute sdarr [ 5 ]: SomeData + } + + PrimitiveType int16: ptInteger -> short(Short) default "0" + PrimitiveType int32: ptInteger -> int(Integer) default "0" +}
\ No newline at end of file diff --git a/tests/org.eclipse.etrice.generator.common.tests/models/generator.java.tests.etmap b/tests/org.eclipse.etrice.generator.common.tests/models/generator.java.tests.etmap index f4251adae..a2f816eca 100644 --- a/tests/org.eclipse.etrice.generator.common.tests/models/generator.java.tests.etmap +++ b/tests/org.eclipse.etrice.generator.common.tests/models/generator.java.tests.etmap @@ -64,5 +64,8 @@ MappingModel JavaGenTest { SubSystemMapping enTest -> node18 { ThreadMapping defaultThread -> DfltThread } + SubSystemMapping stTest -> node19 { + ThreadMapping defaultThread -> DfltThread + } } }
\ No newline at end of file diff --git a/tests/org.eclipse.etrice.generator.common.tests/models/generator.java.tests.room b/tests/org.eclipse.etrice.generator.common.tests/models/generator.java.tests.room index c0dc2d191..9ee97a6a2 100644 --- a/tests/org.eclipse.etrice.generator.common.tests/models/generator.java.tests.room +++ b/tests/org.eclipse.etrice.generator.common.tests/models/generator.java.tests.room @@ -3,6 +3,7 @@ RoomModel JavaGenTests { import HandlerTest.* from "HandlerTest.room" import ChoicePointTest.* from "ChoicePointTest.room" import EnumTest.* from "EnumTest.room" + import StoreRestore.* from "StoreRestore.room" import ChoicePointTestExtended.* from "ChoicePointTestExtended.room" import PingPongThreadTest.* from "PingPongThreadTest.room" import PingPongThreadTestReplPort.* from "PingPongThreadReplPortTest.room" @@ -23,6 +24,7 @@ RoomModel JavaGenTests { SubSystemRef hdTest: SubSystem_HandlerTest SubSystemRef cpTest: SubSystem_CPTest SubSystemRef enTest: SubSystem_EnumTest + SubSystemRef stTest: SubSystem_StoreRestore SubSystemRef cpExtTest : SubSystem_CPTestExtended SubSystemRef ppTest: SubSystem_PingPong SubSystemRef prTest: SubSystem_PingPongReplPort diff --git a/tests/org.eclipse.etrice.generator.common.tests/models/standard.etphys b/tests/org.eclipse.etrice.generator.common.tests/models/standard.etphys index 640f5c120..f31b064b8 100644 --- a/tests/org.eclipse.etrice.generator.common.tests/models/standard.etphys +++ b/tests/org.eclipse.etrice.generator.common.tests/models/standard.etphys @@ -19,6 +19,7 @@ PhysicalModel Standard { NodeRef node16: PC NodeRef node17: PC NodeRef node18: PC + NodeRef node19: PC } NodeClass PC { |