[SLG Linux] Minor changes
diff --git a/load_generator/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxModel2TextTransformer.java b/load_generator/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxModel2TextTransformer.java index 29acf3d..9158535 100644 --- a/load_generator/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxModel2TextTransformer.java +++ b/load_generator/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxModel2TextTransformer.java
@@ -1,6 +1,6 @@ /** ******************************************************************************** - * Copyright (c) 2020-2021 Robert Bosch GmbH. + * Copyright (c) 2020-2023 Robert Bosch GmbH. * * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 @@ -14,7 +14,8 @@ */ package org.eclipse.app4mc.slg.linux.transformers; -import com.google.inject.Inject; +import static org.eclipse.app4mc.slg.linux.transformers.LinuxBaseSettings.INC_TYPE; +import static org.eclipse.app4mc.slg.linux.transformers.LinuxBaseSettings.SRC_TYPE; import org.eclipse.app4mc.amalthea.model.Amalthea; import org.eclipse.app4mc.amalthea.model.Runnable; @@ -26,8 +27,6 @@ import org.eclipse.app4mc.slg.commons.m2t.transformers.AmaltheaModel2TextTransformer; import org.eclipse.app4mc.slg.commons.m2t.transformers.sw.InstrumentationTransformer; import org.eclipse.app4mc.slg.commons.m2t.transformers.sw.RunnableTransformer; -import static org.eclipse.app4mc.slg.linux.transformers.LinuxBaseSettings.INC_TYPE; -import static org.eclipse.app4mc.slg.linux.transformers.LinuxBaseSettings.SRC_TYPE; 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; @@ -37,19 +36,21 @@ import org.eclipse.app4mc.transformation.util.OutputBuffer; import org.eclipse.app4mc.util.sessionlog.SessionLogger; +import com.google.inject.Inject; + public class LinuxModel2TextTransformer extends AmaltheaModel2TextTransformer { @Inject private SessionLogger logger; - @Inject private OutputBuffer outputBuffer; - @Inject private LinuxMakeTransformer linuxMakeTransformer; - @Inject private LinuxRealisticCodeTransformer realisticCodeBasedOnCodeSnippet; - @Inject private LinuxStimulusTransformer stimuliTransformer; - @Inject private LinuxRunnableTransformer linuxRunnableTransformer; - @Inject private RunnableTransformer defaultRunnableTransformer; - @Inject private LinuxTaskTransformer taskTransformer; - @Inject private InstrumentationTransformer instrumentationTransformer; - @Inject private CustomObjectsStore customObjsStore; + @Inject private OutputBuffer outputBuffer; + @Inject private LinuxMakeTransformer linuxMakeTransformer; + @Inject private LinuxRealisticCodeTransformer realisticCodeBasedOnCodeSnippet; + @Inject private LinuxStimulusTransformer stimuliTransformer; + @Inject private LinuxRunnableTransformer linuxRunnableTransformer; + @Inject private RunnableTransformer defaultRunnableTransformer; + @Inject private LinuxTaskTransformer taskTransformer; + @Inject private InstrumentationTransformer instrumentationTransformer; + @Inject private CustomObjectsStore customObjsStore; @Override public void transform(final Amalthea model, final String outputFolder) { @@ -116,4 +117,5 @@ logger.info("Finished Linux SLG code generation"); } + }
diff --git a/load_generator/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxRunnableTransformer.java b/load_generator/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxRunnableTransformer.java index 308022c..4fb955c 100644 --- a/load_generator/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxRunnableTransformer.java +++ b/load_generator/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxRunnableTransformer.java
@@ -41,8 +41,8 @@ @Inject private SessionLogger logger; // ---------- generic part "def create new transform(...)" ---------- - - // ---------------------------------------------testing fetchig names + + // ---------------------------------------------testing fetching names /* final ConfigModel configModel = customObjsStore.<ConfigModel>getInstance(ConfigModel.class); @@ -57,10 +57,9 @@ } */ - // ------------------------------------------------testing fetchig names - + // ------------------------------------------------testing fetching names + private final Map<List<Object>, SLGTranslationUnit> transformCache = new HashMap<>(); - @Override @@ -107,25 +106,25 @@ private void genFiles(SLGTranslationUnit tu, final Runnable runnable) { final ConfigModel configModel = customObjsStore.<ConfigModel>getInstance(ConfigModel.class); - + if (isIncFileEmpty(tu)) { //----------------------------------/* fetch headers names*/-------------------------------------- // to fetch the headers names we use the getHeaderFilesDirectories function and we go through every directory with the for loop boolean enableExtCode = Boolean.parseBoolean(properties.getProperty("enableExternalCode")); - if(enableExtCode) { - // input property to test if we need to include the external code headerfiles - String workingDirectory=customObjsStore.getData(TransformationConstants.WORKING_DIRECTORY); - for (String hDir : ConfigModelUtils.getHeaderFilesDirectories(configModel,CodehookType.RUNNABLE,workingDirectory,logger)) - { - final File folder = new File(hDir.trim()); // fetching all the names in the headerfile directory. - String names = ConfigModelUtils.getHeaderFilesIncludeMultiString(folder,logger); - incAppend(tu,names); - } + if (enableExtCode) { + // input property to test if we need to include the external code headerfiles + String workingDirectory = customObjsStore.getData(TransformationConstants.WORKING_DIRECTORY); + for (String hDir : ConfigModelUtils.getHeaderFilesDirectories(configModel, CodehookType.RUNNABLE, + workingDirectory, logger)) { + final File folder = new File(hDir.trim()); // fetching all the names in the headerfile directory. + String names = ConfigModelUtils.getHeaderFilesIncludeMultiString(folder, logger); + incAppend(tu, names); + } } - //------------------------------------------------------------------------ - + // ------------------------------------------------------------------------ + incAppend(tu, LinuxRunnableGenerator.snippetIncStart()); }
diff --git a/load_generator/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxTaskTransformer.java b/load_generator/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxTaskTransformer.java index 94ada45..fb830bd 100644 --- a/load_generator/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxTaskTransformer.java +++ b/load_generator/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/sw/LinuxTaskTransformer.java
@@ -47,7 +47,6 @@ import org.eclipse.app4mc.slg.linux.transformers.LinuxBaseTransformer; import org.eclipse.app4mc.transformation.TransformationConstants; import org.eclipse.app4mc.util.sessionlog.SessionLogger; -import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EObject; import com.google.inject.Inject; @@ -56,6 +55,9 @@ @Singleton public class LinuxTaskTransformer extends LinuxBaseTransformer { + private static final String KEY_CODEHOOK = "codehook"; + private static final String KEY_CODEHOOK_OVERWRITE = "codehook_overwrite"; + @Inject private Properties properties; @Inject private CustomObjectsStore customObjsStore; @Inject private SessionLogger logger; @@ -108,8 +110,7 @@ private void genFiles(SLGTranslationUnit tu, final Task task) { - boolean enableInstrumentation_R = Boolean - .parseBoolean(properties.getProperty("enableInstrumentation_Runnables")); // runnable instrumentation + boolean enableInstrumentation = Boolean.parseBoolean(properties.getProperty("enableInstrumentation_Runnables")); // runnable instrumentation boolean enableExtCode = Boolean.parseBoolean(properties.getProperty("enableExternalCode")); boolean extOverwrite = false; // enabling codehook overwriting @@ -135,28 +136,24 @@ if (task != null && task.getActivityGraph() != null) { for (final EObject item : task.getActivityGraph().eContents()) { - if (item instanceof CustomPropertyImpl) // custom property: - { + if (item instanceof CustomPropertyImpl) { + CustomPropertyImpl customProp = (CustomPropertyImpl) item; + if (enableExtCode) { - if (((CustomPropertyImpl) item).getKey().equals("codehook")) { - Value value = ((CustomPropertyImpl) item).getValue(); - + if (customProp.getKey().equals(KEY_CODEHOOK)) { + Value value = customProp.getValue(); if (value instanceof StringObject) { - statements.add(((StringObject) value).getValue() + ";"); - } - } else if (((CustomPropertyImpl) item).getKey().equals("codehook_overwrite")) { + + } else if (customProp.getKey().equals(KEY_CODEHOOK_OVERWRITE)) { extOverwrite = true; - Value value1 = ((CustomPropertyImpl) item).getValue(); - + Value value1 = customProp.getValue(); if (value1 instanceof StringObject) { - statementsOverwrite.add(((StringObject) value1).getValue()); } } - } } @@ -165,61 +162,58 @@ if ((item2 instanceof RunnableCall)) { final Runnable runnable = ((RunnableCall) item2).getRunnable(); - if (enableInstrumentation_R) { + if (enableInstrumentation) { statements.add("instr_start();"); - statements.add("run_" + runnable.getName() + "(\"" + puDefinition.toString() + "\");"); + statements.add("run_" + runnable.getName() + "(\"" + puDefinition + "\");"); statements.add("instr_stop();"); } else { - statements.add("run_" + runnable.getName() + "(\"" + puDefinition.toString() + "\");"); + statements.add("run_" + runnable.getName() + "(\"" + puDefinition + "\");"); } } else if ((item2 instanceof InterProcessTrigger)) { InterProcessStimulus stimulus = ((InterProcessTrigger) item2).getStimulus(); LinuxTaskGenerator.handleInterProcessTrigger(statements, processedTasks, stimulus); } } + } else if (item instanceof RunnableCall) { final Runnable runnable = ((RunnableCall) item).getRunnable(); if ((runnable != null)) { - List<String> contextParameters=new ArrayList<String>(); - - EList<LocalModeLabelAssignment> context = ((RunnableCall)item).getContext(); - + List<String> contextParameters = new ArrayList<>(); + List<LocalModeLabelAssignment> context = ((RunnableCall) item).getContext(); + for (LocalModeLabelAssignment localModeLabelAssignment : context) { - + ILocalModeValueSource valueSource = localModeLabelAssignment.getValueSource(); - - if(valueSource !=null && valueSource instanceof ModeLiteralConst) { - - contextParameters.add("\""+((ModeLiteralConst)valueSource).getValue().getName()+"\""); + + if (valueSource instanceof ModeLiteralConst) { + contextParameters + .add("\"" + ((ModeLiteralConst) valueSource).getValue().getName() + "\""); } } - - - - if (enableInstrumentation_R) { + if (enableInstrumentation) { statements.add("instr_start();"); - if(contextParameters.size()>0) { - - statements.add("run_" + runnable.getName()+"_Context" + "(\"" + puDefinition.toString() + "\" , "+String.join(",", contextParameters)+");"); - }else { - statements.add("run_" + runnable.getName() + "(\"" + puDefinition.toString() + "\");"); - + if (!contextParameters.isEmpty()) { + statements.add("run_" + runnable.getName() + "_Context" + "(\"" + puDefinition + "\" , " + + String.join(",", contextParameters) + ");"); + } else { + statements.add("run_" + runnable.getName() + "(\"" + puDefinition + "\");"); } statements.add("instr_stop();"); + } else { - if(contextParameters.size()>0) { - - statements.add("run_" + runnable.getName()+"_Context" + "(\"" + puDefinition.toString() + "\" , "+String.join(",", contextParameters)+");"); - }else { - statements.add("run_" + runnable.getName() + "(\"" + puDefinition.toString() + "\");"); - + if (!contextParameters.isEmpty()) { + statements.add("run_" + runnable.getName() + "_Context" + "(\"" + puDefinition + "\" , " + + String.join(",", contextParameters) + ");"); + } else { + statements.add("run_" + runnable.getName() + "(\"" + puDefinition + "\");"); } } } + } else if (item instanceof InterProcessTrigger) { InterProcessStimulus stimulus = ((InterProcessTrigger) item).getStimulus(); LinuxTaskGenerator.handleInterProcessTrigger(statements, processedTasks, stimulus); @@ -236,11 +230,11 @@ if (enableExtCode) // input property to test if we need to include the external code headerfiles { - String workingDirectory=customObjsStore.getData(TransformationConstants.WORKING_DIRECTORY); - - for (String hDir : ConfigModelUtils.getHeaderFilesDirectories(configModel, CodehookType.TASK,workingDirectory,logger)) { + String workingDirectory = customObjsStore.getData(TransformationConstants.WORKING_DIRECTORY); + + for (String hDir : ConfigModelUtils.getHeaderFilesDirectories(configModel, CodehookType.TASK, workingDirectory, logger)) { final File folder = new File(hDir.trim()); // fetching all the names in the headerfile directory. - String names = ConfigModelUtils.getHeaderFilesIncludeMultiString(folder,logger); + String names = ConfigModelUtils.getHeaderFilesIncludeMultiString(folder, logger); incAppend(tu, names); } } @@ -250,7 +244,7 @@ } if (isSrcFileEmpty(tu)) { - srcAppend(tu, LinuxTaskGenerator.snippetSrcStart(enableInstrumentation_R)); + srcAppend(tu, LinuxTaskGenerator.snippetSrcStart(enableInstrumentation)); } // ------------------------ write body with overwrite codehook function