diff --git a/tools.descartes.dql.connector.kieker.examples/JPetStore/ListEntities.dql b/tools.descartes.dql.connector.kieker.examples/JPetStore/ListEntities.dql index 6279907783833fa021c51ff856f92eb2aad233b8..3e724b34d629e64ce3d497391140a660760619cb 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 3f399095367596035c9beb75af90d47d00a13d4e..a387da2bd3532edb05e00f9e9217a912ff042771 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 ee866379e052542b02ead43929465112fc362dc4..72b2ffac17e134823af1ca58b7b7f539ffc754b7 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 0000000000000000000000000000000000000000..3a5d9e085ced0242f91106b4a9d923e92e8fe68c --- /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 0000000000000000000000000000000000000000..3852c668383c669a6f4f661c5ebe0f2a9e3df055 --- /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 0000000000000000000000000000000000000000..ab7e186c4074515210f3bda2f1e505a57de55e0e --- /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 037c2601c9509ff2d69bdf09913af477752e82d9..e7d92108181549a329658c0d9f9d0f54350dd45e 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 177d3c52d81bae8fdb90b22812948e305c2c68a6..fb1320e8058272a9707d64bee72c7cb2fdddf2ab 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 c9ca5929e47b90be7f1ab0808baeac61d644a399..47466fc44a496e0e33bc85e5f837524eba4cabcb 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 4a055481853cb480f2b3ee7b32dd93a57ede9e75..c7ad12b3abc6f8be056db1d872f854458048ff7c 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 e9e02597dafedbe58bcf85157ea126bc1f5714e4..14f56ef995b5c04a9faa4006b66c66aa9ad4083c 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; } + + }