adaptive-caching-framework
Changes
evaluation/Applications/AP/spring-petclinic/src/main/java/org/springframework/samples/petclinic/Configuration.java 2(+1 -1)
experiments.sh 69(+40 -29)
framework/autonomicmanager/.idea/workspace.xml 357(+260 -97)
framework/autonomicmanager/pom.xml 61(+2 -59)
framework/autonomicmanager/README.md 111(+111 -0)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/analysis/Analyzer.java 30(+25 -5)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/cacher/key/Key.java 1(+0 -1)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/extensions/caffeine/CaffeineCache.java 4(+2 -2)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/extensions/ehcache/EhCacheCache.java 4(+2 -2)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/extensions/guava/GuavaCache.java 4(+2 -2)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/model/AdaptiveCacheManager.java 1(+1 -0)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/model/Cache.java 2(+0 -2)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/model/support/AbstractValueAdaptingCache.java 3(+1 -2)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/configuration/annotation/AdaptiveCaching.java 22(+15 -7)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/configuration/annotation/Cacheable.java 8(+6 -2)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/configuration/annotation/types/RepositoryType.java 4(+2 -2)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/configuration/annotation/Uncacheable.java 3(+3 -0)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/exceptions/CacheProviderException.java 17(+13 -4)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/exceptions/StorageException.java 4(+4 -0)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/application/aspects/TracerAspect.java 379(+160 -219)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/application/usersession/UserGetterFactory.java 16(+13 -3)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/cache/CacheInfo.java 2(+1 -1)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/cache/CacheMonitorFactory.java 42(+39 -3)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/AsyncFileWriter.java 1(+1 -0)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/ConsoleRepository.java 2(+2 -0)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/MemoryRepository.java 2(+2 -0)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/MongoRepository.java 2(+1 -1)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/Repository.java 2(+1 -1)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/RepositoryFactory.java 55(+52 -3)
framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/StorageException.java 12(+0 -12)
framework/autonomicmanager/src/test/java/br/ufrgs/inf/prosoft/tests/adaptivecaching/MethodCacherTest.java 4(+1 -3)
jmeter.log 206(+206 -0)
README.md 89(+89 -0)
Details
diff --git a/evaluation/Applications/AP/spring-petclinic/pom.xml b/evaluation/Applications/AP/spring-petclinic/pom.xml
index fc64e19..e554c95 100644
--- a/evaluation/Applications/AP/spring-petclinic/pom.xml
+++ b/evaluation/Applications/AP/spring-petclinic/pom.xml
@@ -229,7 +229,7 @@
<dependency>
<groupId>br.ufrgs.inf.prosoft.adaptivecaching</groupId>
<artifactId>autonomicmanager</artifactId>
- <version>0.3.0-SNAPSHOT</version>
+ <version>0.4.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
@@ -309,7 +309,7 @@
</systemProperties>
</configuration>
</plugin>
-
+
<!--Specify the encoding for copying resources-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@@ -353,7 +353,7 @@
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
- <version>1.8.9</version>
+ <version>1.8.10</version>
</dependency>
</dependencies>
</plugin>
diff --git a/evaluation/Applications/AP/spring-petclinic/spring-petclinic.iml b/evaluation/Applications/AP/spring-petclinic/spring-petclinic.iml
new file mode 100644
index 0000000..1be412a
--- /dev/null
+++ b/evaluation/Applications/AP/spring-petclinic/spring-petclinic.iml
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+ <component name="FacetManager">
+ <facet type="web" name="Web">
+ <configuration>
+ <descriptors>
+ <deploymentDescriptor name="jetty-web.xml" url="file://$MODULE_DIR$/src/main/webapp/WEB-INF/jetty-web.xml" />
+ </descriptors>
+ <webroots>
+ <root url="file://$MODULE_DIR$/src/main/webapp" relative="/" />
+ </webroots>
+ <sourceRoots>
+ <root url="file://$MODULE_DIR$/src/main/java" />
+ <root url="file://$MODULE_DIR$/src/main/resources" />
+ </sourceRoots>
+ </configuration>
+ </facet>
+ <facet type="AspectJ" name="AspectJ">
+ <configuration>
+ <option name="aspectPath">
+ <module>
+ <option name="name" value="autonomicmanager" />
+ </module>
+ </option>
+ </configuration>
+ </facet>
+ </component>
+ <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="false">
+ <output url="file://$MODULE_DIR$/target/classes" />
+ <output-test url="file://$MODULE_DIR$/target/test-classes" />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
+ <excludeFolder url="file://$MODULE_DIR$/target" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.tomcat:tomcat-servlet-api:7.0.59" level="project" />
+ <orderEntry type="library" scope="PROVIDED" name="Maven: javax.servlet.jsp:javax.servlet.jsp-api:2.2.1" level="project" />
+ <orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.tomcat:tomcat-jasper-el:7.0.59" level="project" />
+ <orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.tomcat:tomcat-el-api:7.0.59" level="project" />
+ <orderEntry type="library" name="Maven: javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.1" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.taglibs:taglibs-standard-jstlel:1.2.5" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.taglibs:taglibs-standard-spec:1.2.5" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.taglibs:taglibs-standard-impl:1.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.6.7" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.6.7" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.6.7" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.0.0" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.1.1" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: net.minidev:asm:1.0.2" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: asm:asm:3.3.1" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.data:spring-data-jpa:1.9.5.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:1.11.5.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-orm:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-context:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-aop:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: aopalliance:aopalliance:1.0" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-tx:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-beans:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-core:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: org.slf4j:jcl-over-slf4j:1.7.21" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.data:spring-data-jdbc-core:1.1.0.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.retry:spring-retry:1.1.3.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-expression:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-web:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-context-support:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-oxm:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.aspectj:aspectjrt:1.8.9" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: org.aspectj:aspectjweaver:1.8.9" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.tomcat:tomcat-jdbc:8.0.37" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.tomcat:tomcat-juli:8.0.37" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.21" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: ch.qos.logback:logback-classic:1.1.7" level="project" />
+ <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.1.7" level="project" />
+ <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
+ <orderEntry type="library" name="Maven: org.hibernate:hibernate-entitymanager:4.3.11.Final" level="project" />
+ <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.0.Final" level="project" />
+ <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging-annotations:1.2.0.Beta1" level="project" />
+ <orderEntry type="library" name="Maven: org.hibernate:hibernate-core:4.3.11.Final" level="project" />
+ <orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" />
+ <orderEntry type="library" name="Maven: org.jboss:jandex:1.1.0.Final" level="project" />
+ <orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" />
+ <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.0.b2" level="project" />
+ <orderEntry type="library" name="Maven: org.hibernate.common:hibernate-commons-annotations:4.0.5.Final" level="project" />
+ <orderEntry type="library" name="Maven: org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final" level="project" />
+ <orderEntry type="library" name="Maven: org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.0.0.Final" level="project" />
+ <orderEntry type="library" name="Maven: org.javassist:javassist:3.18.1-GA" level="project" />
+ <orderEntry type="library" name="Maven: org.hibernate:hibernate-validator:5.2.4.Final" level="project" />
+ <orderEntry type="library" name="Maven: javax.validation:validation-api:1.1.0.Final" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.1.0" level="project" />
+ <orderEntry type="library" name="Maven: org.hibernate:hibernate-ehcache:4.3.11.Final" level="project" />
+ <orderEntry type="library" name="Maven: net.sf.ehcache:ehcache-core:2.4.3" level="project" />
+ <orderEntry type="library" name="Maven: net.sf.ehcache:ehcache:2.10.2.2.21" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:2.2.0" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:1.10.19" level="project" />
+ <orderEntry type="library" name="Maven: org.objenesis:objenesis:2.1" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-all:1.3" level="project" />
+ <orderEntry type="library" name="Maven: com.googlecode.json-simple:json-simple:1.1.1" level="project" />
+ <orderEntry type="module" module-name="autonomicmanager" />
+ <orderEntry type="library" name="Maven: org.reflections:reflections:0.9.10" level="project" />
+ <orderEntry type="library" name="Maven: com.google.code.findbugs:annotations:2.0.1" level="project" />
+ <orderEntry type="library" name="Maven: org.ehcache:sizeof:0.3.0" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.3.2" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-hibernate4:2.6.7" level="project" />
+ <orderEntry type="library" name="Maven: org.redisson:redisson:3.1.0" level="project" />
+ <orderEntry type="library" name="Maven: javax.cache:cache-api:1.0.0" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-common:4.0.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec:4.0.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.0.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-transport:4.0.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-handler:4.0.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.projectreactor:reactor-stream:2.0.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: io.projectreactor:reactor-core:2.0.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.0" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.6.7" level="project" />
+ <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.16" level="project" />
+ <orderEntry type="library" name="Maven: net.openhft:zero-allocation-hashing:0.5" level="project" />
+ <orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.4.26" level="project" />
+ <orderEntry type="library" name="Maven: org.jodd:jodd-bean:3.7.1" level="project" />
+ <orderEntry type="library" name="Maven: org.jodd:jodd-core:3.7.1" level="project" />
+ <orderEntry type="library" name="Maven: com.google.guava:guava:17.0" level="project" />
+ <orderEntry type="library" name="Maven: com.github.ben-manes.caffeine:caffeine:2.3.0" level="project" />
+ <orderEntry type="library" name="Maven: redis.clients:jedis:2.7.3" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.4.2" level="project" />
+ <orderEntry type="library" name="Maven: net.spy:spymemcached:2.12.1" level="project" />
+ <orderEntry type="library" name="Maven: com.esotericsoftware:kryo:3.0.3" level="project" />
+ <orderEntry type="library" name="Maven: com.esotericsoftware:reflectasm:1.10.1" level="project" />
+ <orderEntry type="library" name="Maven: org.ow2.asm:asm:5.0.3" level="project" />
+ <orderEntry type="library" name="Maven: com.esotericsoftware:minlog:1.3.0" level="project" />
+ <orderEntry type="library" name="Maven: org.mongodb:mongo-java-driver:3.2.2" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: mysql:mysql-connector-java:5.1.36" level="project" />
+ </component>
+</module>
\ No newline at end of file
diff --git a/evaluation/Applications/AP/spring-petclinic/src/main/java/org/springframework/samples/petclinic/Configuration.java b/evaluation/Applications/AP/spring-petclinic/src/main/java/org/springframework/samples/petclinic/Configuration.java
index 5c95e0f..c41b705 100644
--- a/evaluation/Applications/AP/spring-petclinic/src/main/java/org/springframework/samples/petclinic/Configuration.java
+++ b/evaluation/Applications/AP/spring-petclinic/src/main/java/org/springframework/samples/petclinic/Configuration.java
@@ -8,7 +8,7 @@ import br.ufrgs.inf.prosoft.adaptivecaching.configuration.annotation.types.Repos
//working config: mongodb, accumulation
@AdaptiveCaching(cacheProvider = CacheProviderType.EHCACHE, logRepository = RepositoryType.MONGODB,
- modelling = Modelling.ACCUMULATION, analyzerEnabled = true, enabled = true, disableMonitoringAfterAnalysis = true,
+ modelling = Modelling.ACCUMULATION, analyzerEnabled = false, enabled = true, disableMonitoringAfterAnalysis = true,
clearMonitoringDataOnStart = true, traceAsync = false, tracerEnabled = true)
//Jhonny: workaround below. a better solution involve filter by serialization methods in aspect to avoid it
diff --git a/evaluation/Applications/DEV/spring-petclinic/spring-petclinic (1).iml b/evaluation/Applications/DEV/spring-petclinic/spring-petclinic (1).iml
new file mode 100644
index 0000000..b90d932
--- /dev/null
+++ b/evaluation/Applications/DEV/spring-petclinic/spring-petclinic (1).iml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+ <component name="FacetManager">
+ <facet type="web" name="Web">
+ <configuration>
+ <descriptors>
+ <deploymentDescriptor name="jetty-web.xml" url="file://$MODULE_DIR$/src/main/webapp/WEB-INF/jetty-web.xml" />
+ </descriptors>
+ <webroots>
+ <root url="file://$MODULE_DIR$/src/main/webapp" relative="/" />
+ </webroots>
+ <sourceRoots>
+ <root url="file://$MODULE_DIR$/src/main/java" />
+ <root url="file://$MODULE_DIR$/src/main/resources" />
+ </sourceRoots>
+ </configuration>
+ </facet>
+ </component>
+ <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="false">
+ <output url="file://$MODULE_DIR$/target/classes" />
+ <output-test url="file://$MODULE_DIR$/target/test-classes" />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
+ <excludeFolder url="file://$MODULE_DIR$/target" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.tomcat:tomcat-servlet-api:7.0.59" level="project" />
+ <orderEntry type="library" scope="PROVIDED" name="Maven: javax.servlet.jsp:javax.servlet.jsp-api:2.2.1" level="project" />
+ <orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.tomcat:tomcat-jasper-el:7.0.59" level="project" />
+ <orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.tomcat:tomcat-el-api:7.0.59" level="project" />
+ <orderEntry type="library" name="Maven: javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.1" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.taglibs:taglibs-standard-jstlel:1.2.5" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.taglibs:taglibs-standard-spec:1.2.5" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.taglibs:taglibs-standard-impl:1.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.6.7" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.6.7" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.6.7" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.0.0" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.1.1" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: net.minidev:asm:1.0.2" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: asm:asm:3.3.1" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.data:spring-data-jpa:1.9.5.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:1.11.5.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-orm:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-context:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-aop:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: aopalliance:aopalliance:1.0" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-tx:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-beans:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-core:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: org.slf4j:jcl-over-slf4j:1.7.21" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.data:spring-data-jdbc-core:1.1.0.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.retry:spring-retry:1.1.3.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-expression:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-web:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-context-support:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-oxm:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.aspectj:aspectjrt:1.8.9" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: org.aspectj:aspectjweaver:1.8.9" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.tomcat:tomcat-jdbc:8.0.37" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.tomcat:tomcat-juli:8.0.37" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.21" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: ch.qos.logback:logback-classic:1.1.7" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: ch.qos.logback:logback-core:1.1.7" level="project" />
+ <orderEntry type="library" name="Maven: org.hibernate:hibernate-entitymanager:4.3.11.Final" level="project" />
+ <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.0.Final" level="project" />
+ <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging-annotations:1.2.0.Beta1" level="project" />
+ <orderEntry type="library" name="Maven: org.hibernate:hibernate-core:4.3.11.Final" level="project" />
+ <orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" />
+ <orderEntry type="library" name="Maven: org.jboss:jandex:1.1.0.Final" level="project" />
+ <orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" />
+ <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.0.b2" level="project" />
+ <orderEntry type="library" name="Maven: org.hibernate.common:hibernate-commons-annotations:4.0.5.Final" level="project" />
+ <orderEntry type="library" name="Maven: org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final" level="project" />
+ <orderEntry type="library" name="Maven: org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.0.0.Final" level="project" />
+ <orderEntry type="library" name="Maven: org.javassist:javassist:3.18.1-GA" level="project" />
+ <orderEntry type="library" name="Maven: org.hibernate:hibernate-validator:5.2.4.Final" level="project" />
+ <orderEntry type="library" name="Maven: javax.validation:validation-api:1.1.0.Final" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.1.0" level="project" />
+ <orderEntry type="library" name="Maven: org.hibernate:hibernate-ehcache:4.3.11.Final" level="project" />
+ <orderEntry type="library" name="Maven: net.sf.ehcache:ehcache-core:2.4.3" level="project" />
+ <orderEntry type="library" name="Maven: net.sf.ehcache:ehcache:2.10.2.2.21" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:4.2.8.RELEASE" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:2.2.0" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:1.10.19" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.1" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-all:1.3" level="project" />
+ <orderEntry type="library" name="Maven: com.googlecode.json-simple:json-simple:1.1.1" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: mysql:mysql-connector-java:5.1.36" level="project" />
+ </component>
+</module>
\ No newline at end of file
diff --git a/evaluation/Applications/NO/spring-petclinic/jmeter.log b/evaluation/Applications/NO/spring-petclinic/jmeter.log
new file mode 100644
index 0000000..8a3ff67
--- /dev/null
+++ b/evaluation/Applications/NO/spring-petclinic/jmeter.log
@@ -0,0 +1,224 @@
+2017/06/04 20:30:56 INFO - jmeter.util.JMeterUtils: Setting Locale to en_US
+2017/06/04 20:30:56 INFO - jmeter.JMeter: Loading user properties from: /home/jhonnymertz/dev/apache-jmeter-3.0/bin/user.properties
+2017/06/04 20:30:56 INFO - jmeter.JMeter: Loading system properties from: /home/jhonnymertz/dev/apache-jmeter-3.0/bin/system.properties
+2017/06/04 20:30:56 INFO - jmeter.JMeter: Copyright (c) 1998-2016 The Apache Software Foundation
+2017/06/04 20:30:56 INFO - jmeter.JMeter: Version 3.0 r1743807
+2017/06/04 20:30:56 INFO - jmeter.JMeter: java.version=1.8.0_45
+2017/06/04 20:30:56 INFO - jmeter.JMeter: java.vm.name=Java HotSpot(TM) 64-Bit Server VM
+2017/06/04 20:30:56 INFO - jmeter.JMeter: os.name=Linux
+2017/06/04 20:30:56 INFO - jmeter.JMeter: os.arch=amd64
+2017/06/04 20:30:56 INFO - jmeter.JMeter: os.version=4.4.0-78-generic
+2017/06/04 20:30:56 INFO - jmeter.JMeter: file.encoding=UTF-8
+2017/06/04 20:30:56 INFO - jmeter.JMeter: Max memory =1840250880
+2017/06/04 20:30:56 INFO - jmeter.JMeter: Available Processors =4
+2017/06/04 20:30:56 INFO - jmeter.JMeter: Default Locale=English (United States)
+2017/06/04 20:30:56 INFO - jmeter.JMeter: JMeter Locale=English (United States)
+2017/06/04 20:30:56 INFO - jmeter.JMeter: JMeterHome=/home/jhonnymertz/dev/apache-jmeter-3.0
+2017/06/04 20:30:56 INFO - jmeter.JMeter: user.dir =/home/jhonnymertz/workspace/adaptive-caching-framework/evaluation/Applications/NO/spring-petclinic
+2017/06/04 20:30:56 INFO - jmeter.JMeter: PWD =/home/jhonnymertz/workspace/adaptive-caching-framework/evaluation/Applications/NO/spring-petclinic
+2017/06/04 20:30:56 INFO - jmeter.JMeter: IP: 127.0.1.1 Name: jhonnymertz-Vostro-5470 FullName: jhonnymertz-Vostro-5470
+2017/06/04 20:30:56 INFO - jmeter.services.FileServer: Default base='/home/jhonnymertz/workspace/adaptive-caching-framework/evaluation/Applications/NO/spring-petclinic'
+2017/06/04 20:30:56 INFO - jmeter.services.FileServer: Set new base='/home/jhonnymertz/workspace/adaptive-caching-framework/evaluation/JMeter'
+2017/06/04 20:30:56 INFO - jmeter.save.SaveService: Testplan (JMX) version: 2.2. Testlog (JTL) version: 2.2
+2017/06/04 20:30:56 INFO - jmeter.save.SaveService: Using SaveService properties file encoding UTF-8
+2017/06/04 20:30:56 INFO - jmeter.save.SaveService: Using SaveService properties version 2.9
+2017/06/04 20:30:56 INFO - jmeter.save.SaveService: All converter versions present and correct
+2017/06/04 20:30:56 INFO - jmeter.save.SaveService: Loading file: /home/jhonnymertz/workspace/adaptive-caching-framework/evaluation/JMeter/petclinic_test_plan.jmx
+2017/06/04 20:30:56 INFO - jmeter.protocol.http.control.CookieManager: Settings: Delete null: true Check: true Allow variable: true Save: false Prefix: COOKIE_
+2017/06/04 20:30:56 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/html is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
+2017/06/04 20:30:56 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for application/xhtml+xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
+2017/06/04 20:30:56 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for application/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
+2017/06/04 20:30:56 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
+2017/06/04 20:30:56 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/vnd.wap.wml is org.apache.jmeter.protocol.http.parser.RegexpHTMLParser
+2017/06/04 20:30:56 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/css is org.apache.jmeter.protocol.http.parser.CssParser
+2017/06/04 20:30:56 INFO - jmeter.JMeter: Creating summariser <summary>
+2017/06/04 20:30:57 INFO - jmeter.engine.StandardJMeterEngine: Running the test!
+2017/06/04 20:30:57 INFO - jmeter.samplers.SampleEvent: List of sample_variables: []
+2017/06/04 20:30:57 INFO - jmeter.samplers.SampleEvent: List of sample_variables: []
+2017/06/04 20:30:57 INFO - jmeter.engine.util.CompoundVariable: Note: Function class names must contain the string: '.functions.'
+2017/06/04 20:30:57 INFO - jmeter.engine.util.CompoundVariable: Note: Function class names must not contain the string: '.gui.'
+2017/06/04 20:30:57 INFO - jmeter.JMeter: Running test (1496601057280)
+2017/06/04 20:30:57 INFO - jmeter.engine.StandardJMeterEngine: Starting ThreadGroup: 1 : User threads full random transitions
+2017/06/04 20:30:57 INFO - jmeter.engine.StandardJMeterEngine: Starting 50 threads for group User threads full random transitions.
+2017/06/04 20:30:57 INFO - jmeter.engine.StandardJMeterEngine: Thread will continue on error
+2017/06/04 20:30:57 INFO - jmeter.threads.ThreadGroup: Starting thread group number 1 threads 50 ramp-up 1 perThread 20.0 delayedStart=false
+2017/06/04 20:30:57 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-1
+2017/06/04 20:30:57 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-2
+2017/06/04 20:30:57 INFO - jmeter.samplers.SampleResult: Note: Sample TimeStamps are START times
+2017/06/04 20:30:57 INFO - jmeter.samplers.SampleResult: sampleresult.default.encoding is set to ISO-8859-1
+2017/06/04 20:30:57 INFO - jmeter.samplers.SampleResult: sampleresult.useNanoTime=true
+2017/06/04 20:30:57 INFO - jmeter.samplers.SampleResult: sampleresult.nanoThreadSleep=5000
+2017/06/04 20:30:57 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-3
+2017/06/04 20:30:57 INFO - jmeter.protocol.http.sampler.HTTPHCAbstractImpl: Local host = jhonnymertz-Vostro-5470
+2017/06/04 20:30:57 INFO - jmeter.protocol.http.sampler.HTTPHC4Impl: HTTP request retry count = 0
+2017/06/04 20:30:57 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-4
+2017/06/04 20:30:57 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-5
+2017/06/04 20:30:57 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-6
+2017/06/04 20:30:57 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-7
+2017/06/04 20:30:57 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-8
+2017/06/04 20:30:57 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-9
+2017/06/04 20:30:57 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-10
+2017/06/04 20:30:57 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-11
+2017/06/04 20:30:57 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-12
+2017/06/04 20:30:57 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-13
+2017/06/04 20:30:57 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-14
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-15
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-16
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-17
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-18
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-19
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-20
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-21
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-22
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-23
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-24
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-25
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-26
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-27
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-28
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-29
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-30
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-31
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-32
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-33
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-34
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-35
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-36
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-37
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-38
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-39
+2017/06/04 20:30:58 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-40
+2017/06/04 20:30:59 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-41
+2017/06/04 20:30:59 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-42
+2017/06/04 20:30:59 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-43
+2017/06/04 20:30:59 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-44
+2017/06/04 20:30:59 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-45
+2017/06/04 20:30:59 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-46
+2017/06/04 20:30:59 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-47
+2017/06/04 20:30:59 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-48
+2017/06/04 20:30:59 INFO - jmeter.threads.ThreadGroup: Started thread group number 1
+2017/06/04 20:30:59 INFO - jmeter.engine.StandardJMeterEngine: All thread groups have been started
+2017/06/04 20:31:00 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-49
+2017/06/04 20:31:00 INFO - jmeter.reporters.Summariser: summary + 49 in 00:00:03 = 15,7/s Avg: 0 Min: 0 Max: 3 Err: 0 (0,00%) Active: 49 Started: 49 Finished: 0
+2017/06/04 20:31:00 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-50
+2017/06/04 20:31:30 INFO - jmeter.reporters.Summariser: summary + 4775 in 00:00:30 = 161,3/s Avg: 321 Min: 0 Max: 7748 Err: 0 (0,00%) Active: 50 Started: 50 Finished: 0
+2017/06/04 20:31:30 INFO - jmeter.reporters.Summariser: summary = 4824 in 00:00:33 = 147,4/s Avg: 317 Min: 0 Max: 7748 Err: 0 (0,00%)
+2017/06/04 20:32:00 INFO - jmeter.reporters.Summariser: summary + 7371 in 00:00:30 = 245,7/s Avg: 193 Min: 1 Max: 3641 Err: 0 (0,00%) Active: 50 Started: 50 Finished: 0
+2017/06/04 20:32:00 INFO - jmeter.reporters.Summariser: summary = 12195 in 00:01:03 = 194,4/s Avg: 242 Min: 0 Max: 7748 Err: 0 (0,00%)
+2017/06/04 20:32:30 INFO - jmeter.reporters.Summariser: summary + 6685 in 00:00:30 = 222,8/s Avg: 222 Min: 1 Max: 2109 Err: 0 (0,00%) Active: 50 Started: 50 Finished: 0
+2017/06/04 20:32:30 INFO - jmeter.reporters.Summariser: summary = 18880 in 00:01:33 = 203,6/s Avg: 235 Min: 0 Max: 7748 Err: 0 (0,00%)
+2017/06/04 20:33:00 INFO - jmeter.reporters.Summariser: summary + 5687 in 00:00:30 = 189,6/s Avg: 263 Min: 0 Max: 1809 Err: 0 (0,00%) Active: 50 Started: 50 Finished: 0
+2017/06/04 20:33:00 INFO - jmeter.reporters.Summariser: summary = 24567 in 00:02:03 = 200,2/s Avg: 242 Min: 0 Max: 7748 Err: 0 (0,00%)
+2017/06/04 20:33:30 INFO - jmeter.reporters.Summariser: summary + 5606 in 00:00:30 = 186,9/s Avg: 266 Min: 0 Max: 1520 Err: 0 (0,00%) Active: 50 Started: 50 Finished: 0
+2017/06/04 20:33:30 INFO - jmeter.reporters.Summariser: summary = 30173 in 00:02:33 = 197,6/s Avg: 246 Min: 0 Max: 7748 Err: 0 (0,00%)
+2017/06/04 20:34:00 INFO - jmeter.reporters.Summariser: summary + 4484 in 00:00:30 = 149,5/s Avg: 333 Min: 0 Max: 5705 Err: 0 (0,00%) Active: 50 Started: 50 Finished: 0
+2017/06/04 20:34:00 INFO - jmeter.reporters.Summariser: summary = 34657 in 00:03:03 = 189,7/s Avg: 257 Min: 0 Max: 7748 Err: 0 (0,00%)
+2017/06/04 20:34:30 INFO - jmeter.reporters.Summariser: summary + 5593 in 00:00:30 = 186,4/s Avg: 268 Min: 0 Max: 1474 Err: 0 (0,00%) Active: 50 Started: 50 Finished: 0
+2017/06/04 20:34:30 INFO - jmeter.reporters.Summariser: summary = 40250 in 00:03:33 = 189,2/s Avg: 259 Min: 0 Max: 7748 Err: 0 (0,00%)
+2017/06/04 20:35:00 INFO - jmeter.reporters.Summariser: summary + 4956 in 00:00:30 = 165,1/s Avg: 300 Min: 0 Max: 1917 Err: 0 (0,00%) Active: 50 Started: 50 Finished: 0
+2017/06/04 20:35:00 INFO - jmeter.reporters.Summariser: summary = 45206 in 00:04:03 = 186,2/s Avg: 263 Min: 0 Max: 7748 Err: 0 (0,00%)
+2017/06/04 20:35:12 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-9
+2017/06/04 20:35:12 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-9
+2017/06/04 20:35:13 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-17
+2017/06/04 20:35:13 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-17
+2017/06/04 20:35:16 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-25
+2017/06/04 20:35:16 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-25
+2017/06/04 20:35:18 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-36
+2017/06/04 20:35:18 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-36
+2017/06/04 20:35:19 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-35
+2017/06/04 20:35:19 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-35
+2017/06/04 20:35:19 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-18
+2017/06/04 20:35:19 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-18
+2017/06/04 20:35:20 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-30
+2017/06/04 20:35:20 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-30
+2017/06/04 20:35:20 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-37
+2017/06/04 20:35:20 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-37
+2017/06/04 20:35:22 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-45
+2017/06/04 20:35:22 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-45
+2017/06/04 20:35:24 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-42
+2017/06/04 20:35:24 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-42
+2017/06/04 20:35:24 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-14
+2017/06/04 20:35:24 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-14
+2017/06/04 20:35:24 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-24
+2017/06/04 20:35:24 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-24
+2017/06/04 20:35:25 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-6
+2017/06/04 20:35:25 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-6
+2017/06/04 20:35:25 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-2
+2017/06/04 20:35:25 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-2
+2017/06/04 20:35:25 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-19
+2017/06/04 20:35:25 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-19
+2017/06/04 20:35:25 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-13
+2017/06/04 20:35:25 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-13
+2017/06/04 20:35:25 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-21
+2017/06/04 20:35:25 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-21
+2017/06/04 20:35:26 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-23
+2017/06/04 20:35:26 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-23
+2017/06/04 20:35:26 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-15
+2017/06/04 20:35:26 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-15
+2017/06/04 20:35:26 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-48
+2017/06/04 20:35:26 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-48
+2017/06/04 20:35:26 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-26
+2017/06/04 20:35:26 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-26
+2017/06/04 20:35:27 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-33
+2017/06/04 20:35:27 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-33
+2017/06/04 20:35:27 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-1
+2017/06/04 20:35:27 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-1
+2017/06/04 20:35:27 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-47
+2017/06/04 20:35:27 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-47
+2017/06/04 20:35:27 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-5
+2017/06/04 20:35:27 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-5
+2017/06/04 20:35:27 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-31
+2017/06/04 20:35:27 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-31
+2017/06/04 20:35:28 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-7
+2017/06/04 20:35:28 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-7
+2017/06/04 20:35:28 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-49
+2017/06/04 20:35:28 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-49
+2017/06/04 20:35:28 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-12
+2017/06/04 20:35:28 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-12
+2017/06/04 20:35:29 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-28
+2017/06/04 20:35:29 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-28
+2017/06/04 20:35:29 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-10
+2017/06/04 20:35:29 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-10
+2017/06/04 20:35:29 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-16
+2017/06/04 20:35:29 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-16
+2017/06/04 20:35:29 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-4
+2017/06/04 20:35:29 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-4
+2017/06/04 20:35:29 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-20
+2017/06/04 20:35:29 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-20
+2017/06/04 20:35:29 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-44
+2017/06/04 20:35:29 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-44
+2017/06/04 20:35:30 INFO - jmeter.reporters.Summariser: summary + 4555 in 00:00:30 = 151,9/s Avg: 294 Min: 0 Max: 3766 Err: 0 (0,00%) Active: 15 Started: 50 Finished: 35
+2017/06/04 20:35:30 INFO - jmeter.reporters.Summariser: summary = 49761 in 00:04:33 = 182,5/s Avg: 266 Min: 0 Max: 7748 Err: 0 (0,00%)
+2017/06/04 20:35:30 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-29
+2017/06/04 20:35:30 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-29
+2017/06/04 20:35:30 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-22
+2017/06/04 20:35:30 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-22
+2017/06/04 20:35:30 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-34
+2017/06/04 20:35:30 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-34
+2017/06/04 20:35:30 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-38
+2017/06/04 20:35:30 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-38
+2017/06/04 20:35:30 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-46
+2017/06/04 20:35:30 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-46
+2017/06/04 20:35:30 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-39
+2017/06/04 20:35:30 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-39
+2017/06/04 20:35:30 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-40
+2017/06/04 20:35:30 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-40
+2017/06/04 20:35:30 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-8
+2017/06/04 20:35:30 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-8
+2017/06/04 20:35:30 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-27
+2017/06/04 20:35:30 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-27
+2017/06/04 20:35:31 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-32
+2017/06/04 20:35:31 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-32
+2017/06/04 20:35:31 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-3
+2017/06/04 20:35:31 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-3
+2017/06/04 20:35:31 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-43
+2017/06/04 20:35:31 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-43
+2017/06/04 20:35:31 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-50
+2017/06/04 20:35:31 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-50
+2017/06/04 20:35:31 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-11
+2017/06/04 20:35:31 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-11
+2017/06/04 20:35:31 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-41
+2017/06/04 20:35:31 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-41
+2017/06/04 20:35:31 INFO - jmeter.engine.StandardJMeterEngine: Notifying test listeners of end of test
+2017/06/04 20:35:31 INFO - jmeter.reporters.Summariser: summary + 289 in 00:00:02 = 147,8/s Avg: 52 Min: 0 Max: 373 Err: 0 (0,00%) Active: 0 Started: 50 Finished: 50
+2017/06/04 20:35:31 INFO - jmeter.reporters.Summariser: summary = 50050 in 00:04:35 = 182,2/s Avg: 265 Min: 0 Max: 7748 Err: 0 (0,00%)
experiments.sh 69(+40 -29)
diff --git a/experiments.sh b/experiments.sh
index fe4f861..6b88bf0 100755
--- a/experiments.sh
+++ b/experiments.sh
@@ -1,47 +1,58 @@
#!/bin/bash
+#start services manually in advance
+#mongod &
+#sudo service mysql start
-sourcefolder="adaptive-caching-framework/evaluation/Applications/"
-workloadfolder="adaptive-caching-framework/evaluation/JMeter/"
-
-configs=("NO/" "DEV/" "AP/")
+applicationfolder="/home/jhonnymertz/workspace/adaptive-caching-framework/evaluation/Applications/"
+#configs=("NO" "DEV" "AP")
+configs=("NO")
+workloadfolder="/home/jhonnymertz/workspace/adaptive-caching-framework/evaluation/JMeter/"
+jmeter="/home/jhonnymertz/dev/apache-jmeter-3.0/bin/jmeter.sh"
## take care of the order
-applications=("CloudStore" "shopizer/sm-shop" "spring-petclinic")
-databases=("CloudStore" "shopizer/sm-shop" "spring-petclinic")
-workloads=("cloudscale-sustain.jmx" "Shopizer.jmx" "petclinic_test_plan.jmx")
+#applications=("CloudStore" "shopizer/sm-shop" "spring-petclinic")
+#databases=("CloudStore" "shopizer/sm-shop" "spring-petclinic")
+#workloads=("cloudscale-sustain.jmx" "Shopizer.jmx" "petclinic_test_plan.jmx")
+applications=("spring-petclinic")
+databases=("petclinic")
+workloads=("petclinic_test_plan.jmx")
+
-## now loop through the above array
-for config in "${configs[@]}"
+numberOfExecutions=10
+for (( i=1; i <= $numberOfExecutions; ++i ))
do
- for application in "${applications[@]}"
+ ## now loop through the above array
+ for config in "${configs[@]}"
do
- echo "$sourcefolder$config$application"
-
- ## enter the folder
- cd "$sourcefolder$config$application"
-
+ for iapp in "${!applications[@]}"
+ do
+ echo "Processing ${applications[$iapp]}-$config..."
- ## clean database
- ## run database script
+ ## setup database (clean, create, populate)
+ ##todo run database config as a script
+ echo "drop database ${databases[$iapp]}" | mysql -u "root" "-proot"
+ echo "create database ${databases[$iapp]}" | mysql -u "root" "-proot"
- ## compile and run web server
- nohup mvn clean install tomcat7:run-war -DskipTests &>/dev/null &
+ ## enter the folder
+ echo "Entering into $applicationfolder$config/${applications[$iapp]}..."
+ cd "$applicationfolder$config/${applications[$iapp]}"
- sleep 4m
+ ## compile and run web server
+ mvn clean install tomcat7:run-war -DskipTests & mvnpid=$!
- ## clean jmeter results
- rm ~/Desktop/report.csv
+ ## wait for maven to compile and tomcat to run
+ sleep 1m
- ## run jmeter
- cd ~/dev/apache-jmeter-3.0/bin/
+ ## run jmeter
+ sh $jmeter -n -t $workloadfolder${workloads[$iapp]}
- ./jmeter -n -t ~/Dropbox/Mestrado/Pesquisa/adaptivecaching/evaluation/JMeter/petclinic_test_plan.jmx
+ ## copy jmeter results
+ mv /home/jhonnymertz/Desktop/report.csv /home/jhonnymertz/Desktop/${applications[$iapp]}-$config-$i.csv
- ## collect results to a shared folder
- nohup mvn clean install tomcat7:run-war -DskipTests &>/dev/null &
+ ## kill maven after all
+ kill -9 $mvnpid
- mv ~/Desktop/report.csv ~/Dropbox/Mestrado/Pesquisa/adaptivecaching/results/Experiments/CloudStore/ACOC-50U-OA.csv
-
+ done
done
done
\ No newline at end of file
framework/autonomicmanager/.idea/workspace.xml 357(+260 -97)
diff --git a/framework/autonomicmanager/.idea/workspace.xml b/framework/autonomicmanager/.idea/workspace.xml
index 702bb43..dde4625 100644
--- a/framework/autonomicmanager/.idea/workspace.xml
+++ b/framework/autonomicmanager/.idea/workspace.xml
@@ -29,12 +29,9 @@
<file leaf-file-name="TracerAspect.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/application/aspects/TracerAspect.java">
<provider selected="true" editor-type-id="text-editor">
- <state vertical-scroll-proportion="-0.2638191" vertical-offset="2550" max-vertical-offset="7200">
- <caret line="216" column="26" selection-start-line="216" selection-start-column="26" selection-end-line="216" selection-end-column="26" />
- <folding>
- <element signature="e#6350#6351#0" expanded="true" />
- <element signature="e#6380#6381#0" expanded="true" />
- </folding>
+ <state vertical-scroll-proportion="0.30150753" vertical-offset="3465" max-vertical-offset="7170">
+ <caret line="294" column="32" selection-start-line="294" selection-start-column="32" selection-end-line="294" selection-end-column="32" />
+ <folding />
</state>
</provider>
</entry>
@@ -42,8 +39,18 @@
<file leaf-file-name="pom.xml" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/pom.xml">
<provider selected="true" editor-type-id="text-editor">
- <state vertical-scroll-proportion="0.0" vertical-offset="2745" max-vertical-offset="4350">
- <caret line="198" column="21" selection-start-line="198" selection-start-column="21" selection-end-line="198" selection-end-column="21" />
+ <state vertical-scroll-proportion="0.0" vertical-offset="3952" max-vertical-offset="4350">
+ <caret line="215" column="0" selection-start-line="215" selection-start-column="0" selection-end-line="215" selection-end-column="0" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="Analyzer.java" pinned="false" current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/analysis/Analyzer.java">
+ <provider selected="true" editor-type-id="text-editor">
+ <state vertical-scroll-proportion="0.0" vertical-offset="1470" max-vertical-offset="2505">
+ <caret line="169" column="42" selection-start-line="169" selection-start-column="42" selection-end-line="169" selection-end-column="42" />
<folding />
</state>
</provider>
@@ -52,7 +59,7 @@
<file leaf-file-name="Repository.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/Repository.java">
<provider selected="true" editor-type-id="text-editor">
- <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="300">
+ <state vertical-scroll-proportion="0.0" vertical-offset="120" max-vertical-offset="300">
<caret line="10" column="14" selection-start-line="10" selection-start-column="14" selection-end-line="10" selection-end-column="14" />
<folding />
</state>
@@ -62,7 +69,7 @@
<file leaf-file-name="MongoRepository.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/MongoRepository.java">
<provider selected="true" editor-type-id="text-editor">
- <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1425">
+ <state vertical-scroll-proportion="0.0" vertical-offset="150" max-vertical-offset="1425">
<caret line="21" column="0" selection-start-line="21" selection-start-column="0" selection-end-line="21" selection-end-column="0" />
<folding />
</state>
@@ -72,12 +79,9 @@
<file leaf-file-name="ConsoleRepository.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/ConsoleRepository.java">
<provider selected="true" editor-type-id="text-editor">
- <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="525">
+ <state vertical-scroll-proportion="0.0" vertical-offset="90" max-vertical-offset="495">
<caret line="6" column="0" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
- <folding>
- <element signature="e#335#336#0" expanded="true" />
- <element signature="e#362#363#0" expanded="true" />
- </folding>
+ <folding />
</state>
</provider>
</entry>
@@ -183,42 +187,6 @@
<option name="myItemId" value="" />
<option name="myItemType" value="org.jetbrains.idea.maven.navigator.MavenProjectsStructure$RootNode" />
</PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="autonomicmanager" />
- <option name="myItemType" value="org.jetbrains.idea.maven.navigator.MavenProjectsStructure$ProjectNode" />
- </PATH_ELEMENT>
- </PATH>
- <PATH>
- <PATH_ELEMENT>
- <option name="myItemId" value="" />
- <option name="myItemType" value="org.jetbrains.idea.maven.navigator.MavenProjectsStructure$RootNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="autonomicmanager" />
- <option name="myItemType" value="org.jetbrains.idea.maven.navigator.MavenProjectsStructure$ProjectNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="Plugins" />
- <option name="myItemType" value="org.jetbrains.idea.maven.navigator.MavenProjectsStructure$PluginsNode" />
- </PATH_ELEMENT>
- </PATH>
- <PATH>
- <PATH_ELEMENT>
- <option name="myItemId" value="" />
- <option name="myItemType" value="org.jetbrains.idea.maven.navigator.MavenProjectsStructure$RootNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="autonomicmanager" />
- <option name="myItemType" value="org.jetbrains.idea.maven.navigator.MavenProjectsStructure$ProjectNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="Plugins" />
- <option name="myItemType" value="org.jetbrains.idea.maven.navigator.MavenProjectsStructure$PluginsNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="install" />
- <option name="myItemType" value="org.jetbrains.idea.maven.navigator.MavenProjectsStructure$PluginNode" />
- </PATH_ELEMENT>
</PATH>
</treeState>
</component>
@@ -616,6 +584,210 @@
<option name="myItemId" value="adaptivecaching" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="configuration" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="interfaces" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ </PATH>
+ <PATH>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="autonomicmanager" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="autonomicmanager" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="src" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="main" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="java" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="adaptivecaching" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="configuration" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="annotation" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ </PATH>
+ <PATH>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="autonomicmanager" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="autonomicmanager" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="src" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="main" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="java" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="adaptivecaching" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="cachemanager" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ </PATH>
+ <PATH>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="autonomicmanager" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="autonomicmanager" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="src" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="main" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="java" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="adaptivecaching" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="cachemanager" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="cacher" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ </PATH>
+ <PATH>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="autonomicmanager" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="autonomicmanager" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="src" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="main" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="java" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="adaptivecaching" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="analysis" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ </PATH>
+ <PATH>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="autonomicmanager" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="autonomicmanager" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="src" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="main" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="java" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="adaptivecaching" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="analysis" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="trigger" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ </PATH>
+ <PATH>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="autonomicmanager" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="autonomicmanager" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="src" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="main" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="java" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="adaptivecaching" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="analysis" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="decision" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
</PATH>
</subPane>
</pane>
@@ -624,7 +796,7 @@
</panes>
</component>
<component name="PropertiesComponent">
- <property name="last_opened_file_path" value="$PROJECT_DIR$" />
+ <property name="last_opened_file_path" value="$PROJECT_DIR$/../../../adele/iCasa" />
<property name="aspect.path.notification.shown" value="true" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="options.lastSelected" value="MavenSettings" />
@@ -1375,6 +1547,8 @@
<workItem from="1493106326395" duration="2898000" />
<workItem from="1494317842588" duration="683000" />
<workItem from="1494576216533" duration="835000" />
+ <workItem from="1496071633656" duration="1823000" />
+ <workItem from="1496215811624" duration="81000" />
</task>
<servers />
</component>
@@ -1411,11 +1585,11 @@
</history-entry>
</component>
<component name="TimeTrackingManager">
- <option name="totallyTimeSpent" value="203137000" />
+ <option name="totallyTimeSpent" value="205041000" />
</component>
<component name="ToolWindowManager">
<frame x="0" y="24" width="1366" height="744" extended-state="6" />
- <editor active="false" />
+ <editor active="true" />
<layout>
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="13" side_tool="false" content_ui="tabs" />
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
@@ -1425,10 +1599,9 @@
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.34762633" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
- <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.13595167" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+ <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.1389728" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
- <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.30015314" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
- <window_info id="Terminal" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.32924962" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
+ <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.32924962" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
<window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.24697885" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="IDEtalk Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="12" side_tool="false" content_ui="tabs" />
@@ -1437,12 +1610,13 @@
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" />
- <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.39969373" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
+ <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.39969373" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32451677" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+ <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.30015314" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32465544" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
</layout>
</component>
@@ -1473,13 +1647,6 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
- <entry file="file://$PROJECT_DIR$/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/cacher/UpdateMethodCacher.java">
- <provider selected="true" editor-type-id="text-editor">
- <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="0">
- <caret line="54" column="24" selection-start-line="54" selection-start-column="24" selection-end-line="54" selection-end-column="24" />
- </state>
- </provider>
- </entry>
<entry file="file://$PROJECT_DIR$/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/cacher/extensions/provided/Tunnel.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="0">
@@ -1657,13 +1824,6 @@
</state>
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/analysis/Analyzer.java">
- <provider selected="true" editor-type-id="text-editor">
- <state vertical-scroll-proportion="0.0" vertical-offset="719" max-vertical-offset="1740">
- <caret line="158" column="0" selection-start-line="158" selection-start-column="0" selection-end-line="158" selection-end-column="0" />
- </state>
- </provider>
- </entry>
<entry file="file://$PROJECT_DIR$/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/analysis/decision/flowchart/model/MethodEntry.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="270" max-vertical-offset="960">
@@ -1696,7 +1856,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="180">
<caret line="2" column="13" selection-start-line="2" selection-start-column="13" selection-end-line="2" selection-end-column="13" />
- <folding />
</state>
</provider>
</entry>
@@ -1704,7 +1863,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="1524" max-vertical-offset="2160">
<caret line="158" column="21" selection-start-line="158" selection-start-column="21" selection-end-line="158" selection-end-column="21" />
- <folding />
</state>
</provider>
</entry>
@@ -1712,7 +1870,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="3540">
<caret line="17" column="36" selection-start-line="17" selection-start-column="36" selection-end-line="17" selection-end-column="36" />
- <folding />
</state>
</provider>
</entry>
@@ -1720,7 +1877,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="66" max-vertical-offset="2430">
<caret line="34" column="17" selection-start-line="34" selection-start-column="17" selection-end-line="34" selection-end-column="17" />
- <folding />
</state>
</provider>
</entry>
@@ -1759,15 +1915,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="212" max-vertical-offset="825">
<caret line="41" column="8" selection-start-line="41" selection-start-column="8" selection-end-line="41" selection-end-column="8" />
- <folding />
- </state>
- </provider>
- </entry>
- <entry file="file://$PROJECT_DIR$/pom.xml">
- <provider selected="true" editor-type-id="text-editor">
- <state vertical-scroll-proportion="0.0" vertical-offset="2745" max-vertical-offset="4350">
- <caret line="198" column="21" selection-start-line="198" selection-start-column="21" selection-end-line="198" selection-end-column="21" />
- <folding />
</state>
</provider>
</entry>
@@ -1784,7 +1931,7 @@
<state vertical-scroll-proportion="-0.32360098" vertical-offset="343" max-vertical-offset="1920">
<caret line="14" column="51" selection-start-line="14" selection-start-column="51" selection-end-line="14" selection-end-column="51" />
<folding>
- <element signature="imports" expanded="true" />
+ <element signature="imports" expanded="false" />
</folding>
</state>
</provider>
@@ -1817,10 +1964,7 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="525">
<caret line="6" column="0" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
- <folding>
- <element signature="e#335#336#0" expanded="true" />
- <element signature="e#362#363#0" expanded="true" />
- </folding>
+ <folding />
</state>
</provider>
</entry>
@@ -1828,7 +1972,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.1459854" vertical-offset="0" max-vertical-offset="411">
<caret line="4" column="13" selection-start-line="4" selection-start-column="13" selection-end-line="4" selection-end-column="13" />
- <folding />
</state>
</provider>
</entry>
@@ -1840,14 +1983,34 @@
</state>
</provider>
</entry>
+ <entry file="file://$PROJECT_DIR$/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/analysis/trigger/MyJedisMonitor.java">
+ <provider selected="true" editor-type-id="text-editor">
+ <state vertical-scroll-proportion="0.54744524" vertical-offset="0" max-vertical-offset="480">
+ <caret line="16" column="47" selection-start-line="16" selection-start-column="47" selection-end-line="16" selection-end-column="47" />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/pom.xml">
+ <provider selected="true" editor-type-id="text-editor">
+ <state vertical-scroll-proportion="0.0" vertical-offset="3952" max-vertical-offset="4350">
+ <caret line="215" column="0" selection-start-line="215" selection-start-column="0" selection-end-line="215" selection-end-column="0" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/analysis/Analyzer.java">
+ <provider selected="true" editor-type-id="text-editor">
+ <state vertical-scroll-proportion="0.0" vertical-offset="1470" max-vertical-offset="2505">
+ <caret line="169" column="42" selection-start-line="169" selection-start-column="42" selection-end-line="169" selection-end-column="42" />
+ <folding />
+ </state>
+ </provider>
+ </entry>
<entry file="file://$PROJECT_DIR$/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/application/aspects/TracerAspect.java">
<provider selected="true" editor-type-id="text-editor">
- <state vertical-scroll-proportion="-0.2638191" vertical-offset="2550" max-vertical-offset="7200">
- <caret line="216" column="26" selection-start-line="216" selection-start-column="26" selection-end-line="216" selection-end-column="26" />
- <folding>
- <element signature="e#6350#6351#0" expanded="true" />
- <element signature="e#6380#6381#0" expanded="true" />
- </folding>
+ <state vertical-scroll-proportion="0.30150753" vertical-offset="3465" max-vertical-offset="7170">
+ <caret line="294" column="32" selection-start-line="294" selection-start-column="32" selection-end-line="294" selection-end-column="32" />
+ <folding />
</state>
</provider>
</entry>
diff --git a/framework/autonomicmanager/autonomicmanager.iml b/framework/autonomicmanager/autonomicmanager.iml
new file mode 100644
index 0000000..f5b0219
--- /dev/null
+++ b/framework/autonomicmanager/autonomicmanager.iml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+ <component name="FacetManager">
+ <facet type="AspectJ" name="AspectJ">
+ <configuration />
+ </facet>
+ </component>
+ <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="false">
+ <output url="file://$MODULE_DIR$/target/classes" />
+ <output-test url="file://$MODULE_DIR$/target/test-classes" />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
+ <excludeFolder url="file://$MODULE_DIR$/target" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="library" name="Maven: org.reflections:reflections:0.9.10" level="project" />
+ <orderEntry type="library" name="Maven: org.javassist:javassist:3.19.0-GA" level="project" />
+ <orderEntry type="library" name="Maven: com.google.code.findbugs:annotations:2.0.1" level="project" />
+ <orderEntry type="library" name="Maven: org.aspectj:aspectjrt:1.8.9" level="project" />
+ <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.8.9" level="project" />
+ <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.1.7" level="project" />
+ <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.1.7" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.21" level="project" />
+ <orderEntry type="library" name="Maven: junit:junit:4.12" level="project" />
+ <orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
+ <orderEntry type="library" name="Maven: org.ehcache:sizeof:0.3.0" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.5" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.7.4" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.7.0" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.7.4" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-hibernate4:2.5.3" level="project" />
+ <orderEntry type="library" name="Maven: org.mongodb:mongo-java-driver:3.2.2" level="project" />
+ <orderEntry type="library" name="Maven: org.redisson:redisson:3.1.0" level="project" />
+ <orderEntry type="library" name="Maven: javax.cache:cache-api:1.0.0" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-common:4.0.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec:4.0.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.0.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-transport:4.0.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-handler:4.0.42.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.projectreactor:reactor-stream:2.0.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: io.projectreactor:reactor-core:2.0.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.0" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.7.6" level="project" />
+ <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.15" level="project" />
+ <orderEntry type="library" name="Maven: net.openhft:zero-allocation-hashing:0.5" level="project" />
+ <orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.4.26" level="project" />
+ <orderEntry type="library" name="Maven: org.jodd:jodd-bean:3.7.1" level="project" />
+ <orderEntry type="library" name="Maven: org.jodd:jodd-core:3.7.1" level="project" />
+ <orderEntry type="library" name="Maven: com.google.guava:guava:20.0" level="project" />
+ <orderEntry type="library" name="Maven: com.github.ben-manes.caffeine:caffeine:2.3.0" level="project" />
+ <orderEntry type="library" name="Maven: net.sf.ehcache:ehcache:2.10.3" level="project" />
+ <orderEntry type="library" name="Maven: redis.clients:jedis:2.7.2" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.3" level="project" />
+ <orderEntry type="library" name="Maven: net.spy:spymemcached:2.12.1" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-core:4.2.6.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
+ <orderEntry type="library" name="Maven: org.mockito:mockito-core:2.2.11" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: net.bytebuddy:byte-buddy-agent:1.5.3" level="project" />
+ <orderEntry type="library" name="Maven: org.objenesis:objenesis:2.4" level="project" />
+ <orderEntry type="library" name="Maven: com.esotericsoftware:kryo:4.0.0" level="project" />
+ <orderEntry type="library" name="Maven: com.esotericsoftware:reflectasm:1.11.3" level="project" />
+ <orderEntry type="library" name="Maven: org.ow2.asm:asm:5.0.4" level="project" />
+ <orderEntry type="library" name="Maven: com.esotericsoftware:minlog:1.3.0" level="project" />
+ </component>
+</module>
\ No newline at end of file
framework/autonomicmanager/pom.xml 61(+2 -59)
diff --git a/framework/autonomicmanager/pom.xml b/framework/autonomicmanager/pom.xml
index 715a9cf..a9913fa 100644
--- a/framework/autonomicmanager/pom.xml
+++ b/framework/autonomicmanager/pom.xml
@@ -6,29 +6,15 @@
<groupId>br.ufrgs.inf.prosoft.adaptivecaching</groupId>
<artifactId>autonomicmanager</artifactId>
- <version>0.3.0-SNAPSHOT</version>
+ <version>0.4.0-SNAPSHOT</version>
<properties>
- <aspectj.version>1.8.9</aspectj.version>
+ <aspectj.version>1.8.10</aspectj.version>
<java.version>1.8</java.version>
</properties>
<dependencies>
- <!--<dependency>-->
- <!--<groupId>br.ufrgs.inf.prosoft.adaptivecaching</groupId>-->
- <!--<artifactId>cachemanager</artifactId>-->
- <!--<version>0.1.0</version>-->
- <!--</dependency>-->
-
- <!--<dependency>-->
- <!--<groupId>redis.clients</groupId>-->
- <!--<artifactId>jedis</artifactId>-->
- <!--<version>2.7.2</version>-->
- <!--<type>jar</type>-->
- <!--<scope>compile</scope>-->
- <!--</dependency>-->
-
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
@@ -47,12 +33,6 @@
<version>${aspectj.version}</version>
</dependency>
- <!--<dependency>-->
- <!--<groupId>org.springframework</groupId>-->
- <!--<artifactId>spring-aop</artifactId>-->
- <!--<version>4.3.0.RELEASE</version>-->
- <!--</dependency>-->
-
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
@@ -83,18 +63,6 @@
<version>0.3.0</version>
</dependency>
- <!--<dependency>-->
- <!--<groupId>org.springframework.boot</groupId>-->
- <!--<artifactId>spring-boot-starter</artifactId>-->
- <!--<version>1.3.5.RELEASE</version>-->
- <!--</dependency>-->
-
- <!--<dependency>-->
- <!--<groupId>org.springframework.data</groupId>-->
- <!--<artifactId>spring-data-mongodb</artifactId>-->
- <!--<version>1.9.2.RELEASE</version>-->
- <!--</dependency>-->
-
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
@@ -119,13 +87,6 @@
<!--<version>0.34</version>-->
<!--</dependency>-->
-
- <!--<dependency>-->
- <!--<groupId>com.jcabi</groupId>-->
- <!--<artifactId>jcabi-aspects</artifactId>-->
- <!--<version>0.22.5</version>-->
- <!--</dependency>-->
-
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
@@ -196,12 +157,6 @@
<version>4.2.6.RELEASE</version>
</dependency>
- <!--<dependency>-->
- <!--<groupId>org.springframework.data</groupId>-->
- <!--<artifactId>spring-data-redis</artifactId>-->
- <!--<version>1.7.2.RELEASE</version>-->
- <!--</dependency>-->
-
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
@@ -228,18 +183,6 @@
<useIncrementalCompilation>false</useIncrementalCompilation>
</configuration>
</plugin>
- <!--<plugin>-->
- <!--<artifactId>maven-dependency-plugin</artifactId>-->
- <!--<version>2.5.1</version>-->
- <!--<executions>-->
- <!--<execution>-->
- <!--<id>getClasspathFilenames</id>-->
- <!--<goals>-->
- <!--<goal>properties</goal>-->
- <!--</goals>-->
- <!--</execution>-->
- <!--</executions>-->
- <!--</plugin>-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
framework/autonomicmanager/README.md 111(+111 -0)
diff --git a/framework/autonomicmanager/README.md b/framework/autonomicmanager/README.md
index e69de29..6592296 100644
--- a/framework/autonomicmanager/README.md
+++ b/framework/autonomicmanager/README.md
@@ -0,0 +1,111 @@
+APL Cache
+=========
+#todo presentation
+
+#todo describe the features
+
+#todo put the image of the architecture
+
+Requirements
+------------
+If you are using Gradle/Maven, see example below:
+
+##### Gradle
+In your `build.gradle`:
+```groovy
+ allprojects {
+ repositories {
+ maven { url "https://jitpack.io" }
+ }
+ }
+
+ dependencies {
+ compile 'com.github.jhonnymertz:java-wkhtmltopdf-wrapper:1.0.2-RELEASE'
+ }
+```
+
+##### Maven
+In your `pom.xml`:
+```xml
+ <dependencies>
+ <dependency>
+ <groupId>com.github.jhonnymertz</groupId>
+ <artifactId>java-wkhtmltopdf-wrapper</artifactId>
+ <version>1.0.2-RELEASE</version>
+ </dependency>
+ </dependencies>
+
+ <repositories>
+ <repository>
+ <id>jitpack.io</id>
+ <url>https://jitpack.io</url>
+ </repository>
+ </repositories>
+```
+
+Usage
+------------
+
+Create a file adaptivecaching.properties under resources folder
+```
+#Cache config
+#Redis:
+#adaptivecaching.cache.url=localhost
+#adaptivecaching.cache.port=6379
+
+#Logging
+adaptivecaching.cache.logging=DEBUG
+adaptivecaching.monitoring.logging=DEBUG
+
+#Repository config:
+##MongoDB:
+adaptivecaching.monitoring.db.scheme=cachemonitoring
+adaptivecaching.monitoring.db.name=petclinic
+adaptivecaching.monitoring.db.port=27017
+adaptivecaching.monitoring.db.address=localhost
+
+##Redis:
+#adaptivecaching.monitoring.db.scheme=yourdb
+
+#adaptivecaching.monitoring.db.port=27017
+#adaptivecaching.monitoring.db.address=localhost
+```
+
+Then, create a configuration class, on the root package of the system:
+```
+//working config: mongodb, accumulation
+@AdaptiveCaching(cacheProvider = CacheProviderType.EHCACHE, logRepository = RepositoryType.MONGODB,
+ modelling = Modelling.ACCUMULATION, analyzerEnabled = false, enabled = true, disableMonitoringAfterAnalysis = true,
+ clearMonitoringDataOnStart = true, traceAsync = false, tracerEnabled = true)
+
+//Jhonny: workaround below. a better solution involve filter by serialization methods in aspect to avoid it
+@ComponentScan(allowed = "org.springframework.samples.petclinic", denied = "org.springframework.samples.petclinic.model")
+public class Configuration {
+}
+```
+
+Available annotations
+---------
+@AdaptiveCaching
+ cacheProvider = CacheProviderType.EHCACHE, logRepository = RepositoryType.MONGODB,
+ modelling = Modelling.ACCUMULATION, analyzerEnabled = false, enabled = true, disableMonitoringAfterAnalysis = true,
+ clearMonitoringDataOnStart = true, traceAsync = false, tracerEnabled = true
+
+@ComponentScan
+ allowed = "org.springframework.samples.petclinic", denied = "org.springframework.samples.petclinic.model"
+
+
+Customizations
+---------
+
+Repository - Repository
+Caching - CacheManager interface
+
+Snapshots
+---------
+
+Snapshots built from the `master` branch are available through jitpack using version `1.1.0-SNAPSHOT`
+
+License
+------------
+This project is available under MIT Licence.
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/analysis/Analyzer.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/analysis/Analyzer.java
index abaa003..bc05fe2 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/analysis/Analyzer.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/analysis/Analyzer.java
@@ -104,8 +104,23 @@ public class Analyzer implements Runnable {
}
@Override
- public long expiry() {
- return 0;
+ public long expiryInterval() {
+ return 5;
+ }
+
+ @Override
+ public long firstExpiry() {
+ return 5;
+ }
+
+ @Override
+ public long analysisInterval() {
+ return 5;
+ }
+
+ @Override
+ public long firstAnalysis() {
+ return 2;
}
@Override
@@ -139,6 +154,11 @@ public class Analyzer implements Runnable {
}
@Override
+ public boolean enableBlacklist() {
+ return false;
+ }
+
+ @Override
public boolean tracerEnabled() {
return true;
}
@@ -157,7 +177,7 @@ public class Analyzer implements Runnable {
@Override
public void run() {
- if(!TracerAspect.analyzerEnabled) {
+ if (!TracerAspect.analyzerEnabled) {
logger.info("Analyzer disabled, not running...");
return;
}
@@ -186,7 +206,7 @@ public class Analyzer implements Runnable {
logger.info("Old monitoring data deleted.");
}
- if(adaptiveConfig.analyzeOnce())
+ if (adaptiveConfig.analyzeOnce())
TracerAspect.analyzerEnabled = false;
}
@@ -199,7 +219,7 @@ public class Analyzer implements Runnable {
CacheabilityPatternDecider decider = new CacheabilityPatternDecider(logList.size());
FlowchartWorkFlow workflow = new FlowchartWorkFlow(decider, cacheInfo, logList);
- Set<MethodEntry> process = workflow.filterCacheableMethods(adaptiveConfig.expiry());
+ Set<MethodEntry> process = workflow.filterCacheableMethods(adaptiveConfig.expiryInterval());
logger.info(process.size() + " cacheable methods identified.");
// //TODO find by annotations @Ignore and remove the methods marked
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/cacher/key/Key.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/cacher/key/Key.java
index f7c6032..c73bafd 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/cacher/key/Key.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/cacher/key/Key.java
@@ -1,6 +1,5 @@
package br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.cacher.key;
-import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.cacher.UpdateMethodCacher;
import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.util.Mnemos;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.reflect.MethodSignature;
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/extensions/caffeine/CaffeineCache.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/extensions/caffeine/CaffeineCache.java
index 364da3a..ebd0332 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/extensions/caffeine/CaffeineCache.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/extensions/caffeine/CaffeineCache.java
@@ -16,8 +16,8 @@
package br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.extensions.caffeine;
-import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.util.support.AbstractValueAdaptingCache;
-import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.util.support.ValueWrapper;
+import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.model.support.AbstractValueAdaptingCache;
+import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.model.ValueWrapper;
import com.github.benmanes.caffeine.cache.LoadingCache;
import org.springframework.lang.UsesJava8;
import org.springframework.util.Assert;
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/extensions/ehcache/EhCacheCache.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/extensions/ehcache/EhCacheCache.java
index 1809067..c247f62 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/extensions/ehcache/EhCacheCache.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/extensions/ehcache/EhCacheCache.java
@@ -17,8 +17,8 @@
package br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.extensions.ehcache;
import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.model.Cache;
-import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.util.support.SimpleValueWrapper;
-import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.util.support.ValueWrapper;
+import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.model.support.SimpleValueWrapper;
+import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.model.ValueWrapper;
import net.sf.ehcache.Ehcache;
import net.sf.ehcache.Element;
import net.sf.ehcache.Status;
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/extensions/guava/GuavaCache.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/extensions/guava/GuavaCache.java
index 9bf32ae..3283b9a 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/extensions/guava/GuavaCache.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/extensions/guava/GuavaCache.java
@@ -16,8 +16,8 @@
package br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.extensions.guava;
-import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.util.support.AbstractValueAdaptingCache;
-import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.util.support.ValueWrapper;
+import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.model.support.AbstractValueAdaptingCache;
+import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.model.ValueWrapper;
import com.google.common.cache.CacheStats;
import com.google.common.cache.LoadingCache;
import com.google.common.util.concurrent.UncheckedExecutionException;
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/model/AdaptiveCacheManager.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/model/AdaptiveCacheManager.java
index 0e553db..3e2b2ee 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/model/AdaptiveCacheManager.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/model/AdaptiveCacheManager.java
@@ -10,6 +10,7 @@ import java.util.Collection;
// NoOpCacheManager, SimpleCacheManager, TransactionAwareCacheManagerProxy
//For future use, do not use it yet
+@Deprecated
public class AdaptiveCacheManager implements CacheManager {
private CacheManager cacheManager;
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/model/Cache.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/model/Cache.java
index a96e3e7..29932e3 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/model/Cache.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/model/Cache.java
@@ -16,8 +16,6 @@
package br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.model;
-import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.util.support.ValueWrapper;
-
import java.util.concurrent.Callable;
/**
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/model/support/AbstractValueAdaptingCache.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/model/support/AbstractValueAdaptingCache.java
index 233a73c..40454fc 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/model/support/AbstractValueAdaptingCache.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/model/support/AbstractValueAdaptingCache.java
@@ -17,7 +17,6 @@
package br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.model.support;
import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.model.Cache;
-import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.model.NullValue;
import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.model.ValueWrapper;
/**
@@ -26,7 +25,7 @@ import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.model.ValueWrapper;
* passing them on to the underlying store.
* <p>
* <p>Transparently replaces given {@code null} user values with an internal
- * {@link br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.model.NullValue#INSTANCE}, if configured to support {@code null} values
+ * {@link NullValue#INSTANCE}, if configured to support {@code null} values
* (as indicated by {@link #isAllowNullValues()}.
*
* @author Juergen Hoeller
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/configuration/annotation/AdaptiveCaching.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/configuration/annotation/AdaptiveCaching.java
index e56df39..d76b790 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/configuration/annotation/AdaptiveCaching.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/configuration/annotation/AdaptiveCaching.java
@@ -12,7 +12,10 @@ import java.lang.annotation.*;
@Documented
public @interface AdaptiveCaching {
+ //enabling configurations
boolean enabled() default true;
+ boolean tracerEnabled() default true;
+ boolean analyzerEnabled() default true;
RepositoryType logRepository() default RepositoryType.MONGODB;
@@ -20,21 +23,26 @@ public @interface AdaptiveCaching {
Modelling modelling() default Modelling.ACCUMULATION;
- long expiry() default 5; //in minutes
+ long expiryInterval() default 5; //in minutes
+ long firstExpiry() default 6; //in minutes
+
+ //todo when analysis based on trigger do not make sense to have this, its similar to trigger by time
+ @Deprecated long analysisInterval() default 5; //in minutes
+ @Deprecated long firstAnalysis() default 2; //in minutes
TriggerType triggerType() default TriggerType.TIME; //if were not by time, load the class that implements the interface @Trigger
long triggerTime() default 5; //in minutes
- boolean analyzerEnabled() default true;
+ //enables the analyzer to be executed just once
+ boolean analyzeOnce() default false;
+ //disable the monitoring after the first analyses
boolean disableMonitoringAfterAnalysis() default false;
- boolean traceAsync() default true;
-
+ @Deprecated boolean traceAsync() default true;
boolean clearMonitoringDataOnStart() default false;
- boolean tracerEnabled() default true;
-
- boolean analyzeOnce() default false;
+ //when a method cannot be traced, any future calls can be blacklisted
+ boolean enableBlacklist() default false;
}
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/configuration/annotation/Cacheable.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/configuration/annotation/Cacheable.java
index 62aead3..449a131 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/configuration/annotation/Cacheable.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/configuration/annotation/Cacheable.java
@@ -8,6 +8,10 @@ import java.lang.annotation.*;
//TODO parser such annotation on flowchart caching decision
public @interface Cacheable {
boolean value();
- boolean expensive();
- boolean frequent();
+ boolean statical() default false;
+ boolean lessChanging() default false;
+ boolean frequent() default false;
+ boolean shareable() default false;
+ boolean expensive() default false;
+ boolean large() default false;
}
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/configuration/annotation/types/RepositoryType.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/configuration/annotation/types/RepositoryType.java
index 5b379d5..f2f4033 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/configuration/annotation/types/RepositoryType.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/configuration/annotation/types/RepositoryType.java
@@ -3,7 +3,7 @@ package br.ufrgs.inf.prosoft.adaptivecaching.configuration.annotation.types;
public enum RepositoryType {
MONGODB,
TEXTFILE,
- MEMORY,
- CONSOLE,
+ @Deprecated MEMORY,
+ @Deprecated CONSOLE,
REDIS;
}
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/configuration/annotation/Uncacheable.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/configuration/annotation/Uncacheable.java
index 70014a2..f0d901d 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/configuration/annotation/Uncacheable.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/configuration/annotation/Uncacheable.java
@@ -5,5 +5,8 @@ import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
+/**
+ * When placed in the method, it invalidates any call of such method to be considered as cacheable
+ */
public @interface Uncacheable {
}
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/exceptions/CacheProviderException.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/exceptions/CacheProviderException.java
index b54f147..b71b48a 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/exceptions/CacheProviderException.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/exceptions/CacheProviderException.java
@@ -1,7 +1,16 @@
package br.ufrgs.inf.prosoft.adaptivecaching.exceptions;
-/**
- * Created by jhonnymertz on 04/06/17.
- */
-public class CacheProviderException {
+public class CacheProviderException extends RuntimeException {
+
+ public CacheProviderException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public CacheProviderException(Throwable cause) {
+ super(cause);
+ }
+
+ public CacheProviderException(String message) {
+ super(message);
+ }
}
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/exceptions/StorageException.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/exceptions/StorageException.java
index 9fef947..3efdec5 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/exceptions/StorageException.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/exceptions/StorageException.java
@@ -9,4 +9,8 @@ public class StorageException extends RuntimeException {
public StorageException(Throwable cause) {
super(cause);
}
+
+ public StorageException(String message) {
+ super(message);
+ }
}
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/application/aspects/TracerAspect.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/application/aspects/TracerAspect.java
index 9ce36a6..3023e29 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/application/aspects/TracerAspect.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/application/aspects/TracerAspect.java
@@ -2,34 +2,30 @@ package br.ufrgs.inf.prosoft.adaptivecaching.monitoring.application.aspects;
import br.ufrgs.inf.prosoft.adaptivecaching.analysis.Analyzer;
import br.ufrgs.inf.prosoft.adaptivecaching.analysis.decision.flowchart.model.MethodEntry;
+import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.util.CacheManagerFactory;
import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.cacher.key.Key;
-import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.extensions.ehcache.EhCacheCache;
-import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.extensions.ehcache.EhCacheCacheManager;
-import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.extensions.guava.GuavaCache;
-import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.extensions.guava.GuavaCacheManager;
import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.model.Cache;
import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.model.CacheManager;
-import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.util.support.ValueWrapper;
+import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.model.ValueWrapper;
import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.util.threads.NamedThreads;
import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.util.threads.VerboseRunnable;
import br.ufrgs.inf.prosoft.adaptivecaching.configuration.annotation.AdaptiveCaching;
import br.ufrgs.inf.prosoft.adaptivecaching.configuration.annotation.ComponentScan;
-import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.application.customization.AnonymousUserGetter;
-import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.application.customization.SpringUserGetter;
-import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.application.customization.UserGetter;
+import br.ufrgs.inf.prosoft.adaptivecaching.exceptions.CacheProviderException;
+import br.ufrgs.inf.prosoft.adaptivecaching.exceptions.ConfigurationException;
+import br.ufrgs.inf.prosoft.adaptivecaching.exceptions.StorageException;
import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.application.metadata.LogTrace;
import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.application.metadata.MethodInfo;
+import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.application.usersession.UserGetter;
+import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.application.usersession.UserGetterFactory;
import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.cache.CacheMonitor;
-import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.cache.vendors.ehcache.EhCacheMonitor;
-import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.cache.vendors.guava.GuavaMonitor;
-import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.storage.*;
+import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.cache.CacheMonitorFactory;
+import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.storage.MongoRepository;
+import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.storage.Repository;
+import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.storage.RepositoryFactory;
import com.mongodb.MongoClient;
import com.mongodb.MongoTimeoutException;
import com.mongodb.client.MongoDatabase;
-import net.sf.ehcache.config.CacheConfiguration;
-import net.sf.ehcache.config.PersistenceConfiguration;
-import net.sf.ehcache.management.ManagementService;
-import net.sf.ehcache.store.MemoryStoreEvictionPolicy;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
@@ -43,10 +39,7 @@ import org.reflections.util.ConfigurationBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.management.MBeanServer;
-import java.io.File;
import java.io.IOException;
-import java.lang.management.ManagementFactory;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -94,26 +87,28 @@ public class TracerAspect {
"tracing methods"
));
Logger logger = LoggerFactory.getLogger(TracerAspect.class);
- private Repository repository;
- private List<String> allowedPackages;
- private List<String> notAllowedPackages;
+
+ //traceable configuration
+ private String[] allowed;
+ private String[] notAllowed;
+
+ //caching components
private CacheManager cacheManager;
private Cache cache;
private CacheMonitor cacheMonitor;
- private Analyzer analyzer;
+
+ //adaptive caching configurations
private AdaptiveCaching cachingConfig;
private Properties properties;
private UserGetter userGetter;
+ private Repository repository;
private List<LogTrace> tempTraces;
+
+ //stats
private int count;
private long hashAndStructureTime;
private long traceTime;
- //TODO Decouple repository from this
- public TracerAspect() throws IOException {
- initialize();
- }
-
@Pointcut(
//any execution except the own framework
"(execution(!void *(..)) && !within(br.ufrgs.inf.prosoft.adaptivecaching..*) " +
@@ -130,178 +125,83 @@ public class TracerAspect {
return enabled;
}
+ //TODO Decouple repository from this
+ public TracerAspect() throws IOException {
+ initialize();
+ }
+
private void initialize() throws IOException {
+ try {
+ Class<?> configClass = getAvailableConfigurationClass();
+ cachingConfig = configClass.getAnnotation(AdaptiveCaching.class);
+ logger.info("AdaptiveCaching found, loading options...");
+
+ if (!cachingConfig.enabled()) {
+ turnoff();
+ logger.info("Adaptive caching disabled manually on @AdaptiveCaching.");
+ return;
+ }
- //TODO Decouple
- Reflections reflections = new Reflections(
- new ConfigurationBuilder()
- .setUrls(ClasspathHelper.forClassLoader())
- .setScanners(new SubTypesScanner(false), new ResourcesScanner(), new TypeAnnotationsScanner()));
+ //getting allowed packages from @ComponentScan
+ ComponentScan componentScanConfig = configClass.getAnnotation(ComponentScan.class);
+ if (componentScanConfig == null) {
+ //if not specified, it assumes the same package where @AdaptiveCaching were declared
+ allowed = new String[]{configClass.getPackage().getName()};
+ //logger.error("ComponenScan for AdaptiveCaching not found, adaptive caching disabled.");
+ //enabled = false;
+ //return;
+ }
+ allowed = componentScanConfig.allowed();
+ notAllowed = componentScanConfig.denied();
+ logger.info("@AdaptiveCaching will trace and cache methods into {} packages...", allowed);
- //loading @AdaptiveCaching
- Set<Class<?>> configurations =
- reflections.getTypesAnnotatedWith(AdaptiveCaching.class);
- if (configurations.isEmpty()) {
- logger.error("@AdaptiveCaching not found, adaptive caching disabled.");
- enabled = false;
- return;
- }
- if (configurations.size() > 1) {
- logger.error("@AdaptiveCaching has too many definitions, adaptive caching disabled.");
- enabled = false;
- return;
- }
- Class<?> configClass = configurations.iterator().next();
- AdaptiveCaching adaptiveConfig = configClass.getAnnotation(AdaptiveCaching.class);
- cachingConfig = adaptiveConfig;
- logger.info("AdaptiveCaching found, loading options...");
-
- if (!cachingConfig.enabled()) {
- logger.error("Adaptive caching disabled manually on @AdaptiveCaching.");
- return;
- }
+ //todo load uncacheable annotation and methods and add to the blacklist
+ //todo load cacheable annotation and methods and add to the must-cache list
- //getting allowed packages from @ComponentScan
- ComponentScan componentScanConfig = configClass.getAnnotation(ComponentScan.class);
- if (componentScanConfig == null) {
- //TODO if not specified, it assumes the same package where @AdaptiveCaching were declared
- logger.error("ComponenScan for AdaptiveCaching not found, adaptive caching disabled.");
- enabled = false;
- return;
- }
+ if (cachingConfig.tracerEnabled()) {
- allowedPackages = Arrays.asList(componentScanConfig.allowed());
- notAllowedPackages = Arrays.asList(componentScanConfig.denied());
- logger.info("@AdaptiveCaching will trace and cache methods into {} packages...", allowedPackages);
-
- if (adaptiveConfig.tracerEnabled()) {
- //setting up the repository
- properties = new Properties();
- //file location:
- //System.out.println(getClass().getClassLoader().getResource("adaptivecaching.properties").getPath());
- properties.load(getClass().getClassLoader().getResourceAsStream("adaptivecaching.properties"));
- if (properties == null || properties.isEmpty()) {
- logger.error("adaptivecaching.properties is not defined, adaptive caching disabled.");
- enabled = false;
- } else
- logger.info("adaptivecaching.properties found, loading properties...");
-
- switch (cachingConfig.logRepository()) {
- case MONGODB:
- //TODO decoupĺe this with a factory
- try {
- MongoClient mongo = new MongoClient(properties.getProperty("adaptivecaching.monitoring.db.address"), Integer.parseInt(properties.getProperty("adaptivecaching.monitoring.db.port")));
- MongoDatabase database = mongo.getDatabase(properties.getProperty("adaptivecaching.monitoring.db.scheme"));
- repository = new MongoRepository<LogTrace>(database.getCollection(properties.getProperty("adaptivecaching.monitoring.db.name")), LogTrace.class);
- logger.info("Repository is configured to MongoDB: " + repository.toString());
- } catch (MongoTimeoutException e) {
- logger.error("Cannot connect with MongoDB with the defined properties, adaptive caching disabled.", e);
- tracerEnabled = false;
- }
+ //setting up the repository
+ properties = getPropertiesFile();
+ if (properties == null || properties.isEmpty()) {
+ logger.error("adaptivecaching.properties is not defined, adaptive caching disabled.");
+ enabled = false;
+ } else
+ logger.info("adaptivecaching.properties found, loading properties...");
- break;
- case REDIS:
- //TODO decouple it from redis and get of properties
- repository = new RedisRepository<LogTrace>();
- logger.debug("Repository is configured to Redis.");
- break;
- case TEXTFILE:
- AsyncFileWriter as = new AsyncFileWriter(new File("traces.txt"));
- as.open();
- repository = as;
- break;
- case MEMORY:
- //TODO log a warning because memory can take too much from the application...
- repository = new MemoryRepository<LogTrace>();
- logger.debug("Repository is configured to save logs in Memory.");
- break;
- case CONSOLE:
- repository = new ConsoleRepository<LogTrace>();
- logger.debug("Repository is configured to just show logs in console.");
- break;
- }
- if (cachingConfig.clearMonitoringDataOnStart()) {
- repository.removeAll();
- logger.debug("Repository starting cleaned.");
- }
+ repository = RepositoryFactory.getRepository(properties, cachingConfig.logRepository());
- //TODO switch and build
- try {
- userGetter = new SpringUserGetter();
- } catch (Exception e) {
- userGetter = new AnonymousUserGetter();
- }
+ if (cachingConfig.clearMonitoringDataOnStart()) {
+ repository.removeAll();
+ logger.debug("Repository starting cleaned.");
+ }
- } else tracerEnabled = false;
-
- switch (cachingConfig.cacheProvider()) {
- case GUAVA:
- this.cacheManager = new GuavaCacheManager();
- this.cache = cacheManager.getCache("test");
- this.cacheMonitor = new GuavaMonitor((GuavaCache) this.cache);
- logger.debug("Cache provider is configured to Guava.");
- break;
- case MEMCACHED:
- break;
- case REDIS:
- //redis cache manager
-// JedisConnectionFactory cf = new JedisConnectionFactory();
-// cf.setHostName("127.0.0.1");
-// cf.setPort(6379);
-// RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>();
-// redisTemplate.setConnectionFactory(cf);
-// RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate);
-// redisCacheManager.setDefaultExpiration(300);
-// this.cacheManager = redisCacheManager;
-// this.cache = redisCacheManager.getCache("test");
- break;
- case CAFFEINE:
- break;
- case EHCACHE:
- net.sf.ehcache.CacheManager cm = net.sf.ehcache.CacheManager.newInstance();
-
- //monitoring hit and miss ratio:
- MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
- ManagementService.registerMBeans(cm, mBeanServer, false, false, false, true);
-
- //Create a Cache specifying its configuration.
- net.sf.ehcache.Cache adaptiveCache = new net.sf.ehcache.Cache(
- new CacheConfiguration("adaptivecaching", 10000)
- .memoryStoreEvictionPolicy(MemoryStoreEvictionPolicy.LRU)
- .eternal(true)
- .overflowToOffHeap(false)
- .persistence(new PersistenceConfiguration().strategy(PersistenceConfiguration.Strategy.NONE)));
- cm.addCache(adaptiveCache);
- this.cacheManager = new EhCacheCacheManager(cm);
- this.cache = cacheManager.getCache("adaptivecaching");
- this.cacheMonitor = new EhCacheMonitor((EhCacheCache) this.cache);
- logger.debug("Cache provider is configured to EhCache.");
- break;
- }
+ //TODO switch and build: pass a parameter and build
+ userGetter = UserGetterFactory.getInstance();
- //TODO load another options from @AdaptiveCaching
+ } else tracerEnabled = false;
- //TODO get time from properties or see the external process
- if (adaptiveConfig.analyzerEnabled()) {
- TracerAspect.analyzerEnabled = true;
- //TODO trigger by time
- //maybe we should kill it or delete the object?
- analyzerExecutor.scheduleWithFixedDelay(new Analyzer(repository, cacheMonitor.getCacheInfo(), adaptiveConfig), 2, 5, TimeUnit.MINUTES);
- }
+ this.cacheManager = CacheManagerFactory.getCacheManager(cachingConfig.cacheProvider());
+ this.cache = cacheManager.getCache("adaptivecaching");
+ this.cacheMonitor = CacheMonitorFactory.getCacheMonitor(this.cache, cachingConfig.cacheProvider());
- //TODO trigger by time
- this.expirationExecutor.scheduleWithFixedDelay(
- new VerboseRunnable(
- new Runnable() {
- @Override
- public void run() {
- TracerAspect.this.clean();
- }
- }
- ),
- 6, adaptiveConfig.expiry(), TimeUnit.MINUTES
- );
+ //TODO load another options from @AdaptiveCaching
+
+ //TODO get time from properties or see the external process
+ if (cachingConfig.analyzerEnabled()) {
+ TracerAspect.analyzerEnabled = true;
+ //TODO trigger by time
+ //maybe we should kill it or delete the object?
+ analyzerExecutor.scheduleWithFixedDelay(
+ new Analyzer(repository, cacheMonitor.getCacheInfo(), cachingConfig),
+ cachingConfig.firstAnalysis(), cachingConfig.analysisInterval(), TimeUnit.MINUTES);
+ }
+
+ //TODO trigger by time
+ this.expirationExecutor.scheduleWithFixedDelay(
+ new VerboseRunnable(() -> TracerAspect.this.clean()),
+ cachingConfig.firstExpiry(), cachingConfig.expiryInterval(), TimeUnit.MINUTES
+ );
// if (adaptiveConfig.analyzerEnabled()) {
// this.loaderExecutor.scheduleWithFixedDelay(
@@ -315,25 +215,36 @@ public class TracerAspect {
// 10, 5, TimeUnit.SECONDS
// );
- methodBlackList = new ArrayList<>();
- tempTraces = Collections.synchronizedList(new ArrayList<>());
+ methodBlackList = new ArrayList<>();
+ tempTraces = Collections.synchronizedList(new ArrayList<>());
+
+
+ } catch (ConfigurationException e) {
+ turnoff();
+ logger.error("An error was found while trying to get the AdaptiveCaching annotation.", e);
+ } catch (StorageException e) {
+ turnoff();
+ logger.error("Cannot connect with the specified repository, adaptive caching disabled.", e);
+ } catch (CacheProviderException e) {
+ turnoff();
+ logger.error("Cannot connect with the specified cache, adaptive caching disabled.", e);
+ }
}
+
@Around("anyCall()")
public Object aroundMethods(ProceedingJoinPoint joinPoint) throws Throwable {
//see if a method is being caught
-// if (joinPoint.getSignature().toLongString().contains("findOwnerById")) {
-// System.out.println("pointcut: " + joinPoint);
-// for (StackTraceElement st : new Throwable().getStackTrace()){
-// System.out.println(st.getClassName() + ":" + st.getMethodName());
-// }
-// }
+ //traceSpecificMethod(joinPoint);
+
+ if (tracerEnabled) {
+
+ //generate a hash of the method that will be used as: key to cache and compare if the method is allowed or not
- //when method cached, no trace will be generated
- //caching methods
- //todo optimize this logic to build and compare methods
- if (cacheableMethods != null) {
+ //when method cached, no trace will be generated
+ //caching methods
+ //todo optimize this logic to build and compare methods
for (MethodEntry methodAnalysis : cacheableMethods) {
if (joinPoint.getSignature().toLongString().equals(methodAnalysis.getMethodInfo().getSignature())) {
@@ -350,30 +261,28 @@ public class TracerAspect {
}
}
}
+
+ if (isAllowed(joinPoint)) trace(joinPoint);
}
+ return joinPoint.proceed();
+ }
- for (String p : notAllowedPackages) {
+ private boolean isAllowed(ProceedingJoinPoint joinPoint) throws Throwable {
+ for (String p : notAllowed) {
//toString to avoid get the return class as a false positive
if (joinPoint.getSignature().toString().contains(p)) {
- return joinPoint.proceed();
+ return false;
}
}
//trace only allowed packages
- boolean shouldTrace = false;
- for (String p : allowedPackages) {
+ for (String p : allowed) {
if (joinPoint.getSignature().toLongString().contains(p)
&& !methodBlackList.contains(joinPoint.getSignature().toLongString()))
- shouldTrace = true;
- break;
+ return true;
}
- if (!shouldTrace)
- return joinPoint.proceed();
- if (tracerEnabled)
- return trace(joinPoint);
- else
- return joinPoint.proceed();
+ return false;
}
private Object trace(ProceedingJoinPoint joinPoint) throws Throwable {
@@ -519,11 +428,43 @@ public class TracerAspect {
TracerAspect.tracerEnabled = true;
}
- //see if a method is being caught
-// if (joinPoint.getSignature().toLongString().contains("showVetList")) {
-// System.out.println("pointcut: " + joinPoint);
-// for (StackTraceElement st : new Throwable().getStackTrace()){
-// System.out.println(st.getClassName());
-// }
-// }
-}
+ private Class<?> getAvailableConfigurationClass() {
+ //TODO Decouple??
+ Reflections reflections = new Reflections(
+ new ConfigurationBuilder()
+ .setUrls(ClasspathHelper.forClassLoader())
+ .setScanners(new SubTypesScanner(false), new ResourcesScanner(), new TypeAnnotationsScanner()));
+
+ //loading @AdaptiveCaching
+ Set<Class<?>> configurations =
+ reflections.getTypesAnnotatedWith(AdaptiveCaching.class);
+ if (configurations.isEmpty())
+ throw new ConfigurationException("@AdaptiveCaching not found, adaptive caching disabled.");
+ if (configurations.size() > 1)
+ throw new ConfigurationException("@AdaptiveCaching has too many definitions, adaptive caching disabled.");
+ return configurations.iterator().next();
+ }
+
+ private void turnoff() {
+ enabled = false;
+ tracerEnabled = false;
+ analyzerEnabled = false;
+ }
+
+ private Properties getPropertiesFile() throws IOException {
+ Properties properties = new Properties();
+ //file location:
+ //System.out.println(getClass().getClassLoader().getResource("adaptivecaching.properties").getPath());
+ properties.load(getClass().getClassLoader().getResourceAsStream("adaptivecaching.properties"));
+ return properties;
+ }
+
+ private void traceSpecificMethod(ProceedingJoinPoint joinPoint) {
+ if (joinPoint.getSignature().toLongString().contains("findOwnerById")) {
+ System.out.println("pointcut: " + joinPoint);
+ for (StackTraceElement st : new Throwable().getStackTrace()) {
+ System.out.println(st.getClassName() + ":" + st.getMethodName());
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/application/usersession/UserGetterFactory.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/application/usersession/UserGetterFactory.java
index 4f398f3..a5b553f 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/application/usersession/UserGetterFactory.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/application/usersession/UserGetterFactory.java
@@ -1,7 +1,17 @@
package br.ufrgs.inf.prosoft.adaptivecaching.monitoring.application.usersession;
-/**
- * Created by jhonnymertz on 05/06/17.
- */
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
public class UserGetterFactory {
+
+ static Logger logger = LoggerFactory.getLogger(UserGetterFactory.class);
+
+ public static UserGetter getInstance() {
+ try {
+ return new SpringUserGetter();
+ } catch (Exception e) {
+ return new AnonymousUserGetter();
+ }
+ }
}
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/cache/CacheInfo.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/cache/CacheInfo.java
index 423a636..df6b2d4 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/cache/CacheInfo.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/cache/CacheInfo.java
@@ -12,7 +12,7 @@ public class CacheInfo {
private long currentTime;
- //TODO maybe it would be necessary a var to expired keys, which is different from evicted (redis has, memcached not)
+ //TODO maybe it would be necessary a var to expired keys, which are different from evicted keys (redis has, memcached not)
private Long evictedKeys;
private Long keyspaceHits;
private Long keyspaceMisses;
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/cache/CacheMonitorFactory.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/cache/CacheMonitorFactory.java
index 33cead8..c697d21 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/cache/CacheMonitorFactory.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/cache/CacheMonitorFactory.java
@@ -1,7 +1,43 @@
package br.ufrgs.inf.prosoft.adaptivecaching.monitoring.cache;
-/**
- * Created by jhonnymertz on 04/06/17.
- */
+import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.extensions.ehcache.EhCacheCache;
+import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.extensions.guava.GuavaCache;
+import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.model.Cache;
+import br.ufrgs.inf.prosoft.adaptivecaching.configuration.annotation.types.CacheProviderType;
+import br.ufrgs.inf.prosoft.adaptivecaching.exceptions.CacheProviderException;
+import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.cache.vendors.ehcache.EhCacheMonitor;
+import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.cache.vendors.guava.GuavaMonitor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
public class CacheMonitorFactory {
+
+ static Logger logger = LoggerFactory.getLogger(CacheMonitorFactory.class);
+
+ public static CacheMonitor getCacheMonitor(Cache cache, CacheProviderType cacheProviderType) {
+ switch (cacheProviderType) {
+ case GUAVA:
+ return new GuavaMonitor((GuavaCache) cache);
+// case MEMCACHED:
+// break;
+// case REDIS:
+ //redis cache manager
+// JedisConnectionFactory cf = new JedisConnectionFactory();
+// cf.setHostName("127.0.0.1");
+// cf.setPort(6379);
+// RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>();
+// redisTemplate.setConnectionFactory(cf);
+// RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate);
+// redisCacheManager.setDefaultExpiration(300);
+// this.cacheManager = redisCacheManager;
+// this.cache = redisCacheManager.getCache("test");
+// break;
+// case CAFFEINE:
+// break;
+ case EHCACHE:
+ return new EhCacheMonitor((EhCacheCache) cache);
+ default:
+ throw new CacheProviderException("The specified cache monitor [" + cacheProviderType + "] does not have an available implementation.");
+ }
+ }
}
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/AsyncFileWriter.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/AsyncFileWriter.java
index 4820bac..89ac0ba 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/AsyncFileWriter.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/AsyncFileWriter.java
@@ -1,5 +1,6 @@
package br.ufrgs.inf.prosoft.adaptivecaching.monitoring.storage;
+import br.ufrgs.inf.prosoft.adaptivecaching.exceptions.StorageException;
import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.application.metadata.LogTrace;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/ConsoleRepository.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/ConsoleRepository.java
index d894de6..e3da8cf 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/ConsoleRepository.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/ConsoleRepository.java
@@ -1,5 +1,7 @@
package br.ufrgs.inf.prosoft.adaptivecaching.monitoring.storage;
+import br.ufrgs.inf.prosoft.adaptivecaching.exceptions.StorageException;
+
import java.util.List;
public class ConsoleRepository<T> implements Repository<T> {
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/MemoryRepository.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/MemoryRepository.java
index d906bd7..7e0b1d2 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/MemoryRepository.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/MemoryRepository.java
@@ -1,5 +1,7 @@
package br.ufrgs.inf.prosoft.adaptivecaching.monitoring.storage;
+import br.ufrgs.inf.prosoft.adaptivecaching.exceptions.StorageException;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/MongoRepository.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/MongoRepository.java
index 9fb97ad..5183e60 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/MongoRepository.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/MongoRepository.java
@@ -1,9 +1,9 @@
package br.ufrgs.inf.prosoft.adaptivecaching.monitoring.storage;
+import br.ufrgs.inf.prosoft.adaptivecaching.exceptions.StorageException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
-import com.fasterxml.jackson.datatype.hibernate4.Hibernate4Module;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import org.bson.Document;
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/Repository.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/Repository.java
index cc14b03..f500aaf 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/Repository.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/Repository.java
@@ -1,6 +1,6 @@
package br.ufrgs.inf.prosoft.adaptivecaching.monitoring.storage;
-import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.application.metadata.LogTrace;
+import br.ufrgs.inf.prosoft.adaptivecaching.exceptions.StorageException;
import java.util.List;
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/RepositoryFactory.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/RepositoryFactory.java
index 240cdf1..78a227f 100644
--- a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/RepositoryFactory.java
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/monitoring/storage/RepositoryFactory.java
@@ -1,7 +1,56 @@
package br.ufrgs.inf.prosoft.adaptivecaching.monitoring.storage;
-/**
- * Created by jhonnymertz on 04/06/17.
- */
+import br.ufrgs.inf.prosoft.adaptivecaching.configuration.annotation.types.RepositoryType;
+import br.ufrgs.inf.prosoft.adaptivecaching.exceptions.StorageException;
+import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.application.metadata.LogTrace;
+import com.mongodb.MongoClient;
+import com.mongodb.MongoTimeoutException;
+import com.mongodb.client.MongoDatabase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Properties;
+
public class RepositoryFactory {
+
+ static Logger logger = LoggerFactory.getLogger(RepositoryFactory.class);
+
+ public static Repository getRepository(Properties properties, RepositoryType repositoryType) throws IOException {
+
+ switch (repositoryType) {
+ case MONGODB:
+ try {
+ MongoClient mongo = new MongoClient(properties.getProperty("adaptivecaching.monitoring.db.address"), Integer.parseInt(properties.getProperty("adaptivecaching.monitoring.db.port")));
+ MongoDatabase database = mongo.getDatabase(properties.getProperty("adaptivecaching.monitoring.db.scheme"));
+ Repository repository = new MongoRepository<>(database.getCollection(properties.getProperty("adaptivecaching.monitoring.db.name")), LogTrace.class);
+ logger.debug("Repository created to MongoDB: " + repository.toString());
+ return repository;
+ } catch (MongoTimeoutException e) {
+ throw new StorageException("Cannot connect with MongoDB with the defined properties.", e);
+ }
+ case REDIS:
+ //TODO decouple it from redis and get of properties
+ logger.debug("Repository is configured to Redis.");
+ return new RedisRepository<LogTrace>();
+ case TEXTFILE:
+ //TODO decouple it from redis and get of properties
+ AsyncFileWriter as = new AsyncFileWriter(new File("traces.txt"));
+ as.open();
+ logger.debug("Repository is configured to save logs in textfile.");
+ return as;
+ case MEMORY:
+ //TODO decouple it from redis and get of properties
+ //TODO log a warning because memory can take too much from the application...
+ logger.warn("Repository is configured to save logs in Memory, which is not recommended because it can take too much from the application.");
+ return new MemoryRepository<LogTrace>();
+ case CONSOLE:
+ //TODO decouple it from redis and get of properties
+ logger.warn("Repository is configured to just show logs in console. Nothing will be recorded");
+ return new ConsoleRepository<LogTrace>();
+ default:
+ throw new StorageException("The specified repository type [" + repositoryType +"] does not have an available implementation.");
+ }
+ }
}
diff --git a/framework/autonomicmanager/src/test/java/br/ufrgs/inf/prosoft/tests/adaptivecaching/MethodCacherTest.java b/framework/autonomicmanager/src/test/java/br/ufrgs/inf/prosoft/tests/adaptivecaching/MethodCacherTest.java
index 1412db1..afe1e9f 100644
--- a/framework/autonomicmanager/src/test/java/br/ufrgs/inf/prosoft/tests/adaptivecaching/MethodCacherTest.java
+++ b/framework/autonomicmanager/src/test/java/br/ufrgs/inf/prosoft/tests/adaptivecaching/MethodCacherTest.java
@@ -4,17 +4,15 @@ import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.cacher.extensions.provi
import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.cacher.key.Key;
import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.extensions.ehcache.EhCacheCacheManager;
import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.model.Cache;
-import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.util.support.SimpleValueWrapper;
+import br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.model.support.SimpleValueWrapper;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.config.CacheConfiguration;
import net.sf.ehcache.config.PersistenceConfiguration;
import net.sf.ehcache.store.MemoryStoreEvictionPolicy;
-import org.aspectj.asm.IProgramElement;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.reflect.MethodSignature;
import org.hamcrest.CoreMatchers;
import org.hamcrest.MatcherAssert;
-import org.junit.Test;
import org.mockito.Mockito;
import java.lang.reflect.Method;
jmeter.log 206(+206 -0)
diff --git a/jmeter.log b/jmeter.log
new file mode 100644
index 0000000..119324b
--- /dev/null
+++ b/jmeter.log
@@ -0,0 +1,206 @@
+2017/06/04 20:28:16 INFO - jmeter.util.JMeterUtils: Setting Locale to en_US
+2017/06/04 20:28:16 INFO - jmeter.JMeter: Loading user properties from: /home/jhonnymertz/dev/apache-jmeter-3.0/bin/user.properties
+2017/06/04 20:28:16 INFO - jmeter.JMeter: Loading system properties from: /home/jhonnymertz/dev/apache-jmeter-3.0/bin/system.properties
+2017/06/04 20:28:16 INFO - jmeter.JMeter: Copyright (c) 1998-2016 The Apache Software Foundation
+2017/06/04 20:28:16 INFO - jmeter.JMeter: Version 3.0 r1743807
+2017/06/04 20:28:16 INFO - jmeter.JMeter: java.version=1.8.0_45
+2017/06/04 20:28:16 INFO - jmeter.JMeter: java.vm.name=Java HotSpot(TM) 64-Bit Server VM
+2017/06/04 20:28:16 INFO - jmeter.JMeter: os.name=Linux
+2017/06/04 20:28:16 INFO - jmeter.JMeter: os.arch=amd64
+2017/06/04 20:28:16 INFO - jmeter.JMeter: os.version=4.4.0-78-generic
+2017/06/04 20:28:16 INFO - jmeter.JMeter: file.encoding=UTF-8
+2017/06/04 20:28:16 INFO - jmeter.JMeter: Max memory =1840250880
+2017/06/04 20:28:16 INFO - jmeter.JMeter: Available Processors =4
+2017/06/04 20:28:16 INFO - jmeter.JMeter: Default Locale=English (United States)
+2017/06/04 20:28:16 INFO - jmeter.JMeter: JMeter Locale=English (United States)
+2017/06/04 20:28:16 INFO - jmeter.JMeter: JMeterHome=/home/jhonnymertz/dev/apache-jmeter-3.0
+2017/06/04 20:28:16 INFO - jmeter.JMeter: user.dir =/home/jhonnymertz/workspace/adaptive-caching-framework
+2017/06/04 20:28:16 INFO - jmeter.JMeter: PWD =/home/jhonnymertz/workspace/adaptive-caching-framework
+2017/06/04 20:28:16 INFO - jmeter.JMeter: IP: 127.0.1.1 Name: jhonnymertz-Vostro-5470 FullName: jhonnymertz-Vostro-5470
+2017/06/04 20:28:16 INFO - jmeter.services.FileServer: Default base='/home/jhonnymertz/workspace/adaptive-caching-framework'
+2017/06/04 20:28:16 INFO - jmeter.services.FileServer: Set new base='/home/jhonnymertz/workspace/adaptive-caching-framework/evaluation/JMeter'
+2017/06/04 20:28:16 INFO - jmeter.save.SaveService: Testplan (JMX) version: 2.2. Testlog (JTL) version: 2.2
+2017/06/04 20:28:16 INFO - jmeter.save.SaveService: Using SaveService properties file encoding UTF-8
+2017/06/04 20:28:16 INFO - jmeter.save.SaveService: Using SaveService properties version 2.9
+2017/06/04 20:28:16 INFO - jmeter.save.SaveService: All converter versions present and correct
+2017/06/04 20:28:16 INFO - jmeter.save.SaveService: Loading file: /home/jhonnymertz/workspace/adaptive-caching-framework/evaluation/JMeter/petclinic_test_plan.jmx
+2017/06/04 20:28:17 INFO - jmeter.protocol.http.control.CookieManager: Settings: Delete null: true Check: true Allow variable: true Save: false Prefix: COOKIE_
+2017/06/04 20:28:17 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/html is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
+2017/06/04 20:28:17 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for application/xhtml+xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
+2017/06/04 20:28:17 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for application/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
+2017/06/04 20:28:17 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
+2017/06/04 20:28:17 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/vnd.wap.wml is org.apache.jmeter.protocol.http.parser.RegexpHTMLParser
+2017/06/04 20:28:17 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/css is org.apache.jmeter.protocol.http.parser.CssParser
+2017/06/04 20:28:17 INFO - jmeter.JMeter: Creating summariser <summary>
+2017/06/04 20:28:17 INFO - jmeter.engine.StandardJMeterEngine: Running the test!
+2017/06/04 20:28:17 INFO - jmeter.samplers.SampleEvent: List of sample_variables: []
+2017/06/04 20:28:17 INFO - jmeter.samplers.SampleEvent: List of sample_variables: []
+2017/06/04 20:28:17 INFO - jmeter.engine.util.CompoundVariable: Note: Function class names must contain the string: '.functions.'
+2017/06/04 20:28:17 INFO - jmeter.engine.util.CompoundVariable: Note: Function class names must not contain the string: '.gui.'
+2017/06/04 20:28:17 INFO - jmeter.JMeter: Running test (1496600897872)
+2017/06/04 20:28:17 INFO - jmeter.engine.StandardJMeterEngine: Starting ThreadGroup: 1 : User threads full random transitions
+2017/06/04 20:28:17 INFO - jmeter.engine.StandardJMeterEngine: Starting 50 threads for group User threads full random transitions.
+2017/06/04 20:28:17 INFO - jmeter.engine.StandardJMeterEngine: Thread will continue on error
+2017/06/04 20:28:17 INFO - jmeter.threads.ThreadGroup: Starting thread group number 1 threads 50 ramp-up 1 perThread 20.0 delayedStart=false
+2017/06/04 20:28:18 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-1
+2017/06/04 20:28:18 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-2
+2017/06/04 20:28:18 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-3
+2017/06/04 20:28:18 INFO - jmeter.samplers.SampleResult: Note: Sample TimeStamps are START times
+2017/06/04 20:28:18 INFO - jmeter.samplers.SampleResult: sampleresult.default.encoding is set to ISO-8859-1
+2017/06/04 20:28:18 INFO - jmeter.samplers.SampleResult: sampleresult.useNanoTime=true
+2017/06/04 20:28:18 INFO - jmeter.samplers.SampleResult: sampleresult.nanoThreadSleep=5000
+2017/06/04 20:28:18 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-4
+2017/06/04 20:28:18 INFO - jmeter.protocol.http.sampler.HTTPHCAbstractImpl: Local host = jhonnymertz-Vostro-5470
+2017/06/04 20:28:18 INFO - jmeter.protocol.http.sampler.HTTPHC4Impl: HTTP request retry count = 0
+2017/06/04 20:28:18 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-5
+2017/06/04 20:28:18 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-6
+2017/06/04 20:28:18 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-7
+2017/06/04 20:28:18 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-8
+2017/06/04 20:28:18 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-9
+2017/06/04 20:28:18 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-10
+2017/06/04 20:28:18 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-11
+2017/06/04 20:28:18 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-12
+2017/06/04 20:28:18 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-13
+2017/06/04 20:28:19 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-14
+2017/06/04 20:28:19 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-15
+2017/06/04 20:28:19 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-16
+2017/06/04 20:28:19 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-17
+2017/06/04 20:28:19 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-18
+2017/06/04 20:28:19 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-19
+2017/06/04 20:28:19 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-20
+2017/06/04 20:28:19 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-21
+2017/06/04 20:28:19 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-22
+2017/06/04 20:28:19 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-23
+2017/06/04 20:28:20 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-24
+2017/06/04 20:28:20 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-25
+2017/06/04 20:28:20 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-26
+2017/06/04 20:28:20 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-27
+2017/06/04 20:28:20 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-28
+2017/06/04 20:28:21 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-33
+2017/06/04 20:28:21 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-32
+2017/06/04 20:28:21 INFO - jmeter.threads.ThreadGroup: Started thread group number 1
+2017/06/04 20:28:21 INFO - jmeter.engine.StandardJMeterEngine: All thread groups have been started
+2017/06/04 20:28:21 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-31
+2017/06/04 20:28:21 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-30
+2017/06/04 20:28:20 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-29
+2017/06/04 20:28:21 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-34
+2017/06/04 20:28:21 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-35
+2017/06/04 20:28:21 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-36
+2017/06/04 20:28:21 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-37
+2017/06/04 20:28:21 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-38
+2017/06/04 20:28:21 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-39
+2017/06/04 20:28:21 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-40
+2017/06/04 20:28:21 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-41
+2017/06/04 20:28:21 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-42
+2017/06/04 20:28:21 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-43
+2017/06/04 20:28:21 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-44
+2017/06/04 20:28:21 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-45
+2017/06/04 20:28:21 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-46
+2017/06/04 20:28:22 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-47
+2017/06/04 20:28:22 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-48
+2017/06/04 20:28:22 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-49
+2017/06/04 20:28:22 INFO - jmeter.threads.JMeterThread: Thread started: User threads full random transitions 1-50
+2017/06/04 20:28:30 INFO - jmeter.reporters.Summariser: summary + 18591 in 00:00:12 = 1532,9/s Avg: 13 Min: 0 Max: 832 Err: 18541 (99,73%) Active: 50 Started: 50 Finished: 0
+2017/06/04 20:28:36 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-2
+2017/06/04 20:28:36 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-2
+2017/06/04 20:28:36 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-1
+2017/06/04 20:28:36 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-1
+2017/06/04 20:28:36 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-10
+2017/06/04 20:28:36 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-10
+2017/06/04 20:28:36 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-11
+2017/06/04 20:28:36 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-11
+2017/06/04 20:28:36 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-3
+2017/06/04 20:28:36 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-3
+2017/06/04 20:28:36 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-7
+2017/06/04 20:28:36 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-7
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-18
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-18
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-4
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-4
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-14
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-14
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-6
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-6
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-15
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-15
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-35
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-35
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-5
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-5
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-8
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-8
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-9
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-9
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-30
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-30
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-25
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-25
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-22
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-22
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-13
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-13
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-29
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-29
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-37
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-37
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-23
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-23
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-24
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-24
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-49
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-49
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-21
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-21
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-12
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-12
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-40
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-40
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-16
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-16
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-19
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-19
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-27
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-27
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-28
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-28
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-39
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-39
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-32
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-32
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-26
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-26
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-38
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-38
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-44
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-44
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-41
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-41
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-48
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-48
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-43
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-43
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-17
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-17
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-34
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-34
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-42
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-42
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-50
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-50
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-31
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-31
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-33
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-33
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-20
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-20
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-45
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-45
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-46
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-46
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-47
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-47
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread is done: User threads full random transitions 1-36
+2017/06/04 20:28:37 INFO - jmeter.threads.JMeterThread: Thread finished: User threads full random transitions 1-36
+2017/06/04 20:28:37 INFO - jmeter.engine.StandardJMeterEngine: Notifying test listeners of end of test
+2017/06/04 20:28:37 INFO - jmeter.reporters.Summariser: summary + 31459 in 00:00:08 = 4050,3/s Avg: 7 Min: 0 Max: 164 Err: 31459 (100,00%) Active: 0 Started: 50 Finished: 50
+2017/06/04 20:28:37 INFO - jmeter.reporters.Summariser: summary = 50050 in 00:00:20 = 2515,6/s Avg: 9 Min: 0 Max: 832 Err: 50000 (99,90%)
README.md 89(+89 -0)
diff --git a/README.md b/README.md
index e69de29..a7a9e3c 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1,89 @@
+Seamless and adaptive application-level caching
+=========
+
+#todo describe application-level caching
+
+Identifying cacheable methods automatically
+---------
+
+Evaluation...
+
+- Three application setups NO, DEV, AP
+- Three randomized simulation of execution for each application
+
+#TODO describe simulations
+
+Required Tools
+---------
+- Jmeter (http://jmeter.apache.org/)
+- Mysql (https://www.mysql.com/)
+- Java 8
+- Maven 3
+
+Applications
+---------
+#todo describe available apps
+
+Application setup
+---------
+[Shopizer] (https://github.com/shopizer-ecommerce/shopizer):
+-- Instalar Elasticsearch (https://www.elastic.co/);
+-- Base de dados
+
+- Criar schema SALESMANAGER
+- Configurar arquivo database.properties
+- Popular base de dados
+-- No arquivo shopizer-properties.xml
+--- <prop key="POPULATE_TEST_DATA">true</prop>
+--- 7 categories, 6 products, addresses USA, one customer, one admin, shipping info
+
+
+
+◦ Acesso via web
+
+▪ /shop → Páginas da loja
+
+▪ /admin → Administração com login: admin:password
+
+
+
+
+
+Petclinic - https://github.com/spring-projects/spring-petclinic
+
+Criar schema petclinic na base de dados - na primeira inicialização, a base será populada com dados básicos para o funcionamento automaticamente
+Configurar base de dados no arquivo pom.xml
+
+Access
+http://localhost:9966/petclinic/
+
+
+
+• CloudStore (https://github.com/CloudScale-Project/CloudStore
+
+◦ Restaurar base de dados do arquivo DEV/database/rds-tpcw-dump-latest.sql
+
+▪ O dump contém 10000 books e está disponível no link: download
+
+◦ Configurar base de dados no arquivo
+
+src/main/resources/database/database.hibernate.properties
+
+
+Execução
+---------
+mvn clean install tomcat7:run-war -DskipTests
+
+Simulations
+-----------
+
+Com a aplicação em execução, o Jmeter deve ser aberto e carregado com o sumation setup desejado.
+
+Metrics
+-----------
+
+- [throughput] A execução é simples e após o termino da simulação a ferramenta irá informar o throughput.
+
+- [hit ratio] Após a execução da simulação, rodar o jconsole e acessar o atributo referente ao
+
+EhCache → Estatistics → Hits.
\ No newline at end of file