adaptive-caching-framework

Details

diff --git a/framework/autonomicmanager/pom.xml b/framework/autonomicmanager/pom.xml
index aa66cc3..e0df42e 100644
--- a/framework/autonomicmanager/pom.xml
+++ b/framework/autonomicmanager/pom.xml
@@ -142,6 +142,18 @@
             <version>4.0.0</version>
         </dependency>
 
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-math3</artifactId>
+            <version>3.6.1</version>
+        </dependency>
+
+        <dependency>
+            <groupId>ca.umontreal.iro.simul</groupId>
+            <artifactId>ssj</artifactId>
+            <version>3.3.1</version>
+        </dependency>
+
     </dependencies>
 
     <build>
diff --git a/framework/autonomicmanager/README.md b/framework/autonomicmanager/README.md
index 2f83648..266a50a 100644
--- a/framework/autonomicmanager/README.md
+++ b/framework/autonomicmanager/README.md
@@ -37,7 +37,7 @@ If your project is maven-based, in your `pom.xml`:
     <dependency>
         <groupId>br.ufrgs.inf.prosoft.adaptivecaching</groupId>
         <artifactId>autonomicmanager</artifactId>
-        <version>0.5.0-SNAPSHOT</version>
+        <version>0.6.0-SNAPSHOT</version>
     </dependency>
 </dependencies>
 ```
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 2907952..01eef01 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
@@ -17,7 +17,7 @@ import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.cache.CacheMonitor;
 import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.cache.vendors.guava.GuavaMonitor;
 import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.storage.providers.MongoRepository;
 import br.ufrgs.inf.prosoft.adaptivecaching.monitoring.storage.Repository;
-import br.ufrgs.inf.prosoft.adaptivecaching.sampling.adaptation.metrics.LightweightMetricAspect;
+import br.ufrgs.inf.prosoft.adaptivecaching.sampling.metrics.LightweightMetricAspect;
 import com.mongodb.MongoClient;
 import com.mongodb.client.MongoDatabase;
 import org.slf4j.Logger;
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/sampling/metrics/LightweightMetrics.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/sampling/metrics/LightweightMetrics.java
new file mode 100644
index 0000000..b18f9de
--- /dev/null
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/sampling/metrics/LightweightMetrics.java
@@ -0,0 +1,74 @@
+package br.ufrgs.inf.prosoft.adaptivecaching.sampling.metrics;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class LightweightMetrics {
+
+    private long occurrences;
+    private List<Long> times;
+    private List<Long> memories;
+    private List<Long> threadNumber;
+    private long throwns;
+    private List<Long> startTimes;
+
+    //not able to get CPU usage
+
+    public LightweightMetrics(){
+        startTimes = new ArrayList<>();
+        times = new ArrayList<>();
+        memories = new ArrayList<>();
+        threadNumber = new ArrayList<>();
+    }
+
+    public void addTime(long startTime, long time){
+        startTimes.add(startTime);
+        times.add(time);
+    }
+
+    public void addThreadNumber(long threads){
+        threadNumber.add(threads);
+    }
+
+    public void addMemoryConsumption(long memory){
+        memories.add(memory);
+    }
+
+    public void incThrown() {
+        throwns++;
+    }
+
+    public void incOccurrence() {
+        occurrences++;
+    }
+
+    public List<Long> interIntervals(){
+        List<Long> intervalTimes = new ArrayList<>();
+        long lastTime = startTimes.get(0);
+        for(Long l : startTimes){
+            intervalTimes.add(l - lastTime);
+            lastTime = l;
+        }
+        return intervalTimes;
+    }
+
+    public long getOccurrences() {
+        return occurrences;
+    }
+
+    @Override
+    public String toString() {
+        return "{" +
+                "occurrences=" + occurrences +
+                '}';
+    }
+
+    //TODO use commons math to in other parts of the code
+    private double mean(List<Number> values){
+        return StatUtils.mean(values);
+    }
+
+    private double standardDeviation(List<Number> values){
+        return FastMath.sqrt(StatUtils.variance(values));
+    }
+}
diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/sampling/statistics/StatisticalTest.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/sampling/statistics/StatisticalTest.java
new file mode 100644
index 0000000..4234c07
--- /dev/null
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/sampling/statistics/StatisticalTest.java
@@ -0,0 +1,18 @@
+
+package br.ufrgs.inf.prosoft.adaptivecaching.sampling.statistics;
+
+public class StatisticalTest {
+
+    public static isNormalDistribution(){
+        //commons math
+        final NormalDistribution unitNormal = new NormalDistribution(0d, 1d);
+        TestUtils.kolmogorovSmirnovTest(unitNormal, sample, false);
+
+
+        //https://github.com/umontreal-simul/ssj
+
+        //http://jdistlib.sourceforge.net/
+        NormalityTest.xxx_statistic(double[] x);
+        NormalityTest.xxx_p_value(double stat, int df);
+    }
+}