m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/pl/edu/mimuw
diff options
context:
space:
mode:
authorMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2020-01-05 15:24:36 +0100
committerMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2020-01-05 15:24:36 +0100
commit9325737ff613f7f14e44338b68ab657e0ed52d37 (patch)
tree77777e499ff7c4d9a660b9e0ec186f7743fd562d /src/test/java/pl/edu/mimuw
parent69480d460a698a78b90d8d111f5fb4d761ffda81 (diff)
Don't apply stale zone updates
Diffstat (limited to 'src/test/java/pl/edu/mimuw')
-rw-r--r--src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/StanikTest.java76
1 files changed, 46 insertions, 30 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 2e1ccea..ab13642 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
@@ -16,12 +16,15 @@ import pl.edu.mimuw.cloudatlas.agent.messages.UpdateQueriesMessage;
import pl.edu.mimuw.cloudatlas.agent.MockExecutor;
import pl.edu.mimuw.cloudatlas.model.Attribute;
import pl.edu.mimuw.cloudatlas.model.AttributesMap;
+import pl.edu.mimuw.cloudatlas.model.PathName;
import pl.edu.mimuw.cloudatlas.model.TestUtil;
import pl.edu.mimuw.cloudatlas.model.Value;
+import pl.edu.mimuw.cloudatlas.model.ValueDuration;
import pl.edu.mimuw.cloudatlas.model.ValueInt;
import pl.edu.mimuw.cloudatlas.model.ValueQuery;
import pl.edu.mimuw.cloudatlas.model.ValueString;
import pl.edu.mimuw.cloudatlas.model.ValueTime;
+import pl.edu.mimuw.cloudatlas.model.ValueUtils;
import pl.edu.mimuw.cloudatlas.model.ZMI;
import org.junit.Before;
@@ -31,11 +34,13 @@ import static org.junit.Assert.*;
public class StanikTest {
private Stanik stanik;
private MockExecutor executor;
+ private ValueTime testTime;
@Before
public void setupLocals() {
stanik = new Stanik();
executor = new MockExecutor(stanik);
+ testTime = ValueUtils.currentTime();
}
@Test
@@ -78,14 +83,14 @@ public class StanikTest {
AttributesMap attributes = new AttributesMap();
attributes.add("foo", new ValueInt(1337l));
attributes.add("bar", new ValueString("baz"));
- attributes.add("timestamp", new ValueTime("2012/12/21 04:20:00.000"));
+ attributes.add("timestamp", testTime);
UpdateAttributesMessage message = new UpdateAttributesMessage("test_msg", 0, "/", attributes);
stanik.handleTyped(message);
AttributesMap actualAttributes = stanik.getHierarchy().getAttributes();
assertEquals(3, TestUtil.iterableSize(actualAttributes));
assertEquals(new ValueInt(1337l), actualAttributes.get("foo"));
assertEquals(new ValueString("baz"), actualAttributes.get("bar"));
- assertEquals(new ValueTime("2012/12/21 04:20:00.000"), actualAttributes.getOrNull("timestamp"));
+ assertEquals(testTime, actualAttributes.getOrNull("timestamp"));
}
@Test
@@ -94,7 +99,7 @@ public class StanikTest {
attributes.add("foo", new ValueInt(1337l));
attributes.add("bar", new ValueString("baz"));
attributes.add("name", new ValueString("new"));
- attributes.add("timestamp", new ValueTime("2012/12/21 04:20:00.000"));
+ attributes.add("timestamp", testTime);
UpdateAttributesMessage message = new UpdateAttributesMessage("test_msg", 0, "/new", attributes);
stanik.handleTyped(message);
AttributesMap actualAttributes = stanik.getHierarchy().findDescendant("/new").getAttributes();
@@ -102,7 +107,7 @@ public class StanikTest {
assertEquals(new ValueInt(1337l), actualAttributes.getOrNull("foo"));
assertEquals(new ValueString("baz"), actualAttributes.getOrNull("bar"));
assertEquals(new ValueString("new"), actualAttributes.getOrNull("name"));
- assertEquals(new ValueTime("2012/12/21 04:20:00.000"), actualAttributes.getOrNull("timestamp"));
+ assertEquals(testTime, actualAttributes.getOrNull("timestamp"));
}
@Test
@@ -111,11 +116,12 @@ public class StanikTest {
attributes.add("foo", new ValueInt(1337l));
attributes.add("bar", new ValueString("baz"));
UpdateAttributesMessage message = new UpdateAttributesMessage("test_msg", 0, "/", attributes);
- attributes.add("timestamp", new ValueTime("2012/12/21 04:20:00.000"));
+ attributes.add("timestamp", testTime);
stanik.handleTyped(message);
AttributesMap newAttributes = new AttributesMap();
- newAttributes.add("timestamp", new ValueTime("2012/12/21 04:20:42.000"));
+ ValueTime newTime = (ValueTime) testTime.addValue(new ValueDuration(1l));
+ newAttributes.add("timestamp", newTime);
newAttributes.add("foo", new ValueInt(1338l));
UpdateAttributesMessage newMessage = new UpdateAttributesMessage("test_msg2", 0, "/", newAttributes);
stanik.handleTyped(newMessage);
@@ -123,27 +129,40 @@ public class StanikTest {
AttributesMap actualAttributes = stanik.getHierarchy().getAttributes();
assertEquals(2, TestUtil.iterableSize(actualAttributes));
assertEquals(new ValueInt(1338l), actualAttributes.getOrNull("foo"));
- assertEquals(new ValueTime("2012/12/21 04:20:42.000"), actualAttributes.getOrNull("timestamp"));
+ assertEquals(newTime, actualAttributes.getOrNull("timestamp"));
}
@Test
public void dontApplyUpdateWithOlderTimestamp() throws Exception {
AttributesMap attributes = new AttributesMap();
attributes.add("foo", new ValueInt(1337l));
- attributes.add("timestamp", new ValueTime("2012/12/21 04:20:00.000"));
+ attributes.add("timestamp", testTime);
UpdateAttributesMessage message = new UpdateAttributesMessage("test_msg", 0, "/", attributes);
stanik.handleTyped(message);
AttributesMap oldAttributes = new AttributesMap();
oldAttributes.add("foo", new ValueInt(1336l));
- oldAttributes.add("timestamp", new ValueTime("2012/12/21 04:19:00.000"));
+ ValueTime olderTime = (ValueTime) testTime.subtract(new ValueDuration(1l));
+ oldAttributes.add("timestamp", olderTime);
UpdateAttributesMessage newMessage = new UpdateAttributesMessage("test_msg2", 0, "/", oldAttributes);
stanik.handleTyped(newMessage);
AttributesMap actualAttributes = stanik.getHierarchy().getAttributes();
assertEquals(2, TestUtil.iterableSize(actualAttributes));
assertEquals(new ValueInt(1337l), actualAttributes.getOrNull("foo"));
- assertEquals(new ValueTime("2012/12/21 04:20:00.000"), actualAttributes.getOrNull("timestamp"));
+ assertEquals(testTime, actualAttributes.getOrNull("timestamp"));
+ }
+
+ @Test
+ public void dontApplyWithStaleTimestamp() throws Exception {
+ AttributesMap attributes = new AttributesMap();
+ attributes.add("foo", new ValueInt(1337l));
+ attributes.add("timestamp", new ValueTime("2012/12/21 04:20:00.000"));
+ attributes.add("name", new ValueString("new"));
+ UpdateAttributesMessage message = new UpdateAttributesMessage("test_msg", 0, "/new", attributes);
+ stanik.handleTyped(message);
+
+ assertFalse(stanik.getHierarchy().descendantExists(new PathName("/new")));
}
@Test
@@ -207,19 +226,14 @@ public class StanikTest {
attributes.add("foo", new ValueInt(1337l));
attributes.add("bar", new ValueString("baz"));
attributes.add("name", new ValueString("new"));
- attributes.add("timestamp", new ValueTime(42l));
+ attributes.add("timestamp", testTime);
UpdateAttributesMessage message = new UpdateAttributesMessage("test_msg", 0, "/new", attributes);
stanik.handleTyped(message);
- RemoveZMIMessage removeMessage = new RemoveZMIMessage("test_msg2", 0, "/new", new ValueTime(43l));
+ RemoveZMIMessage removeMessage = new RemoveZMIMessage("test_msg2", 0, "/new", (ValueTime) testTime.addValue(new ValueDuration(1l)));
stanik.handleTyped(removeMessage);
- boolean noSuchZone = false;
- try {
- stanik.getHierarchy().findDescendant("/new");
- } catch (ZMI.NoSuchZoneException e) {
- noSuchZone = true;
- }
- assertTrue(noSuchZone);
+
+ assertFalse(stanik.getHierarchy().descendantExists(new PathName("/new")));
}
@Test
@@ -228,11 +242,11 @@ public class StanikTest {
attributes.add("foo", new ValueInt(1337l));
attributes.add("bar", new ValueString("baz"));
attributes.add("name", new ValueString("new"));
- attributes.add("timestamp", new ValueTime(42l));
+ attributes.add("timestamp", testTime);
UpdateAttributesMessage message = new UpdateAttributesMessage("test_msg", 0, "/new", attributes);
stanik.handleTyped(message);
- RemoveZMIMessage removeMessage = new RemoveZMIMessage("test_msg2", 0, "/new", new ValueTime(41l));
+ RemoveZMIMessage removeMessage = new RemoveZMIMessage("test_msg2", 0, "/new", (ValueTime) testTime.subtract(new ValueDuration(1l)));
stanik.handleTyped(removeMessage);
stanik.getHierarchy().findDescendant("/new");
@@ -243,17 +257,17 @@ public class StanikTest {
AttributesMap attributes = new AttributesMap();
attributes.add("foo", new ValueInt(1337l));
attributes.add("name", new ValueString("new"));
- attributes.add("timestamp", new ValueTime(42l));
+ attributes.add("timestamp", testTime);
UpdateAttributesMessage message = new UpdateAttributesMessage("test_msg", 0, "/new", attributes);
stanik.handleTyped(message);
- SetAttributeMessage setMessage = new SetAttributeMessage("test_msg2", 0, "/new", new Attribute("foo"), new ValueInt(43l), new ValueTime(40l));
+ SetAttributeMessage setMessage = new SetAttributeMessage("test_msg2", 0, "/new", new Attribute("foo"), new ValueInt(43l), (ValueTime) testTime.subtract(new ValueDuration(1l)));
stanik.handleTyped(setMessage);
AttributesMap actualAttributes = stanik.getHierarchy().findDescendant("/new").getAttributes();
assertEquals(3, TestUtil.iterableSize(actualAttributes));
assertEquals(new ValueInt(43l), actualAttributes.getOrNull("foo"));
- assertEquals(new ValueTime(42l), actualAttributes.getOrNull("timestamp"));
+ assertEquals(testTime, actualAttributes.getOrNull("timestamp"));
}
@Test
@@ -261,17 +275,18 @@ public class StanikTest {
AttributesMap attributes = new AttributesMap();
attributes.add("foo", new ValueInt(1337l));
attributes.add("name", new ValueString("new"));
- attributes.add("timestamp", new ValueTime(42l));
+ attributes.add("timestamp", testTime);
UpdateAttributesMessage message = new UpdateAttributesMessage("test_msg", 0, "/new", attributes);
stanik.handleTyped(message);
- SetAttributeMessage setMessage = new SetAttributeMessage("test_msg2", 0, "/new", new Attribute("foo"), new ValueInt(43l), new ValueTime(43l));
+ ValueTime newTime = (ValueTime) testTime.addValue(new ValueDuration(1l));
+ SetAttributeMessage setMessage = new SetAttributeMessage("test_msg2", 0, "/new", new Attribute("foo"), new ValueInt(43l), newTime);
stanik.handleTyped(setMessage);
AttributesMap actualAttributes = stanik.getHierarchy().findDescendant("/new").getAttributes();
assertEquals(3, TestUtil.iterableSize(actualAttributes));
assertEquals(new ValueInt(43l), actualAttributes.getOrNull("foo"));
- assertEquals(new ValueTime(43l), actualAttributes.getOrNull("timestamp"));
+ assertEquals(newTime, actualAttributes.getOrNull("timestamp"));
}
@Test
@@ -279,17 +294,18 @@ public class StanikTest {
AttributesMap attributes = new AttributesMap();
attributes.add("foo", new ValueInt(1337l));
attributes.add("name", new ValueString("new"));
- attributes.add("timestamp", new ValueTime(42l));
+ attributes.add("timestamp", testTime);
UpdateAttributesMessage message = new UpdateAttributesMessage("test_msg", 0, "/new", attributes);
stanik.handleTyped(message);
- SetAttributeMessage setMessage = new SetAttributeMessage("test_msg2", 0, "/new", new Attribute("bar"), new ValueInt(43l), new ValueTime(43l));
+ ValueTime newTime = (ValueTime) testTime.addValue(new ValueDuration(1l));
+ SetAttributeMessage setMessage = new SetAttributeMessage("test_msg2", 0, "/new", new Attribute("bar"), new ValueInt(43l), newTime);
stanik.handleTyped(setMessage);
AttributesMap actualAttributes = stanik.getHierarchy().findDescendant("/new").getAttributes();
assertEquals(4, TestUtil.iterableSize(actualAttributes));
assertEquals(new ValueInt(1337l), actualAttributes.getOrNull("foo"));
assertEquals(new ValueInt(43l), actualAttributes.getOrNull("bar"));
- assertEquals(new ValueTime(43l), actualAttributes.getOrNull("timestamp"));
+ assertEquals(newTime, actualAttributes.getOrNull("timestamp"));
}
}