updated slg linux code to support LocalModeCondition
diff --git a/load_generator/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/RunnableTransformer.java b/load_generator/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/RunnableTransformer.java
index dfb4eb1..a52ff89 100644
--- a/load_generator/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/RunnableTransformer.java
+++ b/load_generator/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/RunnableTransformer.java
@@ -154,9 +154,9 @@
 	}
 	
 	public boolean processCustomProperties(boolean extOverwrite, final List<String> calls,
-			final List<String> callsOverwrite, final ActivityGraph activityGraph) {
+			final List<String> callsOverwrite, final EObject parentOfActivityGraphItem) {
 
-		for (EObject item : activityGraph.eContents()) {
+		for (EObject item : parentOfActivityGraphItem.eContents()) {
 
 			if (item instanceof CustomPropertyImpl) // custom property:
 			{
diff --git a/load_generator/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/customization/CustomRunnableTransformer.java b/load_generator/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/customization/CustomRunnableTransformer.java
index 7de1295..d34d2de 100644
--- a/load_generator/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/customization/CustomRunnableTransformer.java
+++ b/load_generator/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/customization/CustomRunnableTransformer.java
@@ -19,6 +19,7 @@
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
@@ -26,14 +27,26 @@
 import java.util.Properties;
 
 import org.eclipse.app4mc.amalthea.model.ActivityGraphItem;
+import org.eclipse.app4mc.amalthea.model.ConditionDisjunction;
+import org.eclipse.app4mc.amalthea.model.ConditionDisjunctionEntry;
+import org.eclipse.app4mc.amalthea.model.ILocalModeValueSource;
 import org.eclipse.app4mc.amalthea.model.InterProcessTrigger;
+import org.eclipse.app4mc.amalthea.model.LocalModeCondition;
+import org.eclipse.app4mc.amalthea.model.LocalModeLabel;
+import org.eclipse.app4mc.amalthea.model.ModeLiteral;
+import org.eclipse.app4mc.amalthea.model.ModeLiteralConst;
 import org.eclipse.app4mc.amalthea.model.Process;
 import org.eclipse.app4mc.amalthea.model.Runnable;
+import org.eclipse.app4mc.amalthea.model.Switch;
+import org.eclipse.app4mc.amalthea.model.SwitchEntry;
 import org.eclipse.app4mc.amalthea.model.Ticks;
 import org.eclipse.app4mc.slg.commons.m2t.CustomObjectsStore;
 import org.eclipse.app4mc.slg.commons.m2t.transformers.SLGTranslationUnit;
 import org.eclipse.app4mc.slg.commons.m2t.transformers.sw.ActivityGraphItemTransformer;
 import org.eclipse.app4mc.slg.commons.m2t.transformers.sw.RunnableTransformer;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EObject;
 
 import com.google.inject.Inject;
@@ -105,95 +118,62 @@
 
 	@Override
 	protected void genFiles(final SLGTranslationUnit tu, final Runnable runnable) {
-		boolean extOverwrite = false; // enabling codehook overwriting
+		boolean extOverwriteAtActivityGraph = false; // enabling codehook overwriting
 		if (isSrcFileEmpty(tu)) {
 			srcAppend(tu, "#include \"" + getIncFile(tu) + "\"\n");
 			srcAppend(tu, "#include \"ticksUtils.h\"\n");
 		}
+		
+		customObjsStore.indexData(tu.getCall(), runnable);
 
 		final HashSet<String> includes = new LinkedHashSet<>();
 		final List<String> calls = new ArrayList<>();
 		final List<String> callsOverwrite = new ArrayList<>(); //overwrite codehook fct
+		
+		final Map<SwitchEntry,List<String>> switchBasedCalls = new LinkedHashMap<SwitchEntry, List<String>>();
+		
+		final Map<SwitchEntry,List<String>> switchBasedCallsOverwrite = new   LinkedHashMap<SwitchEntry, List<String>>(); //overwrite codehook fct
+		
+		final List<SwitchEntry> switchEntries=new ArrayList<SwitchEntry>();
+
+		
+		final Map<SwitchEntry, Boolean> switchEntryOverwriteActivityGraph=new LinkedHashMap<SwitchEntry, Boolean>();
+		
+		
 		final List<Process> processedTasks = new ArrayList<>();
 
+		final List<ActivityGraphItem> defaultActivityGraphItems=new ArrayList<ActivityGraphItem>();
+		
 		if (runnable != null && runnable.getActivityGraph() != null) {
-
-			extOverwrite = processCustomProperties(extOverwrite, calls, callsOverwrite, runnable.getActivityGraph());
-
-			// ************ Looping through all the elements inside ActivityGraph object
-			for (final EObject item : runnable.getActivityGraph().eContents()) {
-
-				if (item instanceof Ticks) {
-					Ticks ticks = (Ticks) item;
-					final Map<String, SLGTranslationUnit> translationUnits = activityGraphItemTransformer
-							.transformAllItems(ticks); // Mc: move method to TicksTransformer ?
-
-					SLGTranslationUnit defaultTicksTU = null;
-					boolean ticksAssociatedToPUs = false;
-
-					for (final Entry<String, SLGTranslationUnit> entry : translationUnits.entrySet()) {
-						String puName = entry.getKey();
-						SLGTranslationUnit tmpTU = entry.getValue();
-
-						if (puName.equals("default")) {
-							defaultTicksTU = tmpTU;
-						} else {
-							final String tmpIncFile = getIncFile(tmpTU);
-							if (tmpIncFile != null && !tmpIncFile.isEmpty() && !getIncFile(tu).equals(tmpIncFile)) {
-								includes.add(tmpIncFile);
-							}
-							final String call = tmpTU.getCall();
-							if (call != null && !call.isEmpty()) {
-								calls.add(ticksAssociatedToPUs ? "else if(strcmp(coreName,\"" + puName + "\")==0){"
-										: " if(strcmp(coreName,\"" + puName + "\")==0){");
-								calls.add(call);
-								calls.add("}");
-								ticksAssociatedToPUs = true;
-							}
-						}
-					}
-
-					if ((defaultTicksTU != null)) {
-						if (ticksAssociatedToPUs) {
-							calls.add("else ");
-							calls.add("{");
-						}
-
-						if (defaultTicksTU.getCall() != null && !defaultTicksTU.getCall().isEmpty()) {
-							calls.add(defaultTicksTU.getCall());
-						}
-
-						if (ticksAssociatedToPUs) {
-							calls.add("}");
-						}
-
-					}
-				} else if (item instanceof ActivityGraphItem) {
-					if ((item instanceof InterProcessTrigger)) {
-						InterProcessTrigger trigger = (InterProcessTrigger) item;
-						// final ConfigModel configModel =
-						// customObjsStore.<ConfigModel>getInstance(ConfigModel.class);
-						final String value = CustomRunnableGenerator.handleInterProcessTrigger(trigger.getStimulus(),
-								processedTasks);
-						if (value != null && !value.trim().isEmpty()) {
-							calls.add(value);
-						}
-					} else {
-						final SLGTranslationUnit tmpTU = activityGraphItemTransformer
-								.transform((ActivityGraphItem) item);
-
-						final String tmpIncFile = getIncFile(tmpTU);
-						if (tmpIncFile != null && !tmpIncFile.isEmpty() && !getIncFile(tu).equals(tmpIncFile)) {
-							includes.add(tmpIncFile);
-						}
-						final String call = tmpTU.getCall();
-						if (call != null && !call.isEmpty()) {
-							calls.add(call);
-						}
-					}
+			
+			EList<ActivityGraphItem> activityGraphItems = runnable.getActivityGraph().getItems();
+			
+			for (ActivityGraphItem activityGraphItem : activityGraphItems) {
+				
+				if(activityGraphItem instanceof Switch) {
+					
+					for(SwitchEntry entry: ((Switch)activityGraphItem).getEntries()) {
+						switchBasedCalls.put(entry, new ArrayList<String>());
+						switchBasedCallsOverwrite.put(entry, new ArrayList<String>());
+						switchEntries.add(entry);
+					}  
+				}else {
+					defaultActivityGraphItems.add(activityGraphItem);
 				}
+				
 			}
 
+			extOverwriteAtActivityGraph = extracted(tu, new BasicEList<ActivityGraphItem>(defaultActivityGraphItems), extOverwriteAtActivityGraph, includes, calls, callsOverwrite, processedTasks);
+
+			for(SwitchEntry switchEntry: switchEntries) {
+				
+				Boolean extOverwriteActivityGraph_switch = extracted(tu, switchEntry.getItems(), extOverwriteAtActivityGraph, includes, switchBasedCalls.get(switchEntry), switchBasedCallsOverwrite.get(switchEntry), processedTasks);
+				
+				switchEntryOverwriteActivityGraph.put(switchEntry, extOverwriteActivityGraph_switch);
+			
+			}
+			
+			
 		}
 
 		String runnableName = runnable.getName();
@@ -206,7 +186,7 @@
 		
 		//------------------------  write body with overwrite codehook  function 
 		
-		if (extOverwrite) {
+		if (extOverwriteAtActivityGraph) {
 			String call_overwrite = "run_" + runnable.getName();
 
 			srcAppend(tu, "void " + call_overwrite + "(char* coreName){\n" + "\n");
@@ -215,15 +195,176 @@
 				srcAppend(tu, call + ";" + "\n");
 			}
 			srcAppend(tu, "\n" + "}" + "\n");
+			
+			if(runnable.getLocalLabels().size()>0) {
+				
+				//additional method for switch 
+				srcAppend(tu, "void " + call_overwrite+"_Context" + "(char* coreName,"+getParamNames(runnable.getLocalLabels())+" ){\n" + "\n");
+				
+				for(SwitchEntry switchEntry: switchEntries) {
+					
+					if(switchEntryOverwriteActivityGraph.get(switchEntry)) {
+						
+						srcAppend(tu,  getConditionString(switchEntry) + "\n");
+						
+						for (String call : switchBasedCallsOverwrite.get(switchEntry)) {
+							srcAppend(tu, call + ";" + "\n");
+						}
+						
+					}else {
+						for (String call : switchBasedCalls.get(switchEntry)) {
+							srcAppend(tu, call + ";" + "\n");
+						}
+					}
+					
+				}
+				srcAppend(tu, "\n" + "}" + "\n");
+			}
+			
 		}
 		// ------------------------
 
 		else {
-			toCpp(tu, calls); // write body without overwriting the codehook function
+			toCustomCpp(tu, calls,switchEntries,switchBasedCalls,runnable); // write body without overwriting the codehook function
 		}
 	}
 
 	
+	private String getConditionString(SwitchEntry switchEntry) {
+		
+		ConditionDisjunction condition = switchEntry.getCondition();
+		
+		if(condition !=null) {
+			
+			EList<ConditionDisjunctionEntry> entries = condition.getEntries();
+			
+			for (ConditionDisjunctionEntry conditionDisjunctionEntry : entries) {
+				
+				if(conditionDisjunctionEntry instanceof LocalModeCondition) {
+					LocalModeLabel localLabel = ((LocalModeCondition) conditionDisjunctionEntry).getLabel();
+					
+					if(localLabel !=null) {
+						
+						String localVariableName = localLabel.getName();
+						
+						
+						ILocalModeValueSource valueSource = ((LocalModeCondition) conditionDisjunctionEntry).getValueSource();
+						
+						if(valueSource !=null && valueSource instanceof ModeLiteralConst) {
+							ModeLiteral value = ((ModeLiteralConst)valueSource).getValue();
+							
+							String caseName= value.getName();
+							
+							return "strcmp("+localVariableName+",\""+caseName+"\")==0";
+						}
+					}
+				}
+			}
+		}
+		
+		
+		
+		return "false";
+	}
+	
+	private String getParamNames(EList<LocalModeLabel> localLabels) {
+
+		List<String> ls=new ArrayList<String>();
+		
+		for (LocalModeLabel localModeLabel : localLabels) {
+			ls.add("char* "+localModeLabel.getName());
+		}
+		
+		return String.join(",", ls);
+	}
+
+	private boolean extracted(final SLGTranslationUnit tu, final EList<ActivityGraphItem> activityGraphItems, boolean extOverwrite,
+			final HashSet<String> includes, final List<String> calls, final List<String> callsOverwrite,
+			final List<Process> processedTasks) {
+		
+		if(activityGraphItems.size()==0) {
+			return false;
+		}
+		
+		extOverwrite = processCustomProperties(extOverwrite, calls, callsOverwrite,activityGraphItems.get(0).eContainer());
+
+		// ************ Looping through all the elements inside ActivityGraph object
+		for (final EObject item : activityGraphItems) {
+
+			if (item instanceof Ticks) {
+				Ticks ticks = (Ticks) item;
+				final Map<String, SLGTranslationUnit> translationUnits = activityGraphItemTransformer
+						.transformAllItems(ticks); // Mc: move method to TicksTransformer ?
+
+				SLGTranslationUnit defaultTicksTU = null;
+				boolean ticksAssociatedToPUs = false;
+
+				for (final Entry<String, SLGTranslationUnit> entry : translationUnits.entrySet()) {
+					String puName = entry.getKey();
+					SLGTranslationUnit tmpTU = entry.getValue();
+
+					if (puName.equals("default")) {
+						defaultTicksTU = tmpTU;
+					} else {
+						final String tmpIncFile = getIncFile(tmpTU);
+						if (tmpIncFile != null && !tmpIncFile.isEmpty() && !getIncFile(tu).equals(tmpIncFile)) {
+							includes.add(tmpIncFile);
+						}
+						final String call = tmpTU.getCall();
+						if (call != null && !call.isEmpty()) {
+							calls.add(ticksAssociatedToPUs ? "else if(strcmp(coreName,\"" + puName + "\")==0){"
+									: " if(strcmp(coreName,\"" + puName + "\")==0){");
+							calls.add(call);
+							calls.add("}");
+							ticksAssociatedToPUs = true;
+						}
+					}
+				}
+
+				if ((defaultTicksTU != null)) {
+					if (ticksAssociatedToPUs) {
+						calls.add("else ");
+						calls.add("{");
+					}
+
+					if (defaultTicksTU.getCall() != null && !defaultTicksTU.getCall().isEmpty()) {
+						calls.add(defaultTicksTU.getCall());
+					}
+
+					if (ticksAssociatedToPUs) {
+						calls.add("}");
+					}
+
+				}
+			} else if (item instanceof ActivityGraphItem) {
+				if ((item instanceof InterProcessTrigger)) {
+					InterProcessTrigger trigger = (InterProcessTrigger) item;
+					// final ConfigModel configModel =
+					// customObjsStore.<ConfigModel>getInstance(ConfigModel.class);
+					final String value = CustomRunnableGenerator.handleInterProcessTrigger(trigger.getStimulus(),
+							processedTasks);
+					if (value != null && !value.trim().isEmpty()) {
+						calls.add(value);
+					}
+				} else {
+					final SLGTranslationUnit tmpTU = activityGraphItemTransformer
+							.transform((ActivityGraphItem) item);
+
+					final String tmpIncFile = getIncFile(tmpTU);
+					if (tmpIncFile != null && !tmpIncFile.isEmpty() && !getIncFile(tu).equals(tmpIncFile)) {
+						includes.add(tmpIncFile);
+					}
+					final String call = tmpTU.getCall();
+					if (call != null && !call.isEmpty()) {
+						calls.add(call);
+					}
+				}
+			}
+		}
+		return extOverwrite;
+	}
+
+	
 
 
 	@Override
@@ -238,6 +379,57 @@
 
 		srcAppend(tu, "}\n\n");
 		
+ 
+		
+		
+	}
+	
+	protected void toCustomCpp(final SLGTranslationUnit tu, final List<String> calls, List<SwitchEntry> switchEntries, Map<SwitchEntry, List<String>> switchBasedCalls, Runnable runnable) {  
+		
+		
+		srcAppend(tu, "void " + tu.getCall() + "(char* coreName){\n");
+		
+		for (String call : calls) {
+			srcAppend(tu, "\t" + call + (call.endsWith(")") ? ";" : "") + "\n");			
+		}
+
+		srcAppend(tu, "}\n\n");
+		
+		if(runnable.getLocalLabels().size()>0) {
+			
+			//additional method for switch 
+			srcAppend(tu, "void " + tu.getCall()+"_Context"  + "(char* coreName,"+getParamNames(runnable.getLocalLabels())+" ){\n" + "\n");
+			
+			for(SwitchEntry switchEntry: switchEntries) {
+				
+				{
+					srcAppend(tu,  "if("+getConditionString(switchEntry)+"){" + "\n");
+					
+					for (String call : switchBasedCalls.get(switchEntry)) {
+						srcAppend(tu, call + ";" + "\n");
+					}
+					srcAppend(tu, "\n" + "}" + "\n");
+				}
+				
+			}
+			srcAppend(tu, "\n" + "}" + "\n");
+		}
+		
+		
+		
 	}
 
+	
+	@Override
+	protected void toH(SLGTranslationUnit tu, String runnableName, HashSet<String> includes) {
+		// TODO Auto-generated method stub
+		super.toH(tu, runnableName, includes);
+		
+		Object data = customObjsStore.getData(tu.getCall());
+		EList<LocalModeLabel> localLabels = ((Runnable)data).getLocalLabels();
+		if(localLabels.size()>0)
+		incAppend(tu, "void " + tu.getCall()+"_Context" + "(char* coreName"+","+getParamNames(localLabels)+" );\n");
+		
+		
+	}
 }
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 c439a20..039cf1e 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
@@ -153,55 +153,8 @@
 		incAppend(tu, "\n//Runnable " + runnable.getName() + "----\n");
 		incAppend(tu, "void " + "run_"+runnable.getName() + "(char* coreName);\n");
 
-		Calculation calc = new Calculation();
-		calc.ticksSumMap.put(DEFAULT, Integer.valueOf(0));
 
-		if (runnable != null && runnable.getActivityGraph() != null) {
-			for (ActivityGraphItem item : runnable.getActivityGraph().getItems()) {
-				if (item instanceof Ticks) {
-					Ticks ticks = (Ticks) item;
-					if (ticks.getDefault() != null && ticks.getDefault().getAverage() != null) {
-						calc.ticksSumMap.put(DEFAULT, calc.ticksSumMap.get(DEFAULT)+ticks.getDefault().getAverage().intValue());
-					}
 
-					Set<ProcessingUnitDefinition> puDefinitions = ticks.getExtended().keySet();
-					for (ProcessingUnitDefinition puDef : puDefinitions) {
-						if (puDef != null) {
-							String puDefName = puDef.getName();
-							if (!calc.ticksSumMap.containsKey(puDefName)) {
-								calc.ticksSumMap.put(puDefName, 0);
-							}
-							calc.ticksSumMap.put(puDefName, calc.ticksSumMap.get(puDefName)
-									+ ticks.getExtended().get(puDef).getAverage().intValue());
-						}
-					}
-				} else if (item instanceof LabelAccess) {
-					LabelAccess la = (LabelAccess) item;
-					Float value = Float
-							.parseFloat(properties.getOrDefault("labelAccessStatisticValueDefault", "1.0F").toString());
-
-					LabelAccessStatistic labelStatistic = la.getStatistic();
-					if (labelStatistic != null) {
-						NumericStatistic labelStatisticValue = labelStatistic.getValue();
-
-						if (labelStatisticValue instanceof SingleValueStatistic) {
-							value = ((SingleValueStatistic) labelStatisticValue).getValue();
-						} else if (labelStatisticValue instanceof MinAvgMaxStatistic) {
-							// TODO: provide a configuration option, to select appropriate value
-							// from labelStatistic (min/max/avg)
-							// right now considering the average value
-							value = ((MinAvgMaxStatistic) labelStatisticValue).getAvg();
-						}
-					}
-
-					if (la.getAccess() == LabelAccessEnum.READ) {
-						calc.readsSum += value.intValue();
-					} else if (la.getAccess() == LabelAccessEnum.WRITE) {
-						calc.writesSum += value.intValue();
-					}
-				}
-			}
-		}
 
 		boolean useExperimental = Boolean.parseBoolean(properties.getProperty("experimentalCodeSnippetMatching"));
 		boolean enableExtCode = Boolean.parseBoolean(properties.getProperty("enableExternalCode"));
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 a7c9ead..94a85a0 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
@@ -26,8 +26,11 @@
 import org.eclipse.app4mc.amalthea.model.Amalthea;
 import org.eclipse.app4mc.amalthea.model.AmaltheaServices;
 import org.eclipse.app4mc.amalthea.model.Group;
+import org.eclipse.app4mc.amalthea.model.ILocalModeValueSource;
 import org.eclipse.app4mc.amalthea.model.InterProcessStimulus;
 import org.eclipse.app4mc.amalthea.model.InterProcessTrigger;
+import org.eclipse.app4mc.amalthea.model.LocalModeLabelAssignment;
+import org.eclipse.app4mc.amalthea.model.ModeLiteralConst;
 import org.eclipse.app4mc.amalthea.model.Process;
 import org.eclipse.app4mc.amalthea.model.ProcessingUnit;
 import org.eclipse.app4mc.amalthea.model.ProcessingUnitDefinition;
@@ -47,6 +50,7 @@
 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;
@@ -181,12 +185,43 @@
 					final Runnable runnable = ((RunnableCall) item).getRunnable();
 					if ((runnable != null)) {
 
+						List<String> contextParameters=new ArrayList<String>();
+						
+						EList<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 (enableInstrumentation_R) {
 							statements.add("instr_start();");
-							statements.add("run_" + runnable.getName() + "(\"" + puDefinition.toString() + "\");");
+							if(contextParameters.size()>0) {
+								
+								statements.add("run_" + runnable.getName()+"_Context" + "(\"" + puDefinition.toString() + "\","+String.join(",", contextParameters)+");");
+							}else {
+								statements.add("run_" + runnable.getName() + "(\"" + puDefinition.toString() + "\");");
+								
+							}
 							statements.add("instr_stop();");
 						} else {
-							statements.add("run_" + runnable.getName() + "(\"" + puDefinition.toString() + "\");");
+
+							if(contextParameters.size()>0) {
+
+								statements.add("run_" + runnable.getName()+"_Context" + "(\"" + puDefinition.toString() + "\","+String.join(",", contextParameters)+");");
+							}else {
+								statements.add("run_" + runnable.getName() + "(\"" + puDefinition.toString() + "\");");
+
+							}
+
 						}
 					}
 				} else if (item instanceof InterProcessTrigger) {
diff --git a/load_generator/releng/org.eclipse.app4mc.slg.linux.product/input/req/ModeLabelConditons.amxmi b/load_generator/releng/org.eclipse.app4mc.slg.linux.product/input/req/ModeLabelConditons.amxmi
index 7dc06da..4d24c59 100644
--- a/load_generator/releng/org.eclipse.app4mc.slg.linux.product/input/req/ModeLabelConditons.amxmi
+++ b/load_generator/releng/org.eclipse.app4mc.slg.linux.product/input/req/ModeLabelConditons.amxmi
@@ -15,7 +15,9 @@
       <activityGraph>
         <items xsi:type="am:Switch">
           <entries name="CPU">
-            <items xsi:type="am:Ticks"/>
+            <items xsi:type="am:Ticks">
+              <default xsi:type="am:DiscreteValueConstant" value="100"/>
+            </items>
             <condition>
               <entries xsi:type="am:LocalModeCondition" label="RunnableA/localContextA?type=LocalModeLabel" relation="EQUAL">
                 <valueSource xsi:type="am:ModeLiteralConst" value="Variants/cpu?type=ModeLiteral"/>
@@ -23,7 +25,9 @@
             </condition>
           </entries>
           <entries name="CUDA">
-            <items xsi:type="am:Ticks"/>
+            <items xsi:type="am:Ticks">
+              <default xsi:type="am:DiscreteValueConstant" value="100"/>
+            </items>
             <condition>
               <entries xsi:type="am:LocalModeCondition" label="RunnableA/localContextA?type=LocalModeLabel" relation="EQUAL">
                 <valueSource xsi:type="am:ModeLiteralConst" value="Variants/cuda?type=ModeLiteral"/>
@@ -31,7 +35,9 @@
             </condition>
           </entries>
           <entries name="openMP">
-            <items xsi:type="am:Ticks"/>
+            <items xsi:type="am:Ticks">
+              <default xsi:type="am:DiscreteValueConstant" value="100"/>
+            </items>
             <condition>
               <entries xsi:type="am:LocalModeCondition" label="RunnableA/localContextA?type=LocalModeLabel" relation="EQUAL">
                 <valueSource xsi:type="am:ModeLiteralConst" value="Variants/openMP?type=ModeLiteral"/>