GOSSIP-63 merge cleanup
Project: http://git-wip-us.apache.org/repos/asf/incubator-gossip/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-gossip/commit/2622248e Tree: http://git-wip-us.apache.org/repos/asf/incubator-gossip/tree/2622248e Diff: http://git-wip-us.apache.org/repos/asf/incubator-gossip/diff/2622248e Branch: refs/heads/master Commit: 2622248e7b4a1f015058ee8d8126184657ab4dfb Parents: 19662d1 da1aba9 Author: Edward Capriolo <edlinuxg...@gmail.com> Authored: Fri Mar 10 11:10:31 2017 -0500 Committer: Edward Capriolo <edlinuxg...@gmail.com> Committed: Fri Mar 10 11:10:31 2017 -0500 ---------------------------------------------------------------------- .../org/apache/gossip/crdt/CrdtCounter.java | 24 ++++ .../java/org/apache/gossip/crdt/CrdtModule.java | 7 ++ .../org/apache/gossip/crdt/GrowOnlyCounter.java | 119 +++++++++++++++++++ src/test/java/org/apache/gossip/DataTest.java | 62 +++++++++- .../apache/gossip/crdt/GrowOnlyCounterTest.java | 54 +++++++++ 5 files changed, 262 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-gossip/blob/2622248e/src/test/java/org/apache/gossip/DataTest.java ---------------------------------------------------------------------- diff --cc src/test/java/org/apache/gossip/DataTest.java index 147702d,a8d57a7..5ca7be7 --- a/src/test/java/org/apache/gossip/DataTest.java +++ b/src/test/java/org/apache/gossip/DataTest.java @@@ -26,19 -28,19 +26,21 @@@ import java.util.List import java.util.UUID; import java.util.concurrent.TimeUnit; + import org.apache.gossip.crdt.GrowOnlyCounter; import org.apache.gossip.crdt.GrowOnlySet; import org.apache.gossip.crdt.OrSet; -import org.apache.gossip.model.GossipDataMessage; -import org.apache.gossip.model.SharedGossipDataMessage; +import org.apache.gossip.manager.GossipManager; +import org.apache.gossip.manager.GossipManagerBuilder; +import org.apache.gossip.model.PerNodeDataMessage; +import org.apache.gossip.model.SharedDataMessage; import org.junit.Test; import io.teknek.tunit.TUnit; -public class DataTest { +public class DataTest extends AbstractIntegrationBase { private String orSetKey = "cror"; + private String gCounterKey = "crdtgc"; @Test public void dataTest() throws InterruptedException, UnknownHostException, URISyntaxException{ @@@ -72,22 -74,22 +74,23 @@@ clients.get(0).gossipPerNodeData(msg()); clients.get(0).gossipSharedData(sharedMsg()); - TUnit.assertThat(()-> { + TUnit.assertThat(()-> { - GossipDataMessage x = clients.get(1).findPerNodeData(1 + "", "a"); + PerNodeDataMessage x = clients.get(1).findPerNodeGossipData(1 + "", "a"); if (x == null) return ""; else return x.getPayload(); }).afterWaitingAtMost(20, TimeUnit.SECONDS).isEqualTo("b"); -- - TUnit.assertThat(() -> { ++ + TUnit.assertThat(() -> { - SharedGossipDataMessage x = clients.get(1).findSharedData("a"); + SharedDataMessage x = clients.get(1).findSharedGossipData("a"); if (x == null) return ""; else return x.getPayload(); }).afterWaitingAtMost(20, TimeUnit.SECONDS).isEqualTo("c"); ++ givenDifferentDatumsInSet(clients); assertThatListIsMerged(clients); @@@ -95,11 -97,53 +98,54 @@@ assertThatOrSetIsMerged(clients); dropIt(clients); assertThatOrSetDelIsMerged(clients); ++ + + // test g counter + givenDifferentIncrement(clients); + assertThatCountIsUpdated(clients, 3); + givenIncreaseOther(clients); + assertThatCountIsUpdated(clients, 7); + + for (int i = 0; i < clusterMembers; ++i) { + clients.get(i).shutdown(); + } } - private void givenDifferentIncrement(final List<GossipService> clients) { ++ private void givenDifferentIncrement(final List<GossipManager> clients) { + { - SharedGossipDataMessage d = new SharedGossipDataMessage(); ++ SharedDataMessage d = new SharedDataMessage(); + d.setKey(gCounterKey); - d.setPayload(new GrowOnlyCounter(new GrowOnlyCounter.Builder(clients.get(0).getGossipManager()).increment(1))); ++ d.setPayload(new GrowOnlyCounter(new GrowOnlyCounter.Builder(clients.get(0)).increment(1))); + d.setExpireAt(Long.MAX_VALUE); + d.setTimestamp(System.currentTimeMillis()); - clients.get(0).getGossipManager().merge(d); ++ clients.get(0).merge(d); + } + { - SharedGossipDataMessage d = new SharedGossipDataMessage(); ++ SharedDataMessage d = new SharedDataMessage(); + d.setKey(gCounterKey); - d.setPayload(new GrowOnlyCounter(new GrowOnlyCounter.Builder(clients.get(1).getGossipManager()).increment(2))); ++ d.setPayload(new GrowOnlyCounter(new GrowOnlyCounter.Builder(clients.get(1)).increment(2))); + d.setExpireAt(Long.MAX_VALUE); + d.setTimestamp(System.currentTimeMillis()); - clients.get(1).getGossipManager().merge(d); ++ clients.get(1).merge(d); + } + } + - private void givenIncreaseOther(final List<GossipService> clients) { - GrowOnlyCounter gc = (GrowOnlyCounter) clients.get(1).getGossipManager().findCrdt(gCounterKey); ++ 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).getGossipManager()).increment(4)); ++ new GrowOnlyCounter.Builder(clients.get(1)).increment(4)); + - SharedGossipDataMessage d = new SharedGossipDataMessage(); ++ SharedDataMessage d = new SharedDataMessage(); + d.setKey(gCounterKey); + d.setPayload(gc2); + d.setExpireAt(Long.MAX_VALUE); + d.setTimestamp(System.currentTimeMillis()); - clients.get(1).getGossipManager().merge(d); ++ clients.get(1).merge(d); + } + - private void givenOrs(List<GossipService> clients) { + private void givenOrs(List<GossipManager> clients) { { - SharedGossipDataMessage d = new SharedGossipDataMessage(); + SharedDataMessage d = new SharedDataMessage(); d.setKey(orSetKey); d.setPayload(new OrSet<String>("1", "2")); d.setExpireAt(Long.MAX_VALUE); @@@ -143,14 -187,21 +189,22 @@@ }).afterWaitingAtMost(10, TimeUnit.SECONDS).equals(new OrSet<String>("1", "2", "4")); } - private void givenDifferentDatumsInSet(final List<GossipService> clients){ - clients.get(0).getGossipManager().merge(CrdtMessage("1")); - clients.get(1).getGossipManager().merge(CrdtMessage("2")); + private void givenDifferentDatumsInSet(final List<GossipManager> clients){ + clients.get(0).merge(CrdtMessage("1")); + clients.get(1).merge(CrdtMessage("2")); } - private void assertThatCountIsUpdated(final List<GossipService> clients, int finalCount) { ++ ++ private void assertThatCountIsUpdated(final List<GossipManager> clients, int finalCount) { + TUnit.assertThat(() -> { - return clients.get(0).getGossipManager().findCrdt(gCounterKey); ++ return clients.get(0).findCrdt(gCounterKey); + }).afterWaitingAtMost(10, TimeUnit.SECONDS).isEqualTo(new GrowOnlyCounter( - new GrowOnlyCounter.Builder(clients.get(0).getGossipManager()).increment(finalCount))); ++ new GrowOnlyCounter.Builder(clients.get(0)).increment(finalCount))); + } + - private void assertThatListIsMerged(final List<GossipService> clients){ + private void assertThatListIsMerged(final List<GossipManager> clients){ TUnit.assertThat(() -> { - return clients.get(0).getGossipManager().findCrdt("cr"); + return clients.get(0).findCrdt("cr"); }).afterWaitingAtMost(10, TimeUnit.SECONDS).isEqualTo(new GrowOnlySet<String>(Arrays.asList("1","2"))); } @@@ -160,11 -211,11 +214,11 @@@ d.setPayload(new GrowOnlySet<String>( Arrays.asList(item))); d.setExpireAt(Long.MAX_VALUE); d.setTimestamp(System.currentTimeMillis()); - return d; + return d; } - private GossipDataMessage msg(){ - GossipDataMessage g = new GossipDataMessage(); + private PerNodeDataMessage msg(){ + PerNodeDataMessage g = new PerNodeDataMessage(); g.setExpireAt(Long.MAX_VALUE); g.setKey("a"); g.setPayload("b");