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