m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/QurnikTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/QurnikTest.java')
-rw-r--r--src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/QurnikTest.java86
1 files changed, 86 insertions, 0 deletions
diff --git a/src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/QurnikTest.java b/src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/QurnikTest.java
new file mode 100644
index 0000000..28f316c
--- /dev/null
+++ b/src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/QurnikTest.java
@@ -0,0 +1,86 @@
+package pl.edu.mimuw.cloudatlas.agent.modules;
+
+import java.util.AbstractMap.SimpleImmutableEntry;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import pl.edu.mimuw.cloudatlas.agent.messages.AgentMessage;
+import pl.edu.mimuw.cloudatlas.agent.messages.GetStateMessage;
+import pl.edu.mimuw.cloudatlas.agent.messages.RunQueriesMessage;
+import pl.edu.mimuw.cloudatlas.agent.messages.StanikMessage;
+import pl.edu.mimuw.cloudatlas.agent.messages.StateMessage;
+import pl.edu.mimuw.cloudatlas.agent.messages.UpdateAttributesMessage;
+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.TestUtil;
+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.ZMI;
+
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class QurnikTest {
+ private Qurnik qurnik;
+ private MockExecutor executor;
+
+ @Before
+ public void setupLocals() {
+ qurnik = new Qurnik();
+ executor = new MockExecutor(qurnik);
+ }
+
+ @Test
+ public void runQueriesRequestsState() throws Exception {
+ RunQueriesMessage message = new RunQueriesMessage("", 0);
+ qurnik.handleTyped(message);
+ AgentMessage receivedMessage = (AgentMessage) executor.messagesToPass.take();
+ assertEquals(ModuleType.STATE, receivedMessage.getDestinationModule());
+ StanikMessage stanikMessage = (StanikMessage) receivedMessage;
+ assertEquals(StanikMessage.Type.GET_STATE, stanikMessage.getType());
+ GetStateMessage getStateMessage = (GetStateMessage) stanikMessage;
+ assertEquals(ModuleType.QUERY, getStateMessage.getRequestingModule());
+ }
+
+ @Test
+ public void simpleQuery() throws Exception {
+ ZMI root = new ZMI();
+ ZMI son = new ZMI(root);
+ root.addSon(son);
+ AttributesMap sonAttributes = new AttributesMap();
+ sonAttributes.add("name", new ValueString("son"));
+ Map<Attribute, Entry<ValueQuery, ValueTime>> queries = new HashMap();
+ queries.put(
+ new Attribute("&query"),
+ new SimpleImmutableEntry(
+ new ValueQuery("SELECT 1 AS one"),
+ new ValueTime(0l)
+ )
+ );
+ StateMessage message = new StateMessage("", ModuleType.QUERY, 0, 0, root, queries);
+ long timeBefore = System.currentTimeMillis() / 1000;
+ qurnik.handleTyped(message);
+ long timeAfter = System.currentTimeMillis() / 1000;
+
+ assertEquals(1, executor.messagesToPass.size());
+ AgentMessage receivedMessage = (AgentMessage) executor.messagesToPass.take();
+ assertEquals(ModuleType.STATE, receivedMessage.getDestinationModule());
+ StanikMessage stanikMessage = (StanikMessage) receivedMessage;
+ assertEquals(StanikMessage.Type.UPDATE_ATTRIBUTES, stanikMessage.getType());
+ UpdateAttributesMessage updateAttributesMessage = (UpdateAttributesMessage) stanikMessage;
+ assertEquals("/", updateAttributesMessage.getPathName());
+ AttributesMap updatedAttributes = updateAttributesMessage.getAttributes();
+ assertEquals(2, TestUtil.iterableSize(updatedAttributes));
+ assertEquals(new ValueInt(1l), updatedAttributes.getOrNull("one"));
+ System.out.println(timeBefore);
+ System.out.println(updatedAttributes.getOrNull("timestamp"));
+ long timestamp = ((ValueTime) updatedAttributes.getOrNull("timestamp")).getValue();
+ assertTrue(timeBefore <= timestamp);
+ assertTrue(timestamp <= timeAfter);
+ }
+}