GOSSIP-73 gcounter to example app

This commit is contained in:
Edward Capriolo
2017-03-10 18:57:51 -05:00
parent 2622248e7b
commit 4eafd58ecc
4 changed files with 29 additions and 7 deletions

View File

@ -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;
}

View File

@ -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");

View File

@ -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(

View File

@ -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));