diff options
author | Jan Belle | 2020-03-06 15:49:40 +0000 |
---|---|---|
committer | Jan Belle | 2020-03-06 15:49:40 +0000 |
commit | d365247fdb0c66ebb817f7c00bacc60f41193952 (patch) | |
tree | 196836b5071ddc7ceb9aa356ad7973179ecdd498 | |
parent | 0a720c6717aebe8b7a909e83d2d8d90aadb84cc6 (diff) | |
download | org.eclipse.etrice-d365247fdb0c66ebb817f7c00bacc60f41193952.tar.gz org.eclipse.etrice-d365247fdb0c66ebb817f7c00bacc60f41193952.tar.xz org.eclipse.etrice-d365247fdb0c66ebb817f7c00bacc60f41193952.zip |
[generator] Add default physical model for test instance annotation
Change-Id: Ib98c47903fd27936a00639305c4612be7340ac8a
-rw-r--r-- | plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/generic/TestInstanceCreator.xtend | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/generic/TestInstanceCreator.xtend b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/generic/TestInstanceCreator.xtend index 13bcaa149..0d6d8e229 100644 --- a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/generic/TestInstanceCreator.xtend +++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/generic/TestInstanceCreator.xtend @@ -16,6 +16,9 @@ import org.eclipse.etrice.generator.base.logging.ILogger import org.eclipse.etrice.core.genmodel.fsm.IDiagnostician import org.eclipse.etrice.core.room.SubSystemClass import org.eclipse.etrice.core.room.ActorClass +import org.eclipse.etrice.core.etphys.eTPhys.ETPhysFactory +import org.eclipse.etrice.core.etphys.eTPhys.ThreadModel +import org.eclipse.etrice.core.etphys.eTPhys.ExecMode @FinalFieldsConstructor class TestInstanceCreator { @@ -24,6 +27,7 @@ class TestInstanceCreator { val extension RoomFactory = RoomFactory.eINSTANCE val extension ETMapFactory = ETMapFactory.eINSTANCE + val extension ETPhysFactory = ETPhysFactory.eINSTANCE // ctor val ILogger logger @@ -91,7 +95,10 @@ class TestInstanceCreator { // get physical system val List<PhysicalSystem> allPhysSystems = physModels.fold(newArrayList,[list, model|list += model.systems return list]) - if (allPhysSystems.size != 1) { + if(allPhysSystems.size == 0) { // add a default physical system if none is present + allPhysSystems.add(createDefaultPhysicalSystem) + } + else if (allPhysSystems.size > 1) { logger.logError('''TestInstanceCreator: mapping failed, found «allPhysSystems.size» physical systems''') return null } @@ -135,4 +142,33 @@ class TestInstanceCreator { def protected hasTestAnnotation(StructureClass cls) { cls.annotations.exists[type.name == ANNOTATION_TYPE_NAME] } + + def private createDefaultPhysicalSystem() { + val runtimeClass = createRuntimeClass => [ + name = "DefaultRuntimeClass" + threadModel = ThreadModel.MULTI_THREADED + ] + val nodeClass = createNodeClass => [ + runtime = runtimeClass + priomin = 1 + priomax = 10 + threads += createPhysicalThread => [ + name = "DefaultPhysicalThread" + ^default = true + execmode = ExecMode.MIXED + time = 100 + prio = 5 + stacksize = 1024 + msgblocksize = 64 + msgpoolsize = 100 + ] + ] + createPhysicalSystem => [ + name = "GenericPhysicalSystem" + nodeRefs += createNodeRef => [ + name = "node" + type = nodeClass + ] + ] + } } |