m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2020-01-06 12:02:46 +0100
committerMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2020-01-06 12:02:46 +0100
commit88cc1f5da8ded831b15f4970e8877494d449a471 (patch)
treefcf3141fd7acbf19b87ea4eb215e39220137aa09 /src/test
parent89a5d7b00f71a5be805ecc7e7907e5b0c88c5f03 (diff)
Prune hierarchy of stale zones on read
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/StanikTest.java29
1 files changed, 27 insertions, 2 deletions
diff --git a/src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/StanikTest.java b/src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/StanikTest.java
index 1ca8608..f3ea0b0 100644
--- a/src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/StanikTest.java
+++ b/src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/StanikTest.java
@@ -35,10 +35,11 @@ public class StanikTest {
private Stanik stanik;
private MockExecutor executor;
private ValueTime testTime;
+ private static final long freshnessPeriod = 1000;
@Before
public void setupLocals() {
- stanik = new Stanik();
+ stanik = new Stanik(freshnessPeriod);
executor = new MockExecutor(stanik);
testTime = ValueUtils.currentTime();
}
@@ -157,7 +158,7 @@ public class StanikTest {
public void dontApplyWithStaleTimestamp() throws Exception {
AttributesMap attributes = new AttributesMap();
attributes.add("foo", new ValueInt(1337l));
- attributes.add("timestamp", (ValueTime) testTime.subtract(new ValueDuration(61 * 1000l)));
+ attributes.add("timestamp", (ValueTime) testTime.subtract(new ValueDuration(freshnessPeriod + 100)));
attributes.add("name", new ValueString("new"));
UpdateAttributesMessage message = new UpdateAttributesMessage("test_msg", 0, "/new", attributes);
stanik.handleTyped(message);
@@ -166,6 +167,30 @@ public class StanikTest {
}
@Test
+ public void zoneRemovedAfterFreshnessPeriod() throws Exception {
+ AttributesMap attributes = new AttributesMap();
+ attributes.add("foo", new ValueInt(1337l));
+ attributes.add("timestamp", testTime);
+ attributes.add("name", new ValueString("new"));
+ UpdateAttributesMessage message = new UpdateAttributesMessage("test_msg", 0, "/new", attributes);
+ stanik.handleTyped(message);
+ Thread.sleep(freshnessPeriod + 100);
+
+ AttributesMap attributes2 = new AttributesMap();
+ attributes2.add("timestamp", ValueUtils.currentTime());
+ UpdateAttributesMessage message2 = new UpdateAttributesMessage("test_msg", 0, "/", attributes2);
+ stanik.handleTyped(message2);
+
+ GetStateMessage getStateMessage = new GetStateMessage("", 0, ModuleType.TEST, 0);
+ stanik.handleTyped(getStateMessage);
+
+ StateMessage newReceivedMessage = (StateMessage) executor.messagesToPass.poll();
+ assertNotNull(newReceivedMessage);
+ assertFalse(newReceivedMessage.getZMI().descendantExists(new PathName("/new")));
+ assertFalse(stanik.getHierarchy().descendantExists(new PathName("/new")));
+ }
+
+ @Test
public void addQuery() throws Exception {
HashMap<Attribute, Entry<ValueQuery, ValueTime>> queries = new HashMap<Attribute, Entry<ValueQuery, ValueTime>>();
queries.put(new Attribute("&query"), new SimpleImmutableEntry(new ValueQuery("SELECT 1 AS one"), new ValueTime(42l)));