m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2019-12-29 19:12:48 +0100
committerMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2019-12-29 19:12:48 +0100
commit0e9ed16b0a048266b56d1238bd7a8a31e59fdac5 (patch)
tree2940168f2cc91be0d350989dc7461f0af2cf018b /src/test/java
parent7f03e1ddbd73831499d63eee1075b0b1226fa173 (diff)
Start running queries with Qurnik
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/QurnikTest.java86
-rw-r--r--src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/StanikTest.java30
-rw-r--r--src/test/java/pl/edu/mimuw/cloudatlas/model/TestUtil.java16
3 files changed, 112 insertions, 20 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);
+ }
+}
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 aeaf19f..8958472 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
@@ -1,7 +1,5 @@
package pl.edu.mimuw.cloudatlas.agent.modules;
-import java.util.Iterator;
-import java.util.List;
import java.util.AbstractMap.SimpleImmutableEntry;
import java.util.HashMap;
import java.util.Map;
@@ -16,6 +14,7 @@ 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.TestUtil;
import pl.edu.mimuw.cloudatlas.model.Value;
import pl.edu.mimuw.cloudatlas.model.ValueInt;
import pl.edu.mimuw.cloudatlas.model.ValueQuery;
@@ -32,7 +31,7 @@ public class StanikTest {
private MockExecutor executor;
@Before
- public void setupEventBus() {
+ public void setupLocals() {
stanik = new Stanik();
executor = new MockExecutor(stanik);
}
@@ -50,9 +49,9 @@ public class StanikTest {
ZMI zmi = stateMessage.getZMI();
assertNull(zmi.getFather());
assertTrue(zmi.getSons().isEmpty());
- assertEquals(1, iterableSize(zmi.getAttributes()));
+ assertEquals(1, TestUtil.iterableSize(zmi.getAttributes()));
Map<Attribute, Entry<ValueQuery, ValueTime>> queries = stateMessage.getQueries();
- assertEquals(0, iterableSize(queries.keySet()));
+ assertEquals(0, TestUtil.iterableSize(queries.keySet()));
}
@Test
@@ -81,7 +80,7 @@ public class StanikTest {
UpdateAttributesMessage message = new UpdateAttributesMessage("test_msg", 0, "/", attributes);
stanik.handleTyped(message);
AttributesMap actualAttributes = stanik.getHierarchy().getAttributes();
- assertEquals(3, iterableSize(actualAttributes));
+ 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"));
@@ -97,7 +96,7 @@ public class StanikTest {
UpdateAttributesMessage message = new UpdateAttributesMessage("test_msg", 0, "/new", attributes);
stanik.handleTyped(message);
AttributesMap actualAttributes = stanik.getHierarchy().findDescendant("/new").getAttributes();
- assertEquals(4, iterableSize(actualAttributes));
+ assertEquals(4, TestUtil.iterableSize(actualAttributes));
assertEquals(new ValueInt(1337l), actualAttributes.getOrNull("foo"));
assertEquals(new ValueString("baz"), actualAttributes.getOrNull("bar"));
assertEquals(new ValueString("new"), actualAttributes.getOrNull("name"));
@@ -120,7 +119,7 @@ public class StanikTest {
stanik.handleTyped(newMessage);
AttributesMap actualAttributes = stanik.getHierarchy().getAttributes();
- assertEquals(2, iterableSize(actualAttributes));
+ 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"));
}
@@ -140,7 +139,7 @@ public class StanikTest {
stanik.handleTyped(newMessage);
AttributesMap actualAttributes = stanik.getHierarchy().getAttributes();
- assertEquals(2, iterableSize(actualAttributes));
+ 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"));
}
@@ -153,7 +152,7 @@ public class StanikTest {
stanik.handleTyped(message);
HashMap<Attribute, Entry<ValueQuery, ValueTime>> actualQueries = stanik.getQueries();
- assertEquals(1, iterableSize(actualQueries.keySet()));
+ assertEquals(1, TestUtil.iterableSize(actualQueries.keySet()));
assertTrue(actualQueries.containsKey(new Attribute("&query")));
Entry<ValueQuery, ValueTime> timestampedQuery = actualQueries.get(new Attribute("&query"));
assertEquals(new ValueTime(42l), timestampedQuery.getValue());
@@ -177,7 +176,7 @@ public class StanikTest {
stanik.handleTyped(otherMessage);
HashMap<Attribute, Entry<ValueQuery, ValueTime>> actualQueries = stanik.getQueries();
- assertEquals(4, iterableSize(actualQueries.keySet()));
+ assertEquals(4, TestUtil.iterableSize(actualQueries.keySet()));
assertTrue(actualQueries.containsKey(new Attribute("&query1")));
assertTrue(actualQueries.containsKey(new Attribute("&query2")));
assertTrue(actualQueries.containsKey(new Attribute("&query3")));
@@ -199,13 +198,4 @@ public class StanikTest {
assertEquals(new ValueTime(43l), timestampedQuery4.getValue());
assertEquals(new ValueQuery("SELECT 1000 AS foo"), timestampedQuery4.getKey());
}
-
- public <T> int iterableSize(Iterable<T> iterable) {
- int count = 0;
- for (T attribute : iterable) {
- count++;
- }
-
- return count;
- }
}
diff --git a/src/test/java/pl/edu/mimuw/cloudatlas/model/TestUtil.java b/src/test/java/pl/edu/mimuw/cloudatlas/model/TestUtil.java
new file mode 100644
index 0000000..ed633d7
--- /dev/null
+++ b/src/test/java/pl/edu/mimuw/cloudatlas/model/TestUtil.java
@@ -0,0 +1,16 @@
+package pl.edu.mimuw.cloudatlas.model;
+
+public class TestUtil {
+ public static boolean valueLower(Value a, Value b) {
+ return ((ValueBoolean) a.isLowerThan(b)).getValue();
+ }
+
+ public static <T> int iterableSize(Iterable<T> iterable) {
+ int count = 0;
+ for (T attribute : iterable) {
+ count++;
+ }
+
+ return count;
+ }
+}