From 769ba23fa87e8ff9c275dd9e9bb4156f4372f349 Mon Sep 17 00:00:00 2001
From: Matthias <m.blohm@etermio.com>
Date: Wed, 21 Dec 2016 17:19:16 +0100
Subject: [PATCH] cache clearing added

---
 .../JPetStore/ListEntities.dql                |  2 +-
 .../JPetStore/SelectService.dql               |  2 +-
 .../helloWorld/helloWorld.properties          |  2 +-
 .../kieker/tests/CpuUtilizationTest.java      | 48 ++++++++++++++++++
 .../kieker/tests/ListEntitiesTest.java        | 29 +++++++++++
 .../kieker/tests/ResponseTimeTest.java        | 49 +++++++++++++++++++
 .../dql/connector/kieker/KiekerHelper.java    | 15 +++++-
 .../dql/connector/kieker/KiekerManager.java   |  2 +-
 .../PerformanceMetricsQueryConnectorImpl.java |  1 -
 .../filter/KiekerAnalysisController.java      |  5 +-
 .../kieker/filter/KiekerTraceLoader.java      |  9 ++++
 11 files changed, 156 insertions(+), 8 deletions(-)
 create mode 100644 tools.descartes.dql.connector.kieker.tests/src/tools/descartes/dql/connector/kieker/tests/CpuUtilizationTest.java
 create mode 100644 tools.descartes.dql.connector.kieker.tests/src/tools/descartes/dql/connector/kieker/tests/ListEntitiesTest.java
 create mode 100644 tools.descartes.dql.connector.kieker.tests/src/tools/descartes/dql/connector/kieker/tests/ResponseTimeTest.java

diff --git a/tools.descartes.dql.connector.kieker.examples/JPetStore/ListEntities.dql b/tools.descartes.dql.connector.kieker.examples/JPetStore/ListEntities.dql
index 6279907..3e724b3 100644
--- a/tools.descartes.dql.connector.kieker.examples/JPetStore/ListEntities.dql
+++ b/tools.descartes.dql.connector.kieker.examples/JPetStore/ListEntities.dql
@@ -1,2 +1,2 @@
 LIST ENTITIES
-USING kieker@'D:\\Master\\GR\\workspace\\kieker4dql\\tools.descartes.dql.connector.kieker.examples\\JPetStore\\JPetStore.properties';
\ No newline at end of file
+USING kieker@'JPetStore.properties';
\ No newline at end of file
diff --git a/tools.descartes.dql.connector.kieker.examples/JPetStore/SelectService.dql b/tools.descartes.dql.connector.kieker.examples/JPetStore/SelectService.dql
index 3f39909..a387da2 100644
--- a/tools.descartes.dql.connector.kieker.examples/JPetStore/SelectService.dql
+++ b/tools.descartes.dql.connector.kieker.examples/JPetStore/SelectService.dql
@@ -1,3 +1,3 @@
 SELECT srv1.ResponseTime.DEFAULT
 FOR SERVICE 'org.mybatis.jpetstore.web.actions.CatalogActionBean.getItem()' AS srv1
-USING kieker@'D:\\Master\\GR\\workspace\\kieker4dql\\tools.descartes.dql.connector.kieker.examples\\JPetStore\\traceFiles';
\ No newline at end of file
+USING kieker@'JPetStore.properties';
\ No newline at end of file
diff --git a/tools.descartes.dql.connector.kieker.examples/helloWorld/helloWorld.properties b/tools.descartes.dql.connector.kieker.examples/helloWorld/helloWorld.properties
index ee86637..72b2ffa 100644
--- a/tools.descartes.dql.connector.kieker.examples/helloWorld/helloWorld.properties
+++ b/tools.descartes.dql.connector.kieker.examples/helloWorld/helloWorld.properties
@@ -1,5 +1,5 @@
 kieker.maxRunTimeInSeconds=30
 kieker.monitoring.default.properties=META-INF\\kieker.monitoring.default.properties
-kieker.kiekerLocation=C:\\kieker-1.13-SNAPSHOT
+kieker.kiekerLocation=D:\\Master\\GR\\kieker-1.13-SNAPSHOT
 kieker.applicationJarFile=helloWorld.jar
 kieker.log.directory=log
\ No newline at end of file
diff --git a/tools.descartes.dql.connector.kieker.tests/src/tools/descartes/dql/connector/kieker/tests/CpuUtilizationTest.java b/tools.descartes.dql.connector.kieker.tests/src/tools/descartes/dql/connector/kieker/tests/CpuUtilizationTest.java
new file mode 100644
index 0000000..3a5d9e0
--- /dev/null
+++ b/tools.descartes.dql.connector.kieker.tests/src/tools/descartes/dql/connector/kieker/tests/CpuUtilizationTest.java
@@ -0,0 +1,48 @@
+package tools.descartes.dql.connector.kieker.tests;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.core.internal.utils.FileUtil;
+import org.junit.Test;
+
+import tools.descartes.dql.connector.kieker.PerformanceMetricsQueryConnectorImpl;
+import tools.descartes.dql.models.mapping.domain.ContinuousSeriesResult;
+import tools.descartes.dql.models.mapping.domain.DomainFactory;
+import tools.descartes.dql.models.mapping.domain.Entity;
+import tools.descartes.dql.models.mapping.domain.Probe;
+import tools.descartes.dql.models.mapping.domain.StatType;
+import tools.descartes.dql.models.mapping.mapping.EntityMapping;
+import tools.descartes.dql.models.mapping.mapping.MappingFactory;
+import tools.descartes.dql.models.mapping.mapping.impl.MappingFactoryImpl;
+
+public class CpuUtilizationTest {
+	
+	@Test
+	public void testCpuUtilizationAnalysis(){
+
+		String modelLocation = "testFiles";
+		
+		PerformanceMetricsQueryConnectorImpl pmqc = new PerformanceMetricsQueryConnectorImpl();
+		
+		//Build request
+		MappingFactory mappingFactory = MappingFactoryImpl.init();
+		EntityMapping request = mappingFactory.createEntityMapping();
+		request.setModelLocation(modelLocation);
+		Entity res1 = DomainFactory.eINSTANCE.createEntity();
+		res1.setEntityType("RESSOURCE");
+		Probe p = DomainFactory.eINSTANCE.createProbe();
+		p.setMetricName("utilization");
+		StatType st = DomainFactory.eINSTANCE.createStatType();
+		st.setTypeName("SAMPLE");
+		p.getStatTypes().add(st);
+		res1.getProbes().add(p);
+		res1.setAlias("res1");
+		res1.setIdentifier("cpu1");
+		request.getEntities().add(res1);
+		
+		EntityMapping answer = pmqc.requestMetrics(request);
+		ContinuousSeriesResult r = (ContinuousSeriesResult) answer.getEntities().get(0).getProbes().get(0).getStatTypes().get(0).getResult();
+		assertTrue(r.getValid());	
+		assertTrue(r.getElements().size() > 0);
+	}
+}
diff --git a/tools.descartes.dql.connector.kieker.tests/src/tools/descartes/dql/connector/kieker/tests/ListEntitiesTest.java b/tools.descartes.dql.connector.kieker.tests/src/tools/descartes/dql/connector/kieker/tests/ListEntitiesTest.java
new file mode 100644
index 0000000..3852c66
--- /dev/null
+++ b/tools.descartes.dql.connector.kieker.tests/src/tools/descartes/dql/connector/kieker/tests/ListEntitiesTest.java
@@ -0,0 +1,29 @@
+package tools.descartes.dql.connector.kieker.tests;
+
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
+import tools.descartes.dql.connector.kieker.ModelStructureQueryConnectorImpl;
+import tools.descartes.dql.models.mapping.mapping.EntityMapping;
+import tools.descartes.dql.models.mapping.mapping.MappingFactory;
+import tools.descartes.dql.models.mapping.mapping.impl.MappingFactoryImpl;
+
+public class ListEntitiesTest {
+	@Test
+	public void testListEntities(){
+
+		String modelLocation = "testFiles";
+		
+		ModelStructureQueryConnectorImpl msqc = new ModelStructureQueryConnectorImpl();
+		
+		//Build request
+		MappingFactory mappingFactory = MappingFactoryImpl.init();
+		EntityMapping request = mappingFactory.createEntityMapping();
+		request.setModelLocation(modelLocation);
+		
+		
+		EntityMapping answer = msqc.requestEntities(request);
+		assertTrue(answer.getEntities().size() > 0);
+	}
+}
diff --git a/tools.descartes.dql.connector.kieker.tests/src/tools/descartes/dql/connector/kieker/tests/ResponseTimeTest.java b/tools.descartes.dql.connector.kieker.tests/src/tools/descartes/dql/connector/kieker/tests/ResponseTimeTest.java
new file mode 100644
index 0000000..ab7e186
--- /dev/null
+++ b/tools.descartes.dql.connector.kieker.tests/src/tools/descartes/dql/connector/kieker/tests/ResponseTimeTest.java
@@ -0,0 +1,49 @@
+package tools.descartes.dql.connector.kieker.tests;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.core.internal.utils.FileUtil;
+import org.junit.Test;
+
+import tools.descartes.dql.connector.kieker.PerformanceMetricsQueryConnectorImpl;
+import tools.descartes.dql.models.mapping.domain.ContinuousSeriesResult;
+import tools.descartes.dql.models.mapping.domain.DomainFactory;
+import tools.descartes.dql.models.mapping.domain.Entity;
+import tools.descartes.dql.models.mapping.domain.Probe;
+import tools.descartes.dql.models.mapping.domain.Result;
+import tools.descartes.dql.models.mapping.domain.StatType;
+import tools.descartes.dql.models.mapping.mapping.EntityMapping;
+import tools.descartes.dql.models.mapping.mapping.MappingFactory;
+import tools.descartes.dql.models.mapping.mapping.impl.MappingFactoryImpl;
+
+public class ResponseTimeTest {
+	
+	@Test
+	public void testResponseTimeAnalysis(){
+
+		String modelLocation = "testFiles";
+		
+		PerformanceMetricsQueryConnectorImpl pmqc = new PerformanceMetricsQueryConnectorImpl();
+		
+		//Build request
+		MappingFactory mappingFactory = MappingFactoryImpl.init();
+		EntityMapping request = mappingFactory.createEntityMapping();
+		request.setModelLocation(modelLocation);
+		Entity res1 = DomainFactory.eINSTANCE.createEntity();
+		res1.setEntityType("SERVICE");
+		Probe p = DomainFactory.eINSTANCE.createProbe();
+		p.setMetricName("responseTime");
+		StatType st = DomainFactory.eINSTANCE.createStatType();
+		st.setTypeName("SAMPLE");
+		p.getStatTypes().add(st);
+		res1.getProbes().add(p);
+		res1.setAlias("svc1");
+		res1.setIdentifier("org.mybatis.jpetstore.web.actions.CatalogActionBean.getItem()");
+		request.getEntities().add(res1);
+		
+		EntityMapping answer = pmqc.requestMetrics(request);
+		ContinuousSeriesResult r = (ContinuousSeriesResult) answer.getEntities().get(0).getProbes().get(0).getStatTypes().get(0).getResult();
+		assertTrue(r.getValid());	
+		assertTrue(r.getElements().size() > 0);
+	}
+}
diff --git a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/KiekerHelper.java b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/KiekerHelper.java
index 037c260..e7d9210 100644
--- a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/KiekerHelper.java
+++ b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/KiekerHelper.java
@@ -155,11 +155,16 @@ public class KiekerHelper {
 			String applicationFolder = "";
 			if (properties.get(APPLICATION_JAR_FILE) != null){
 				dummyFile = new File(properties.get(APPLICATION_JAR_FILE).toString());
+				
 				if (!dummyFile.isAbsolute()) {
 					properties.setProperty(APPLICATION_JAR_FILE, propertiesFolder+File.separator+ properties.get(APPLICATION_JAR_FILE));
 				}
 				
 				dummyFile = new File(properties.get(APPLICATION_JAR_FILE).toString());
+				if (!dummyFile.exists()){
+					throw new IllegalStateException(
+							"Could not find target application jar under "+dummyFile.getAbsolutePath());
+				}
 				applicationFolder = new File(dummyFile.getAbsolutePath()).getParent();
 			}
 			
@@ -168,6 +173,11 @@ public class KiekerHelper {
 				if (!dummyFile.isAbsolute()) {
 					properties.setProperty(KIEKER_CONFIG_DEFAULT_KEY, applicationFolder+File.separator+ properties.get(KIEKER_CONFIG_DEFAULT_KEY));
 				}
+				dummyFile = new File(properties.get(KIEKER_CONFIG_DEFAULT_KEY).toString());
+				if (!dummyFile.exists()){
+					throw new IllegalStateException(
+							"Could not find default monitoring properties file under "+dummyFile.getAbsolutePath());
+				}
 			}
 			if (properties.get(KIEKER_LOG_DIRECTORY) != null){
 				dummyFile = new File(properties.get(KIEKER_LOG_DIRECTORY).toString());
@@ -178,7 +188,10 @@ public class KiekerHelper {
 			if (properties.get(KIEKER_LOCATION) != null){
 				String kiekerLocation = properties.get(KIEKER_LOCATION).toString();
 				dummyFile = new File(kiekerLocation);
-				
+				if (!dummyFile.exists()){
+					throw new IllegalStateException(
+							"Could not find Kieker distribution under "+dummyFile.getAbsolutePath());
+				}
 				if (!dummyFile.isAbsolute()) {
 					kiekerLocation = propertiesFolder+File.separator+ properties.get(KIEKER_LOCATION);
 					properties.setProperty(KIEKER_LOCATION, kiekerLocation);
diff --git a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/KiekerManager.java b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/KiekerManager.java
index 177d3c5..fb1320e 100644
--- a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/KiekerManager.java
+++ b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/KiekerManager.java
@@ -122,7 +122,7 @@ public class KiekerManager {
 	 */
 	private void loadMonitoringConfig(Properties prop){
 		log("Loading monitoring properties...");
-		String[] requiredProperties = new String[]{KiekerHelper.APPLICATION_JAR_FILE,KiekerHelper.KIEKER_JAR_FILE,KiekerHelper.KIEKER_LOCATION,KiekerHelper.KIEKER_CONFIG_DEFAULT_KEY};
+		String[] requiredProperties = new String[]{KiekerHelper.APPLICATION_JAR_FILE,KiekerHelper.KIEKER_LOCATION,KiekerHelper.KIEKER_CONFIG_DEFAULT_KEY};
 		KiekerHelper.checkProperties(prop, requiredProperties);
 		try{
 			
diff --git a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/PerformanceMetricsQueryConnectorImpl.java b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/PerformanceMetricsQueryConnectorImpl.java
index c9ca592..47466fc 100644
--- a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/PerformanceMetricsQueryConnectorImpl.java
+++ b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/PerformanceMetricsQueryConnectorImpl.java
@@ -69,7 +69,6 @@ public class PerformanceMetricsQueryConnectorImpl extends
 
 	
 
-	@Override
 	public void reset() {
 		// Nothing to do here
 	}
diff --git a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/filter/KiekerAnalysisController.java b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/filter/KiekerAnalysisController.java
index 4a05548..c7ad12b 100644
--- a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/filter/KiekerAnalysisController.java
+++ b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/filter/KiekerAnalysisController.java
@@ -73,9 +73,10 @@ public class KiekerAnalysisController {
 			}
 		}
 
-		t = new KiekerTraceLoader(t)
-				.loadKiekerTraceFromDirectories(traceDirectories.toArray(new String[traceDirectories.size()]));
+		KiekerTraceLoader loader = new KiekerTraceLoader(t);
+		t =loader.loadKiekerTraceFromDirectories(traceDirectories.toArray(new String[traceDirectories.size()]));
 		this.trace = t.initializeMaps(ignoreHost);
+		loader.clearMaps();
 
 	}
 
diff --git a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/filter/KiekerTraceLoader.java b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/filter/KiekerTraceLoader.java
index e9e0259..14f56ef 100644
--- a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/filter/KiekerTraceLoader.java
+++ b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/filter/KiekerTraceLoader.java
@@ -32,6 +32,13 @@ public class KiekerTraceLoader {
 		kiekerReader.read();
 		return fetchInformationFromMaps();
 	}
+	
+	public void clearMaps(){
+		ClassMap.getInstance().clear();
+		InterfaceMap.getInstance().clear();
+		ResourceMap.getInstance().clear();
+		CpuMap.getInstance().clear();
+	}
 
 	private Trace fetchInformationFromMaps() {
 		if (trace == null) {
@@ -45,4 +52,6 @@ public class KiekerTraceLoader {
 		// more information can be included from other Maps
 		return trace;
 	}
+	
+	
 }
-- 
GitLab