m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build.gradle5
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java3
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java4
-rw-r--r--src/test/java/pl/edu/mimuw/cloudatlas/agent/AgentIntegrationTest.java2
-rw-r--r--src/test/java/pl/edu/mimuw/cloudatlas/client/ClientTest.java2
5 files changed, 12 insertions, 4 deletions
diff --git a/build.gradle b/build.gradle
index 9ef400c..01e8685 100644
--- a/build.gradle
+++ b/build.gradle
@@ -18,6 +18,10 @@ ext.hostname = {
return System.getProperty("hostname") ?: "localhost"
}
+ext.freshnessPeriod = {
+ return System.getProperty("freshnessPeriod") ?: 60 * 1000
+}
+
repositories {
// Use jcenter for resolving dependencies.
// You can declare any Maven/Ivy/file repository here.
@@ -56,6 +60,7 @@ task runAgent(type: JavaExec) {
classpath = sourceSets.main.runtimeClasspath
main = 'pl.edu.mimuw.cloudatlas.agent.Agent'
systemProperty 'java.rmi.server.hostname', hostname()
+ systemProperty 'freshness_period', freshnessPeriod()
}
task runClient(type: JavaExec) {
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java
index 0efa710..26f0e0b 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java
@@ -46,7 +46,8 @@ public class Agent {
HashMap<ModuleType, Module> modules = new HashMap<ModuleType, Module>();
modules.put(ModuleType.TIMER_SCHEDULER, new TimerScheduler(ModuleType.TIMER_SCHEDULER));
modules.put(ModuleType.RMI, new Remik());
- modules.put(ModuleType.STATE, new Stanik());
+ Long freshnessPeriod = new Long(System.getProperty("freshness_period"));
+ modules.put(ModuleType.STATE, new Stanik(freshnessPeriod));
modules.put(ModuleType.QUERY, new Qurnik());
// TODO add modules as we implement them
return modules;
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java
index 6c0f380..6761c94 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java
@@ -94,6 +94,8 @@ public class Stanik extends Module {
private boolean pruneZMI(ZMI zmi, ValueTime time) {
Value timestamp = zmi.getAttributes().get("timestamp");
+ boolean isLeaf = zmi.getSons().isEmpty();
+
List<ZMI> sonsToRemove = new LinkedList();
if (ValueUtils.valueLower(timestamp, time.subtract(new ValueDuration(freshnessPeriod)))) {
if (zmi.getFather() != null) {
@@ -111,7 +113,7 @@ public class Stanik extends Module {
zmi.removeSon(son);
}
- if (zmi.getSons().isEmpty()) {
+ if (!isLeaf && zmi.getSons().isEmpty()) {
return true;
}
diff --git a/src/test/java/pl/edu/mimuw/cloudatlas/agent/AgentIntegrationTest.java b/src/test/java/pl/edu/mimuw/cloudatlas/agent/AgentIntegrationTest.java
index e4684cd..f69ed8f 100644
--- a/src/test/java/pl/edu/mimuw/cloudatlas/agent/AgentIntegrationTest.java
+++ b/src/test/java/pl/edu/mimuw/cloudatlas/agent/AgentIntegrationTest.java
@@ -47,7 +47,7 @@ public class AgentIntegrationTest {
public static void bindApi() throws Exception {
registryProcess = Runtime.getRuntime().exec("./scripts/registry");
Thread.sleep(10000);
- agentProcess = Runtime.getRuntime().exec("./gradlew runAgent -Dhostname=localhost");
+ agentProcess = Runtime.getRuntime().exec("./gradlew runAgent -Dhostname=localhost -DfreshnessPeriod=10000000");
Thread.sleep(10000);
registry = LocateRegistry.getRegistry("localhost");
diff --git a/src/test/java/pl/edu/mimuw/cloudatlas/client/ClientTest.java b/src/test/java/pl/edu/mimuw/cloudatlas/client/ClientTest.java
index 431122b..2bd63f6 100644
--- a/src/test/java/pl/edu/mimuw/cloudatlas/client/ClientTest.java
+++ b/src/test/java/pl/edu/mimuw/cloudatlas/client/ClientTest.java
@@ -37,7 +37,7 @@ public class ClientTest {
public static void bindApi() throws Exception {
registryProcess = Runtime.getRuntime().exec("./scripts/registry");
Thread.sleep(10000);
- agentProcess = Runtime.getRuntime().exec("./gradlew runAgent -Dhostname=localhost");
+ agentProcess = Runtime.getRuntime().exec("./gradlew runAgent -Dhostname=localhost -DfreshnessPeriod=10000000");
Thread.sleep(10000);
registry = LocateRegistry.getRegistry("localhost");