GOSSIP-73 gcounter to example app
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 @@
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.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 @@
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 @@
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");
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 @@
{
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 @@
{
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 @@
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 @@
}
- 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(
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 @@
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));