From 4eafd58eccad3223000567b5c8ef1ce75575dec7 Mon Sep 17 00:00:00 2001 From: Edward Capriolo Date: Fri, 10 Mar 2017 18:57:51 -0500 Subject: [PATCH] GOSSIP-73 gcounter to example app --- .../apache/gossip/crdt/GrowOnlyCounter.java | 2 +- .../examples/StandAloneNodeCrdtOrSet.java | 24 ++++++++++++++++++- src/test/java/org/apache/gossip/DataTest.java | 8 +++---- .../org/apache/gossip/crdt/OrSetTest.java | 2 +- 4 files changed, 29 insertions(+), 7 deletions(-) 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 { counter = 0L; } - public GrowOnlyCounter.Builder increment(Integer count) { + public GrowOnlyCounter.Builder increment(Long count) { counter += count; return this; } 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 s = (OrSet) gossipService.findCrdt("abc"); 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 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 clients, int finalCount) { + private void assertThatCountIsUpdated(final List clients, long finalCount) { TUnit.assertThat(() -> { return clients.get(0).findCrdt(gCounterKey); }).afterWaitingAtMost(10, TimeUnit.SECONDS).isEqualTo(new GrowOnlyCounter( 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 i = new OrSet<>(new OrSet.Builder().add(4).add(5).add(6).remove(5)); Assert.assertArrayEquals(Arrays.asList(4, 6).toArray(), i.value().toArray()); } - + @Test public void mergeTest(){ OrSet i = new OrSet<>(new OrSet.Builder().add(4).add(5).add(6).remove(5));