Repository: incubator-gossip Updated Branches: refs/heads/master 2622248e7 -> 4eafd58ec
GOSSIP-73 gcounter to example app Project: http://git-wip-us.apache.org/repos/asf/incubator-gossip/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-gossip/commit/4eafd58e Tree: http://git-wip-us.apache.org/repos/asf/incubator-gossip/tree/4eafd58e Diff: http://git-wip-us.apache.org/repos/asf/incubator-gossip/diff/4eafd58e Branch: refs/heads/master Commit: 4eafd58eccad3223000567b5c8ef1ce75575dec7 Parents: 2622248 Author: Edward Capriolo <[email protected]> Authored: Fri Mar 10 18:57:51 2017 -0500 Committer: Edward Capriolo <[email protected]> Committed: Fri Mar 10 18:57:51 2017 -0500 ---------------------------------------------------------------------- .../org/apache/gossip/crdt/GrowOnlyCounter.java | 2 +- .../examples/StandAloneNodeCrdtOrSet.java | 24 +++++++++++++++++++- src/test/java/org/apache/gossip/DataTest.java | 8 +++---- .../java/org/apache/gossip/crdt/OrSetTest.java | 2 +- 4 files changed, 29 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-gossip/blob/4eafd58e/src/main/java/org/apache/gossip/crdt/GrowOnlyCounter.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/gossip/crdt/GrowOnlyCounter.java b/src/main/java/org/apache/gossip/crdt/GrowOnlyCounter.java index 9156142..dd1505a 100644 --- a/src/main/java/org/apache/gossip/crdt/GrowOnlyCounter.java +++ b/src/main/java/org/apache/gossip/crdt/GrowOnlyCounter.java @@ -111,7 +111,7 @@ public class GrowOnlyCounter implements CrdtCounter<Long, GrowOnlyCounter> { counter = 0L; } - public GrowOnlyCounter.Builder increment(Integer count) { + public GrowOnlyCounter.Builder increment(Long count) { counter += count; return this; } http://git-wip-us.apache.org/repos/asf/incubator-gossip/blob/4eafd58e/src/main/java/org/apache/gossip/examples/StandAloneNodeCrdtOrSet.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/gossip/examples/StandAloneNodeCrdtOrSet.java b/src/main/java/org/apache/gossip/examples/StandAloneNodeCrdtOrSet.java index 00f1279..0c5c0d5 100644 --- a/src/main/java/org/apache/gossip/examples/StandAloneNodeCrdtOrSet.java +++ b/src/main/java/org/apache/gossip/examples/StandAloneNodeCrdtOrSet.java @@ -24,6 +24,7 @@ import java.net.URI; import java.util.Arrays; import org.apache.gossip.GossipSettings; import org.apache.gossip.RemoteMember; +import org.apache.gossip.crdt.GrowOnlyCounter; import org.apache.gossip.crdt.OrSet; import org.apache.gossip.manager.GossipManager; import org.apache.gossip.manager.GossipManagerBuilder; @@ -51,6 +52,9 @@ public class StandAloneNodeCrdtOrSet { System.out.println("---------- " + (gossipService.findCrdt("abc") == null ? "": gossipService.findCrdt("abc").value())); System.out.println("********** " + gossipService.findCrdt("abc")); + System.out.println("^^^^^^^^^^ " + (gossipService.findCrdt("def") == null ? "": + gossipService.findCrdt("def").value())); + System.out.println("$$$$$$$$$$ " + gossipService.findCrdt("def")); try { Thread.sleep(2000); } catch (Exception e) {} @@ -65,13 +69,31 @@ public class StandAloneNodeCrdtOrSet { String val = line.substring(2); if (op == 'a'){ addData(val, gossipService); - } else { + } else if (op == 'r') { removeData(val, gossipService); + } else if (op == 'g'){ + gcount(val, gossipService); } } } } + private static void gcount(String val, GossipManager gossipManager){ + GrowOnlyCounter c = (GrowOnlyCounter) gossipManager.findCrdt("def"); + Long l = Long.valueOf(val); + if (c == null){ + c = new GrowOnlyCounter(new GrowOnlyCounter.Builder(gossipManager).increment((l))); + } else { + c = new GrowOnlyCounter(c, new GrowOnlyCounter.Builder(gossipManager).increment((l))); + } + SharedDataMessage m = new SharedDataMessage(); + m.setExpireAt(Long.MAX_VALUE); + m.setKey("def"); + m.setPayload(c); + m.setTimestamp(System.currentTimeMillis()); + gossipManager.merge(m); + } + private static void removeData(String val, GossipManager gossipService){ @SuppressWarnings("unchecked") OrSet<String> s = (OrSet<String>) gossipService.findCrdt("abc"); http://git-wip-us.apache.org/repos/asf/incubator-gossip/blob/4eafd58e/src/test/java/org/apache/gossip/DataTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/gossip/DataTest.java b/src/test/java/org/apache/gossip/DataTest.java index 5ca7be7..f0c2186 100644 --- a/src/test/java/org/apache/gossip/DataTest.java +++ b/src/test/java/org/apache/gossip/DataTest.java @@ -115,7 +115,7 @@ public class DataTest extends AbstractIntegrationBase { { SharedDataMessage d = new SharedDataMessage(); d.setKey(gCounterKey); - d.setPayload(new GrowOnlyCounter(new GrowOnlyCounter.Builder(clients.get(0)).increment(1))); + d.setPayload(new GrowOnlyCounter(new GrowOnlyCounter.Builder(clients.get(0)).increment(1L))); d.setExpireAt(Long.MAX_VALUE); d.setTimestamp(System.currentTimeMillis()); clients.get(0).merge(d); @@ -123,7 +123,7 @@ public class DataTest extends AbstractIntegrationBase { { SharedDataMessage d = new SharedDataMessage(); d.setKey(gCounterKey); - d.setPayload(new GrowOnlyCounter(new GrowOnlyCounter.Builder(clients.get(1)).increment(2))); + d.setPayload(new GrowOnlyCounter(new GrowOnlyCounter.Builder(clients.get(1)).increment(2L))); d.setExpireAt(Long.MAX_VALUE); d.setTimestamp(System.currentTimeMillis()); clients.get(1).merge(d); @@ -133,7 +133,7 @@ public class DataTest extends AbstractIntegrationBase { private void givenIncreaseOther(final List<GossipManager> clients) { GrowOnlyCounter gc = (GrowOnlyCounter) clients.get(1).findCrdt(gCounterKey); GrowOnlyCounter gc2 = new GrowOnlyCounter(gc, - new GrowOnlyCounter.Builder(clients.get(1)).increment(4)); + new GrowOnlyCounter.Builder(clients.get(1)).increment(4L)); SharedDataMessage d = new SharedDataMessage(); d.setKey(gCounterKey); @@ -195,7 +195,7 @@ public class DataTest extends AbstractIntegrationBase { } - private void assertThatCountIsUpdated(final List<GossipManager> clients, int finalCount) { + private void assertThatCountIsUpdated(final List<GossipManager> clients, long finalCount) { TUnit.assertThat(() -> { return clients.get(0).findCrdt(gCounterKey); }).afterWaitingAtMost(10, TimeUnit.SECONDS).isEqualTo(new GrowOnlyCounter( http://git-wip-us.apache.org/repos/asf/incubator-gossip/blob/4eafd58e/src/test/java/org/apache/gossip/crdt/OrSetTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/gossip/crdt/OrSetTest.java b/src/test/java/org/apache/gossip/crdt/OrSetTest.java index b3d8af3..b19f221 100644 --- a/src/test/java/org/apache/gossip/crdt/OrSetTest.java +++ b/src/test/java/org/apache/gossip/crdt/OrSetTest.java @@ -37,7 +37,7 @@ public class OrSetTest { OrSet<Integer> i = new OrSet<>(new OrSet.Builder<Integer>().add(4).add(5).add(6).remove(5)); Assert.assertArrayEquals(Arrays.asList(4, 6).toArray(), i.value().toArray()); } - + @Test public void mergeTest(){ OrSet<Integer> i = new OrSet<>(new OrSet.Builder<Integer>().add(4).add(5).add(6).remove(5));
