Converted SLG Linux transformers to Java - step 1
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxMakeGenerator.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxMakeGenerator.xtend
new file mode 100644
index 0000000..47853b3
--- /dev/null
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxMakeGenerator.xtend
@@ -0,0 +1,57 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2020-2021 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ * *******************************************************************************
+ */
+
+package org.eclipse.app4mc.slg.linux.generators
+
+class LinuxMakeGenerator {
+
+ // Suppress default constructor
+ private new() {
+ throw new IllegalStateException("Utility class");
+ }
+
+ static def String getContent(boolean experimentalCodeMatching, boolean instrumentation) '''
+ synthetic: main.o tasks.o runnables.o «IF experimentalCodeMatching»codesnippets.o«ENDIF» «IF instrumentation»instrument.o«ENDIF» «IF !experimentalCodeMatching» labels.o ticksUtils.o«ENDIF»
+ gcc -o synthetic main.o tasks.o runnables.o «IF !experimentalCodeMatching» labels.o ticksUtils.o«ENDIF» «IF experimentalCodeMatching»codesnippets.o«ENDIF» «IF instrumentation»instrument.o«ENDIF» -pthread
+
+ main.o: Executable/main/_src/main.c
+ gcc -c «IF !experimentalCodeMatching»-Isynthetic_gen/labels/_inc -Isynthetic_gen/ticksUtils/_inc«ENDIF» -Isynthetic_gen/tasks/_inc -Isynthetic_gen/runnables/_inc -Isynthetic_gen «IF experimentalCodeMatching»-Isynthetic_gen/codesnippets/_inc«ENDIF» Executable/main/_src/main.c
+
+ tasks.o: synthetic_gen/tasks/_src/tasks.c
+ gcc -c «IF !experimentalCodeMatching»-Isynthetic_gen/labels/_inc -Isynthetic_gen/ticksUtils/_inc«ENDIF» -Isynthetic_gen/tasks/_inc -Isynthetic_gen/runnables/_inc «IF experimentalCodeMatching»-Isynthetic_gen/codesnippets/_inc«ENDIF» synthetic_gen/tasks/_src/tasks.c
+
+ runnables.o: synthetic_gen/runnables/_src/runnables.c
+ gcc -c «IF !experimentalCodeMatching»-Isynthetic_gen/labels/_inc -Isynthetic_gen/ticksUtils/_inc«ENDIF» -Isynthetic_gen/runnables/_inc «IF experimentalCodeMatching»-Isynthetic_gen/codesnippets/_inc«ENDIF» synthetic_gen/runnables/_src/runnables.c -O2
+
+
+ «IF !experimentalCodeMatching»
+ labels.o: synthetic_gen/labels/_src/labels.c
+ gcc -c -Isynthetic_gen/labels/_inc synthetic_gen/labels/_src/labels.c -O2
+
+ ticksUtils.o: synthetic_gen/ticksUtils/_src/ticksUtils.c
+ gcc -c -Isynthetic_gen/ticksUtils/_inc synthetic_gen/ticksUtils/_src/ticksUtils.c -O2
+
+ «ELSE»
+ codesnippets.o: synthetic_gen/codesnippets/_src/codesnippets.c
+ gcc -c -Isynthetic_gen/codesnippets/_inc synthetic_gen/codesnippets/_src/codesnippets.c
+ «ENDIF»
+
+ «IF instrumentation »
+ instrument.o: synthetic_gen/instrument.c
+ gcc -c -Isynthetic_gen synthetic_gen/instrument.c
+ «ENDIF»
+ '''
+
+}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksUtilsTranslationUnit.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksUtilsTranslationUnit.java
index f740a96..5f58af8 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksUtilsTranslationUnit.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksUtilsTranslationUnit.java
@@ -35,7 +35,7 @@
@Override
public String getModuleName() {
- return LinuxTicksUtilsTranslationUnit.getModuleNameStatic();
+ return getModuleNameStatic();
}
public CharSequence getExecCall(final String params) {
@@ -86,8 +86,8 @@
private void toH() {
- incAppend(LinuxTicksUtilsGenerator.burnTicksDecleration().toString());
- incAppend(LinuxTicksUtilsGenerator.burnTicksStatisticsDecleration().toString());
+ incAppend(LinuxTicksUtilsGenerator.burnTicksDecleration());
+ incAppend(LinuxTicksUtilsGenerator.burnTicksStatisticsDecleration());
}
}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxLabelTransformer.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxLabelTransformer.xtend
deleted file mode 100644
index 796843a..0000000
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxLabelTransformer.xtend
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- ********************************************************************************
- * Copyright (c) 2020-2021 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-
-package org.eclipse.app4mc.slg.linux.transformers
-
-import com.google.inject.Inject
-import com.google.inject.Singleton
-import org.eclipse.app4mc.amalthea.model.Label
-import org.eclipse.app4mc.slg.linux.generators.LinuxLabelTranslationUnit
-import org.eclipse.app4mc.transformation.util.OutputBuffer
-
-@Singleton
-class LinuxLabelTransformer extends LinuxBaseTransformer {
-
- @Inject OutputBuffer outputBuffer;
-
- def create new LinuxLabelTranslationUnit(outputBuffer, label) transform(Label label) {
- }
-
-}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxMakeTransformer.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxMakeTransformer.xtend
deleted file mode 100644
index 975fb71..0000000
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxMakeTransformer.xtend
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- ********************************************************************************
- * Copyright (c) 2020-2021 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- ********************************************************************************
- */
-
-package org.eclipse.app4mc.slg.linux.transformers
-
-import com.google.inject.Inject
-import java.util.Properties
-import org.eclipse.app4mc.slg.commons.m2t.AbstractSLGTransformer
-import org.eclipse.app4mc.transformation.util.OutputBuffer
-
-class LinuxMakeTransformer extends AbstractSLGTransformer {
-
- @Inject OutputBuffer outputBuffer
- @Inject Properties properties
-
- def transform() {
-
- val isExperimentalCodeSnippetMatchingAlgo = Boolean.parseBoolean(properties.getProperty("experimentalCodeSnippetMatching", "false"))
- val isInstrumentationEnabled = Boolean.parseBoolean(properties.getProperty("enableInstrumentation", "false"))
-
- var String makeContent = '''
- synthetic: main.o tasks.o runnables.o «IF isExperimentalCodeSnippetMatchingAlgo»codesnippets.o«ENDIF» «IF isInstrumentationEnabled»instrument.o«ENDIF» «IF !isExperimentalCodeSnippetMatchingAlgo» labels.o ticksUtils.o«ENDIF»
- gcc -o synthetic main.o tasks.o runnables.o «IF !isExperimentalCodeSnippetMatchingAlgo» labels.o ticksUtils.o«ENDIF» «IF isExperimentalCodeSnippetMatchingAlgo»codesnippets.o«ENDIF» «IF isInstrumentationEnabled»instrument.o«ENDIF» -pthread
-
- main.o: Executable/main/_src/main.c
- gcc -c «IF !isExperimentalCodeSnippetMatchingAlgo»-Isynthetic_gen/labels/_inc -Isynthetic_gen/ticksUtils/_inc«ENDIF» -Isynthetic_gen/tasks/_inc -Isynthetic_gen/runnables/_inc -Isynthetic_gen «IF isExperimentalCodeSnippetMatchingAlgo»-Isynthetic_gen/codesnippets/_inc«ENDIF» Executable/main/_src/main.c
-
- tasks.o: synthetic_gen/tasks/_src/tasks.c
- gcc -c «IF !isExperimentalCodeSnippetMatchingAlgo»-Isynthetic_gen/labels/_inc -Isynthetic_gen/ticksUtils/_inc«ENDIF» -Isynthetic_gen/tasks/_inc -Isynthetic_gen/runnables/_inc «IF isExperimentalCodeSnippetMatchingAlgo»-Isynthetic_gen/codesnippets/_inc«ENDIF» synthetic_gen/tasks/_src/tasks.c
-
- runnables.o: synthetic_gen/runnables/_src/runnables.c
- gcc -c «IF !isExperimentalCodeSnippetMatchingAlgo»-Isynthetic_gen/labels/_inc -Isynthetic_gen/ticksUtils/_inc«ENDIF» -Isynthetic_gen/runnables/_inc «IF isExperimentalCodeSnippetMatchingAlgo»-Isynthetic_gen/codesnippets/_inc«ENDIF» synthetic_gen/runnables/_src/runnables.c -O2
-
-
- «IF !isExperimentalCodeSnippetMatchingAlgo»
- labels.o: synthetic_gen/labels/_src/labels.c
- gcc -c -Isynthetic_gen/labels/_inc synthetic_gen/labels/_src/labels.c -O2
-
- ticksUtils.o: synthetic_gen/ticksUtils/_src/ticksUtils.c
- gcc -c -Isynthetic_gen/ticksUtils/_inc synthetic_gen/ticksUtils/_src/ticksUtils.c -O2
-
- «ELSE»
- codesnippets.o: synthetic_gen/codesnippets/_src/codesnippets.c
- gcc -c -Isynthetic_gen/codesnippets/_inc synthetic_gen/codesnippets/_src/codesnippets.c
- «ENDIF»
-
- «IF isInstrumentationEnabled »
- instrument.o: synthetic_gen/instrument.c
- gcc -c -Isynthetic_gen synthetic_gen/instrument.c
- «ENDIF»
- '''
- outputBuffer.appendTo("OTHER", "Makefile", makeContent)
- }
-
-}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxModel2TextTransformer.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxModel2TextTransformer.java
index ec0a3ba..3253d50 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxModel2TextTransformer.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxModel2TextTransformer.java
@@ -26,6 +26,11 @@
import org.eclipse.app4mc.slg.commons.m2t.transformers.AmaltheaModel2TextTransformer;
import org.eclipse.app4mc.slg.commons.m2t.transformers.InstrumentationTransformer;
import org.eclipse.app4mc.slg.commons.m2t.transformers.RunnableTransformer;
+import org.eclipse.app4mc.slg.linux.transformers.stimuli.LinuxStimulusTransformer;
+import org.eclipse.app4mc.slg.linux.transformers.sw.LinuxMakeTransformer;
+import org.eclipse.app4mc.slg.linux.transformers.sw.LinuxRealisticCodeTransformer;
+import org.eclipse.app4mc.slg.linux.transformers.sw.LinuxRunnableTransformer;
+import org.eclipse.app4mc.slg.linux.transformers.sw.LinuxTaskTransformer;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxRealisticCodeTransformer.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxRealisticCodeTransformer.xtend
deleted file mode 100644
index 7ba5365..0000000
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxRealisticCodeTransformer.xtend
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * *******************************************************************************
- * Copyright (c) 2020 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- * *******************************************************************************
- */
-
-package org.eclipse.app4mc.slg.linux.transformers
-
-import com.google.inject.Inject
-import com.google.inject.Singleton
-import org.eclipse.app4mc.slg.commons.m2t.CustomObjectsStore
-import org.eclipse.app4mc.slg.config.ConfigModel
-import org.eclipse.app4mc.slg.linux.generators.LinuxRealisiticSyntheticTranslationUnit
-import org.eclipse.app4mc.transformation.util.OutputBuffer
-
-@Singleton
-class LinuxRealisticCodeTransformer extends LinuxBaseTransformer {
-
- @Inject OutputBuffer outputBuffer;
- @Inject CustomObjectsStore customObjsStore
-
- def create new LinuxRealisiticSyntheticTranslationUnit(outputBuffer, customObjsStore.getInstance(ConfigModel)) transform() {
- }
-
-}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxRunnableTransformer.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxRunnableTransformer.xtend
deleted file mode 100644
index a27d6a1..0000000
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxRunnableTransformer.xtend
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * *******************************************************************************
- * Copyright (c) 2020-2021 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- * *******************************************************************************
- */
-
-package org.eclipse.app4mc.slg.linux.transformers
-
-import com.google.inject.Inject
-import com.google.inject.Singleton
-import java.util.Properties
-import org.eclipse.app4mc.amalthea.model.Runnable
-import org.eclipse.app4mc.slg.linux.generators.LinuxRunnableTranslationUnit
-import org.eclipse.app4mc.slg.linux.transformers.sw.LinuxActivityGraphItemTransformer
-import org.eclipse.app4mc.transformation.util.OutputBuffer
-
-@Singleton
-class LinuxRunnableTransformer extends LinuxBaseTransformer {
-
- @Inject LinuxActivityGraphItemTransformer linuxCallGraphItemTransformer
- @Inject OutputBuffer outputBuffer;
- @Inject Properties properties
-
- def create new LinuxRunnableTranslationUnit(outputBuffer, linuxCallGraphItemTransformer, runnable, properties) transform(
- Runnable runnable) {
- }
- }
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxStimulusTransformer.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxStimulusTransformer.xtend
deleted file mode 100644
index b5fe67d..0000000
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxStimulusTransformer.xtend
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * *******************************************************************************
- * Copyright (c) 2020 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- * *******************************************************************************
- */
-
-package org.eclipse.app4mc.slg.linux.transformers
-
-import com.google.inject.Inject
-import com.google.inject.Singleton
-import java.util.List
-import java.util.Properties
-import org.eclipse.app4mc.amalthea.model.Stimulus
-import org.eclipse.app4mc.slg.linux.generators.LinuxStimulusTranslationUnit
-import org.eclipse.app4mc.transformation.util.OutputBuffer
-
-@Singleton
-class LinuxStimulusTransformer extends LinuxBaseTransformer {
-
- @Inject OutputBuffer outputBuffer;
- @Inject Properties properties;
-
- def create new LinuxStimulusTranslationUnit(outputBuffer, properties, stimuli) transform(List<Stimulus> stimuli) {
- }
-
-}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTaskTransformer.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTaskTransformer.xtend
deleted file mode 100644
index 44be256..0000000
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTaskTransformer.xtend
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * *******************************************************************************
- * Copyright (c) 2020 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- * *******************************************************************************
- */
-
-package org.eclipse.app4mc.slg.linux.transformers
-
-import com.google.inject.Inject
-import com.google.inject.Singleton
-import org.eclipse.app4mc.amalthea.model.Task
-import org.eclipse.app4mc.slg.linux.generators.LinuxTaskTranslationUnit
-import org.eclipse.app4mc.transformation.util.OutputBuffer
-
-@Singleton
-class LinuxTaskTransformer extends LinuxBaseTransformer {
-
- @Inject OutputBuffer outputBuffer;
-
- def create new LinuxTaskTranslationUnit(outputBuffer, task) transform(Task task) {
- }
-
-}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTicksUtilsTransformer.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTicksUtilsTransformer.xtend
deleted file mode 100644
index 3662842..0000000
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTicksUtilsTransformer.xtend
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * *******************************************************************************
- * Copyright (c) 2020 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Robert Bosch GmbH - initial API and implementation
- * *******************************************************************************
- */
-
-package org.eclipse.app4mc.slg.linux.transformers
-
-import com.google.inject.Inject
-import com.google.inject.Singleton
-import org.eclipse.app4mc.amalthea.model.IDiscreteValueDeviation
-import org.eclipse.app4mc.slg.commons.m2t.CustomObjectsStore
-import org.eclipse.app4mc.slg.config.ConfigModel
-import org.eclipse.app4mc.slg.linux.generators.LinuxTicksUtilsTranslationUnit
-import org.eclipse.app4mc.transformation.util.OutputBuffer
-
-@Singleton
-class LinuxTicksUtilsTransformer extends LinuxBaseTransformer {
-
- @Inject OutputBuffer outputBuffer;
- @Inject CustomObjectsStore customObjsStore
-
- def LinuxTicksUtilsTranslationUnit generate(IDiscreteValueDeviation value) {
- return generateIntern(value.class) // hash according to class not instance
- }
-
- def create new LinuxTicksUtilsTranslationUnit(outputBuffer, customObjsStore.getInstance(ConfigModel), valueClass) generateIntern(
- Object valueClass) {
- }
-
-}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/stimuli/LinuxStimulusTransformer.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/stimuli/LinuxStimulusTransformer.java
new file mode 100644
index 0000000..ad149f6
--- /dev/null
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/stimuli/LinuxStimulusTransformer.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ */
+
+package org.eclipse.app4mc.slg.linux.transformers.stimuli;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Properties;
+
+import org.eclipse.app4mc.amalthea.model.Stimulus;
+import org.eclipse.app4mc.slg.linux.generators.LinuxStimulusTranslationUnit;
+import org.eclipse.app4mc.slg.linux.transformers.LinuxBaseTransformer;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class LinuxStimulusTransformer extends LinuxBaseTransformer {
+
+ @Inject private OutputBuffer outputBuffer;
+ @Inject private Properties properties;
+
+ public LinuxStimulusTranslationUnit transform(final List<Stimulus> stimuli) {
+ final ArrayList<?> key = CollectionLiterals.newArrayList(stimuli);
+ final LinuxStimulusTranslationUnit _result;
+ synchronized (_createCache_transform) {
+ if (_createCache_transform.containsKey(key)) {
+ return _createCache_transform.get(key);
+ }
+ LinuxStimulusTranslationUnit _linuxStimulusTranslationUnit = new LinuxStimulusTranslationUnit(
+ this.outputBuffer, this.properties, stimuli);
+ _result = _linuxStimulusTranslationUnit;
+ _createCache_transform.put(key, _result);
+ }
+ _init_transform(_result, stimuli);
+ return _result;
+ }
+
+ private final HashMap<ArrayList<?>, LinuxStimulusTranslationUnit> _createCache_transform = CollectionLiterals
+ .newHashMap();
+
+ private void _init_transform(final LinuxStimulusTranslationUnit it, final List<Stimulus> stimuli) {
+ }
+
+}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxLabelAccessTransformer.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxLabelAccessTransformer.java
index 5a758c0..477d0ff 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxLabelAccessTransformer.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxLabelAccessTransformer.java
@@ -23,7 +23,6 @@
import org.eclipse.app4mc.amalthea.model.SingleValueStatistic;
import org.eclipse.app4mc.slg.linux.generators.LinuxLabelTranslationUnit;
import org.eclipse.app4mc.slg.linux.transformers.LinuxBaseTransformer;
-import org.eclipse.app4mc.slg.linux.transformers.LinuxLabelTransformer;
import org.eclipse.app4mc.slg.linux.transformers.LinuxTranslationUnit;
import com.google.inject.Inject;
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxLabelTransformer.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxLabelTransformer.java
new file mode 100644
index 0000000..9bae033
--- /dev/null
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxLabelTransformer.java
@@ -0,0 +1,55 @@
+/**
+ * Copyright (c) 2020-2021 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ */
+
+package org.eclipse.app4mc.slg.linux.transformers.sw;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import org.eclipse.app4mc.amalthea.model.Label;
+import org.eclipse.app4mc.slg.linux.generators.LinuxLabelTranslationUnit;
+import org.eclipse.app4mc.slg.linux.transformers.LinuxBaseTransformer;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class LinuxLabelTransformer extends LinuxBaseTransformer {
+
+ @Inject private OutputBuffer outputBuffer;
+
+ public LinuxLabelTranslationUnit transform(final Label label) {
+ final ArrayList<?> key = CollectionLiterals.newArrayList(label);
+ final LinuxLabelTranslationUnit _result;
+ synchronized (_createCache_transform) {
+ if (_createCache_transform.containsKey(key)) {
+ return _createCache_transform.get(key);
+ }
+ LinuxLabelTranslationUnit _linuxLabelTranslationUnit = new LinuxLabelTranslationUnit(this.outputBuffer,
+ label);
+ _result = _linuxLabelTranslationUnit;
+ _createCache_transform.put(key, _result);
+ }
+ _init_transform(_result, label);
+ return _result;
+ }
+
+ private final HashMap<ArrayList<?>, LinuxLabelTranslationUnit> _createCache_transform = CollectionLiterals
+ .newHashMap();
+
+ private void _init_transform(final LinuxLabelTranslationUnit it, final Label label) {
+ }
+
+}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxMakeTransformer.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxMakeTransformer.java
new file mode 100644
index 0000000..7cc1276
--- /dev/null
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxMakeTransformer.java
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) 2020-2021 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ */
+
+package org.eclipse.app4mc.slg.linux.transformers.sw;
+
+import java.util.Properties;
+
+import org.eclipse.app4mc.slg.linux.generators.LinuxMakeGenerator;
+import org.eclipse.app4mc.slg.linux.transformers.LinuxBaseTransformer;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+
+import com.google.inject.Inject;
+
+public class LinuxMakeTransformer extends LinuxBaseTransformer {
+
+ @Inject private OutputBuffer outputBuffer;
+ @Inject private Properties properties;
+
+ public void transform() {
+
+ final boolean experimentalCodeMatching = Boolean
+ .parseBoolean(this.properties.getProperty("experimentalCodeSnippetMatching", "false"));
+ final boolean instrumentation = Boolean
+ .parseBoolean(this.properties.getProperty("enableInstrumentation", "false"));
+
+ this.outputBuffer.appendTo("OTHER", "Makefile",
+ LinuxMakeGenerator.getContent(experimentalCodeMatching, instrumentation));
+ }
+
+}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxRealisticCodeTransformer.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxRealisticCodeTransformer.java
new file mode 100644
index 0000000..dcb3bc9
--- /dev/null
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxRealisticCodeTransformer.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ */
+
+package org.eclipse.app4mc.slg.linux.transformers.sw;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import org.eclipse.app4mc.slg.commons.m2t.CustomObjectsStore;
+import org.eclipse.app4mc.slg.config.ConfigModel;
+import org.eclipse.app4mc.slg.linux.generators.LinuxRealisiticSyntheticTranslationUnit;
+import org.eclipse.app4mc.slg.linux.transformers.LinuxBaseTransformer;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class LinuxRealisticCodeTransformer extends LinuxBaseTransformer {
+
+ @Inject private OutputBuffer outputBuffer;
+ @Inject private CustomObjectsStore customObjsStore;
+
+ public LinuxRealisiticSyntheticTranslationUnit transform() {
+ final ArrayList<?> key = CollectionLiterals.newArrayList();
+ final LinuxRealisiticSyntheticTranslationUnit _result;
+ synchronized (_createCache_transform) {
+ if (_createCache_transform.containsKey(key)) {
+ return _createCache_transform.get(key);
+ }
+ ConfigModel _instance = this.customObjsStore.<ConfigModel>getInstance(ConfigModel.class);
+ LinuxRealisiticSyntheticTranslationUnit _linuxRealisiticSyntheticTranslationUnit = new LinuxRealisiticSyntheticTranslationUnit(
+ this.outputBuffer, _instance);
+ _result = _linuxRealisiticSyntheticTranslationUnit;
+ _createCache_transform.put(key, _result);
+ }
+ _init_transform(_result);
+ return _result;
+ }
+
+ private final HashMap<ArrayList<?>, LinuxRealisiticSyntheticTranslationUnit> _createCache_transform = CollectionLiterals
+ .newHashMap();
+
+ private void _init_transform(final LinuxRealisiticSyntheticTranslationUnit it) {
+ }
+
+}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxRunnableTransformer.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxRunnableTransformer.java
new file mode 100644
index 0000000..9d56cb5
--- /dev/null
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxRunnableTransformer.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020-2021 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ */
+
+package org.eclipse.app4mc.slg.linux.transformers.sw;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Properties;
+
+import org.eclipse.app4mc.slg.linux.generators.LinuxRunnableTranslationUnit;
+import org.eclipse.app4mc.slg.linux.transformers.LinuxBaseTransformer;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class LinuxRunnableTransformer extends LinuxBaseTransformer {
+
+ @Inject private LinuxActivityGraphItemTransformer linuxCallGraphItemTransformer;
+ @Inject private OutputBuffer outputBuffer;
+ @Inject private Properties properties;
+
+ public LinuxRunnableTranslationUnit transform(final org.eclipse.app4mc.amalthea.model.Runnable runnable) {
+ final ArrayList<?> key = CollectionLiterals.newArrayList(runnable);
+ final LinuxRunnableTranslationUnit _result;
+ synchronized (_createCache_transform) {
+ if (_createCache_transform.containsKey(key)) {
+ return _createCache_transform.get(key);
+ }
+ LinuxRunnableTranslationUnit _linuxRunnableTranslationUnit = new LinuxRunnableTranslationUnit(
+ this.outputBuffer, this.linuxCallGraphItemTransformer, runnable, this.properties);
+ _result = _linuxRunnableTranslationUnit;
+ _createCache_transform.put(key, _result);
+ }
+ _init_transform(_result, runnable);
+ return _result;
+ }
+
+ private final HashMap<ArrayList<?>, LinuxRunnableTranslationUnit> _createCache_transform = CollectionLiterals
+ .newHashMap();
+
+ private void _init_transform(final LinuxRunnableTranslationUnit it,
+ final org.eclipse.app4mc.amalthea.model.Runnable runnable) {
+ }
+
+}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxTaskTransformer.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxTaskTransformer.java
new file mode 100644
index 0000000..809f633
--- /dev/null
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxTaskTransformer.java
@@ -0,0 +1,54 @@
+/**
+ * Copyright (c) 2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ */
+
+package org.eclipse.app4mc.slg.linux.transformers.sw;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import org.eclipse.app4mc.amalthea.model.Task;
+import org.eclipse.app4mc.slg.linux.generators.LinuxTaskTranslationUnit;
+import org.eclipse.app4mc.slg.linux.transformers.LinuxBaseTransformer;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class LinuxTaskTransformer extends LinuxBaseTransformer {
+
+ @Inject private OutputBuffer outputBuffer;
+
+ public LinuxTaskTranslationUnit transform(final Task task) {
+ final ArrayList<?> key = CollectionLiterals.newArrayList(task);
+ final LinuxTaskTranslationUnit _result;
+ synchronized (_createCache_transform) {
+ if (_createCache_transform.containsKey(key)) {
+ return _createCache_transform.get(key);
+ }
+ LinuxTaskTranslationUnit _linuxTaskTranslationUnit = new LinuxTaskTranslationUnit(this.outputBuffer, task);
+ _result = _linuxTaskTranslationUnit;
+ _createCache_transform.put(key, _result);
+ }
+ _init_transform(_result, task);
+ return _result;
+ }
+
+ private final HashMap<ArrayList<?>, LinuxTaskTranslationUnit> _createCache_transform = CollectionLiterals
+ .newHashMap();
+
+ private void _init_transform(final LinuxTaskTranslationUnit it, final Task task) {
+ }
+
+}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxTicksTransformer.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxTicksTransformer.java
index 70a869c..701ed09 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxTicksTransformer.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxTicksTransformer.java
@@ -17,7 +17,6 @@
import org.eclipse.app4mc.slg.commons.m2t.AbstractSLGTransformer;
import org.eclipse.app4mc.slg.linux.generators.LinuxTicksGenerator;
import org.eclipse.app4mc.slg.linux.generators.LinuxTicksUtilsTranslationUnit;
-import org.eclipse.app4mc.slg.linux.transformers.LinuxTicksUtilsTransformer;
import org.eclipse.app4mc.slg.linux.transformers.LinuxTranslationUnit;
import com.google.inject.Inject;
@@ -30,7 +29,7 @@
public LinuxTranslationUnit transform(final Ticks ticks) {
if ((ticks.getDefault() != null)) {
- final LinuxTicksUtilsTranslationUnit ticksUtilsTU = ticksUtilsTransformer.generate(ticks.getDefault());
+ final LinuxTicksUtilsTranslationUnit ticksUtilsTU = ticksUtilsTransformer.transform(ticks.getDefault());
return createTranslationUnit(ticks, ticksUtilsTU);
}
@@ -45,11 +44,11 @@
String basePath = ticksUtilsTU.getBasePath();
String moduleName = ticksUtilsTU.getModuleName();
- String call = computeCall(ticks, ticksUtilsTU);
+ String call = computeCall(ticks);
return new LinuxTranslationUnit(basePath, moduleName, call);
}
- private String computeCall(Ticks ticks, LinuxTicksUtilsTranslationUnit ticksUtilsTU) {
+ private String computeCall(Ticks ticks) {
String parameters = LinuxTicksGenerator.getParameters(ticks.getDefault());
return "burnTicks(" + parameters + ")";
}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxTicksUtilsTransformer.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxTicksUtilsTransformer.java
new file mode 100644
index 0000000..4b030cc
--- /dev/null
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxTicksUtilsTransformer.java
@@ -0,0 +1,62 @@
+/**
+ * Copyright (c) 2020 Robert Bosch GmbH.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ */
+
+package org.eclipse.app4mc.slg.linux.transformers.sw;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import org.eclipse.app4mc.amalthea.model.IDiscreteValueDeviation;
+import org.eclipse.app4mc.slg.commons.m2t.CustomObjectsStore;
+import org.eclipse.app4mc.slg.config.ConfigModel;
+import org.eclipse.app4mc.slg.linux.generators.LinuxTicksUtilsTranslationUnit;
+import org.eclipse.app4mc.slg.linux.transformers.LinuxBaseTransformer;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class LinuxTicksUtilsTransformer extends LinuxBaseTransformer {
+
+ @Inject private OutputBuffer outputBuffer;
+ @Inject private CustomObjectsStore customObjsStore;
+
+ public LinuxTicksUtilsTranslationUnit transform(final IDiscreteValueDeviation value) {
+ return this.generateIntern(value.getClass());
+ }
+
+ public LinuxTicksUtilsTranslationUnit generateIntern(final Object valueClass) {
+ final ArrayList<?> key = CollectionLiterals.newArrayList(valueClass);
+ final LinuxTicksUtilsTranslationUnit _result;
+ synchronized (_createCache_generateIntern) {
+ if (_createCache_generateIntern.containsKey(key)) {
+ return _createCache_generateIntern.get(key);
+ }
+ ConfigModel _instance = this.customObjsStore.<ConfigModel>getInstance(ConfigModel.class);
+ LinuxTicksUtilsTranslationUnit tu = new LinuxTicksUtilsTranslationUnit(
+ this.outputBuffer, _instance, valueClass);
+ _result = tu;
+ _createCache_generateIntern.put(key, _result);
+ }
+ _init_generateIntern(_result, valueClass);
+ return _result;
+ }
+
+ private final HashMap<ArrayList<?>, LinuxTicksUtilsTranslationUnit> _createCache_generateIntern = CollectionLiterals
+ .newHashMap();
+
+ private void _init_generateIntern(final LinuxTicksUtilsTranslationUnit it, final Object valueClass) {
+ }
+}