From e34d73a3bcd32116e6cf8a82cb9d2fc688fe8a53 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=BCrgen=20Walter?= <juergen.walter@uni-wuerzburg.de>
Date: Thu, 16 Feb 2017 16:48:36 +0100
Subject: [PATCH] propagate number of cores to host creation

---
 .../pmx/filter/PerformanceModelFilter.java    | 18 +++++++++----
 .../PerformanceModelFilterAppender.java       |  1 +
 .../filter/util/PerformanceModelCreator.java  | 27 ++++++++++---------
 3 files changed, 28 insertions(+), 18 deletions(-)

diff --git a/tools.descartes.pmx/src/tools/descartes/pmx/filter/PerformanceModelFilter.java b/tools.descartes.pmx/src/tools/descartes/pmx/filter/PerformanceModelFilter.java
index c2c5c303..a01a7066 100644
--- a/tools.descartes.pmx/src/tools/descartes/pmx/filter/PerformanceModelFilter.java
+++ b/tools.descartes.pmx/src/tools/descartes/pmx/filter/PerformanceModelFilter.java
@@ -81,6 +81,8 @@ public class PerformanceModelFilter extends AbstractFilterPlugin{ 	//extends Abs
 	private HashMap<String, List<Double>> workload; // = new HashMap<String, Vector<Double>>();
 	private IProjectContext localProjectContextRef;
 	private SystemModelRepository systemEntityFactory;
+	private HashMap<String, Integer> numCores = new HashMap<String, Integer>();
+
 
 //	/**
 //	 * Creates a new instance of this class using the given parameters.
@@ -186,7 +188,7 @@ public class PerformanceModelFilter extends AbstractFilterPlugin{ 	//extends Abs
 		
 		if (!error) {
 			buildPerformanceModel(operationGraph, resourceDemands, workload,
-					this.getSystemEntityFactory(), builder);
+					this.getSystemEntityFactory(), numCores, builder);
 			//super.terminate(errorBeforeTermination);
 
 			//log.info("writing results to files... |||||||||||||||||||||||||||||||||||||||||||||||||");
@@ -210,6 +212,10 @@ public class PerformanceModelFilter extends AbstractFilterPlugin{ 	//extends Abs
 		return this.systemEntityFactory;
 	}
 
+	public void addCPUCoreNumbers(HashMap<String, Integer> numCores) {
+		this.numCores = numCores;
+	}
+
 	/**
 	 * Creates a performance model using a builder + preprocessed monitoring
 	 * input
@@ -224,10 +230,10 @@ public class PerformanceModelFilter extends AbstractFilterPlugin{ 	//extends Abs
 			AbstractGraph<DependencyGraphNode<AllocationComponentOperationPair>, WeightedBidirectionalDependencyGraphEdge<AllocationComponentOperationPair>, TraceInformation> operationGraph,
 			HashMap<String, Double> resourceDemands,
 			HashMap<String, List<Double>> workload,
-			SystemModelRepository systemModelRepository, IModelBuilder builder) {
+			SystemModelRepository systemModelRepository, HashMap<String, Integer> numCores, IModelBuilder builder) {
 
 		PerformanceModelCreator.createExecutionContainers(
-				systemModelRepository, builder);
+				systemModelRepository, builder, numCores);
 		PerformanceModelCreator.createComponentsAndInterfaces(
 				systemModelRepository, builder);
 
@@ -238,6 +244,8 @@ public class PerformanceModelFilter extends AbstractFilterPlugin{ 	//extends Abs
 			String componentName = ModelBuilder.applyComponentNameFix(component.getType().getTypeName());
 			String hostName = node.getEntity().getAllocationComponent()
 					.getExecutionContainer().getName();
+			// Teerat Pitakrat: TODO add allocation information to assembly
+
 			if (componentName.equals("'Entry'")) {
 				continue; // System entry node
 			}
@@ -301,9 +309,9 @@ public class PerformanceModelFilter extends AbstractFilterPlugin{ 	//extends Abs
 			//log.info(names);
 			builder.addUsageScenario(workload);
 		}
-
 	}
 
+
 	private static void helpMehtod(
 			IModelBuilder builder,
 			String componentName,
@@ -346,7 +354,7 @@ public class PerformanceModelFilter extends AbstractFilterPlugin{ 	//extends Abs
 				+ targetHostName, targetComponentName);
 
 		// if(targetComponentName != componentName){
-			builder.addConnectionToAssemblies(componentName + ModelBuilder.seperatorChar + hostName,
+		builder.addConnectionToAssemblies(componentName + ModelBuilder.seperatorChar + hostName,
 				targetComponentName + ModelBuilder.seperatorChar + targetHostName);
 		// }
 	}
diff --git a/tools.descartes.pmx/src/tools/descartes/pmx/filter/PerformanceModelFilterAppender.java b/tools.descartes.pmx/src/tools/descartes/pmx/filter/PerformanceModelFilterAppender.java
index 5ea82b3c..7d566589 100644
--- a/tools.descartes.pmx/src/tools/descartes/pmx/filter/PerformanceModelFilterAppender.java
+++ b/tools.descartes.pmx/src/tools/descartes/pmx/filter/PerformanceModelFilterAppender.java
@@ -231,6 +231,7 @@ public class PerformanceModelFilterAppender {
 				resultPath);
 		PerformanceModelFilter performanceModelFilter = new PerformanceModelFilter(performanceModelFilterConfiguration,
 				analysisController);
+		performanceModelFilter.addCPUCoreNumbers(numCores);
 
 		// workload filter
 		WorkloadFilter workloadFilter = new WorkloadFilter(new Configuration(), analysisController);
diff --git a/tools.descartes.pmx/src/tools/descartes/pmx/filter/util/PerformanceModelCreator.java b/tools.descartes.pmx/src/tools/descartes/pmx/filter/util/PerformanceModelCreator.java
index 9ff89f26..a62abe25 100644
--- a/tools.descartes.pmx/src/tools/descartes/pmx/filter/util/PerformanceModelCreator.java
+++ b/tools.descartes.pmx/src/tools/descartes/pmx/filter/util/PerformanceModelCreator.java
@@ -27,8 +27,7 @@
 package tools.descartes.pmx.filter.util;
 
 import java.util.Collection;
-
-import org.apache.log4j.Logger;
+import java.util.HashMap;
 
 import kieker.common.util.signature.Signature;
 import kieker.tools.traceAnalysis.systemModel.AllocationComponent;
@@ -40,16 +39,17 @@ import kieker.tools.traceAnalysis.systemModel.repository.SystemModelRepository;
 import tools.descartes.pmx.builder.IModelBuilder;
 
 public class PerformanceModelCreator {
-	private static final Logger log = Logger
-			.getLogger(PerformanceModelCreator.class);
+	// private static final Logger log = Logger
+	// .getLogger(PerformanceModelCreator.class);
 	
-	public static void createPerformanceModel(SystemModelRepository systemModel, IModelBuilder builder) {
-		createExecutionContainers(systemModel, builder);
-		createAssemblies(systemModel, builder);
-		createComponentsAndInterfaces(systemModel, builder);
-		addComponentsToAssemblies(systemModel, builder);
-		createAllocations(systemModel, builder);
-	}
+	// public static void createPerformanceModel(SystemModelRepository
+	// systemModel, IModelBuilder builder) {
+	// createExecutionContainers(systemModel, builder);
+	// createAssemblies(systemModel, builder);
+	// createComponentsAndInterfaces(systemModel, builder);
+	// addComponentsToAssemblies(systemModel, builder);
+	// createAllocations(systemModel, builder);
+	// }
 	
 	public static void addComponentsToAssemblies(
 			SystemModelRepository systemModel, IModelBuilder builder) {
@@ -95,11 +95,12 @@ public class PerformanceModelCreator {
 		}
 	}
 	
-	public static void createExecutionContainers(SystemModelRepository systemModel, IModelBuilder builder) {
+	public static void createExecutionContainers(SystemModelRepository systemModel, IModelBuilder builder,
+			HashMap<String, Integer> numCores) {
 		final Collection<ExecutionContainer> executionContainers = systemModel
 				.getExecutionEnvironmentFactory().getExecutionContainers();
 		for (ExecutionContainer container : executionContainers) {
-			builder.addHost(container.getName());
+			builder.addHost(container.getName(), numCores.get(container.getName()));
 		}
 	}
 
-- 
GitLab