diff options
| author | Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com> | 2020-01-12 22:25:09 +0100 | 
|---|---|---|
| committer | Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com> | 2020-01-12 22:25:09 +0100 | 
| commit | cd247e8d64b2ef0aed7f0afdccd711008cd60fcd (patch) | |
| tree | cf54497163b95e32fc8932b0ba13acc3fe2ca503 /src | |
| parent | 411bf8f0dae524d70a0754049b5494182ade4a05 (diff) | |
Add default queries for contacts and cardinality
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java | 22 | ||||
| -rw-r--r-- | src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/StanikTest.java | 9 | 
2 files changed, 27 insertions, 4 deletions
| 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 a428232..6e7d4dc 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 @@ -2,6 +2,7 @@ package pl.edu.mimuw.cloudatlas.agent.modules;  import java.nio.file.Path;  import java.util.*; +import java.util.AbstractMap.SimpleImmutableEntry;  import java.util.Map.Entry;  import pl.edu.mimuw.cloudatlas.agent.messages.*; @@ -30,6 +31,24 @@ public class Stanik extends Module {          this.freshnessPeriod = freshnessPeriod;          this.contactsTimestamp = ValueUtils.currentTime();          this.contacts = new HashSet<>(); +        setDefaultQueries(); +    } + +    private void setDefaultQueries() { +        String cardinalityQuery = "SELECT sum(cardinality) AS cardinality"; +        String contactsQuery = "SELECT random(5, unfold(contacts)) AS contacts"; + +        setDefaultQuery("&cardinality", cardinalityQuery); +        setDefaultQuery("&contacts", contactsQuery); +    } + +    private void setDefaultQuery(String name, String query) { +        try { +            ValueQuery queryValue = new ValueQuery(query); +            queries.put(new Attribute(name), new SimpleImmutableEntry(queryValue, new ValueTime(0l))); +        } catch (Exception e) { +            System.out.println("ERROR: failed to compile default query"); +        }      }      public Stanik(PathName ourPath) { @@ -90,6 +109,9 @@ public class Stanik extends Module {          if (ValueUtils.isPrefix(zmi.getPathName(), ourPath)) {              zmi.getAttributes().addOrChange("owner", new ValueString(ourPath.toString()));          } +        if (zmi.getPathName().equals(ourPath)) { +            zmi.getAttributes().addOrChange("cardinality", new ValueInt(1l)); +        }          for (ZMI son : zmi.getSons()) {              addValuesRecursive(son, level + 1);          } 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 d16d917..92ba051 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 @@ -61,7 +61,7 @@ public class StanikTest {          assertEquals(new ValueInt(0l), zmi.getAttributes().getOrNull("level"));          assertEquals(new ValueString("/new"), zmi.getAttributes().getOrNull("owner"));          Map<Attribute, Entry<ValueQuery, ValueTime>> queries = stateMessage.getQueries(); -        assertEquals(0, TestUtil.iterableSize(queries.keySet())); +        assertEquals(2, TestUtil.iterableSize(queries.keySet()));      }      @Test @@ -127,11 +127,12 @@ public class StanikTest {          StateMessage newReceivedMessage = (StateMessage) executor.messagesToPass.poll();          AttributesMap actualAttributes = newReceivedMessage.getZMI().findDescendant("/new").getAttributes(); -        assertEquals(6, TestUtil.iterableSize(actualAttributes)); +        assertEquals(7, TestUtil.iterableSize(actualAttributes));          assertEquals(new ValueInt(1337l), actualAttributes.getOrNull("foo"));          assertEquals(new ValueString("baz"), actualAttributes.getOrNull("bar"));          assertEquals(new ValueString("new"), actualAttributes.getOrNull("name"));          assertEquals(new ValueString("/new"), actualAttributes.getOrNull("owner")); +        assertEquals(new ValueInt(1l), actualAttributes.getOrNull("cardinality"));          assertEquals(testTime, actualAttributes.getOrNull("timestamp"));          assertEquals(new ValueInt(1l), actualAttributes.getOrNull("level"));      } @@ -223,7 +224,7 @@ public class StanikTest {          stanik.handleTyped(message);          HashMap<Attribute, Entry<ValueQuery, ValueTime>> actualQueries = stanik.getQueries(); -        assertEquals(1, TestUtil.iterableSize(actualQueries.keySet())); +        assertEquals(3, 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()); @@ -247,7 +248,7 @@ public class StanikTest {          stanik.handleTyped(otherMessage);          HashMap<Attribute, Entry<ValueQuery, ValueTime>> actualQueries = stanik.getQueries(); -        assertEquals(4, TestUtil.iterableSize(actualQueries.keySet())); +        assertEquals(6, TestUtil.iterableSize(actualQueries.keySet()));          assertTrue(actualQueries.containsKey(new Attribute("&query1")));          assertTrue(actualQueries.containsKey(new Attribute("&query2")));          assertTrue(actualQueries.containsKey(new Attribute("&query3"))); |