GOSSIP-2 merge
Project: http://git-wip-us.apache.org/repos/asf/incubator-gossip/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-gossip/commit/2c1dc437 Tree: http://git-wip-us.apache.org/repos/asf/incubator-gossip/tree/2c1dc437 Diff: http://git-wip-us.apache.org/repos/asf/incubator-gossip/diff/2c1dc437 Branch: refs/heads/master Commit: 2c1dc4375bb1123334468488db72062546a9a9f2 Parents: 496f299 fe196cd Author: Edward Capriolo <[email protected]> Authored: Tue Jun 7 23:10:14 2016 -0400 Committer: Edward Capriolo <[email protected]> Committed: Tue Jun 7 23:10:14 2016 -0400 ---------------------------------------------------------------------- .../java/org/apache/gossip/GossipService.java | 3 +- .../manager/random/RandomGossipManager.java | 72 +++++++++++++++++++- .../manager/RandomGossipManagerBuilderTest.java | 16 ++--- 3 files changed, 79 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-gossip/blob/2c1dc437/src/main/java/org/apache/gossip/GossipService.java ---------------------------------------------------------------------- diff --cc src/main/java/org/apache/gossip/GossipService.java index 866dc03,cf727a8..b149719 --- a/src/main/java/org/apache/gossip/GossipService.java +++ b/src/main/java/org/apache/gossip/GossipService.java @@@ -63,8 -62,8 +63,7 @@@ public class GossipService gossipManager = RandomGossipManager.newBuilder() .withId(id) .cluster(cluster) -- .address(ipAddress) -- .port(port) ++ .uri(uri) .settings(settings) .gossipMembers(gossipMembers) .listener(listener) http://git-wip-us.apache.org/repos/asf/incubator-gossip/blob/2c1dc437/src/main/java/org/apache/gossip/manager/random/RandomGossipManager.java ---------------------------------------------------------------------- diff --cc src/main/java/org/apache/gossip/manager/random/RandomGossipManager.java index 7aa4435,d407d2a..1d2075e --- a/src/main/java/org/apache/gossip/manager/random/RandomGossipManager.java +++ b/src/main/java/org/apache/gossip/manager/random/RandomGossipManager.java @@@ -23,13 -23,83 +23,81 @@@ import org.apache.gossip.event.GossipLi import org.apache.gossip.manager.GossipManager; import org.apache.gossip.manager.impl.OnlyProcessReceivedPassiveGossipThread; +import java.net.URI; +import java.util.List; + + import java.util.ArrayList; + import java.util.List; + public class RandomGossipManager extends GossipManager { - public RandomGossipManager(String cluster, URI uri, String id, - GossipSettings settings, List<GossipMember> gossipMembers, GossipListener listener) { + + public static ManagerBuilder newBuilder() { + return new ManagerBuilder(); + } + + public static final class ManagerBuilder { + private String cluster; - private String address; - private int port; ++ private URI uri; + private String id; + private GossipSettings settings; + private List<GossipMember> gossipMembers; + private GossipListener listener; + + private ManagerBuilder() {} + + private void checkArgument(boolean check, String msg) { + if (!check) { + throw new IllegalArgumentException(msg); + } + } + + public ManagerBuilder cluster(String cluster) { + this.cluster = cluster; + return this; + } + - public ManagerBuilder address(String address) { - this.address = address; - return this; - } - - public ManagerBuilder port(int port) { - this.port = port; - return this; - } - + public ManagerBuilder withId(String id) { + this.id = id; + return this; + } + + public ManagerBuilder settings(GossipSettings settings) { + this.settings = settings; + return this; + } + + public ManagerBuilder gossipMembers(List<GossipMember> members) { + this.gossipMembers = members; + return this; + } + + public ManagerBuilder listener(GossipListener listener) { + this.listener = listener; + return this; + } + ++ public ManagerBuilder uri(URI uri){ ++ this.uri = uri; ++ return this; ++ } ++ + public RandomGossipManager build() { + checkArgument(id != null, "You must specify an id"); + checkArgument(cluster != null, "You must specify a cluster name"); + checkArgument(settings != null, "You must specify gossip settings"); ++ checkArgument(uri != null, "You must specify a uri"); + + if (this.gossipMembers == null) { + this.gossipMembers = new ArrayList<>(); + } + - return new RandomGossipManager(cluster, address, port, id, settings, gossipMembers, listener); ++ return new RandomGossipManager(cluster, uri, id, settings, gossipMembers, listener); + } + } + - private RandomGossipManager(String cluster, String address, int port, String id, - GossipSettings settings, List<GossipMember> gossipMembers, GossipListener listener) { ++ private RandomGossipManager(String cluster, URI uri, String id, GossipSettings settings, ++ List<GossipMember> gossipMembers, GossipListener listener) { super(OnlyProcessReceivedPassiveGossipThread.class, RandomActiveGossipThread.class, cluster, - address, port, id, settings, gossipMembers, listener); + uri, id, settings, gossipMembers, listener); } } http://git-wip-us.apache.org/repos/asf/incubator-gossip/blob/2c1dc437/src/test/java/org/apache/gossip/manager/RandomGossipManagerBuilderTest.java ---------------------------------------------------------------------- diff --cc src/test/java/org/apache/gossip/manager/RandomGossipManagerBuilderTest.java index 38b8ab4,38b8ab4..d753676 --- a/src/test/java/org/apache/gossip/manager/RandomGossipManagerBuilderTest.java +++ b/src/test/java/org/apache/gossip/manager/RandomGossipManagerBuilderTest.java @@@ -28,6 -28,6 +28,9 @@@ import org.junit.Test import javax.management.Notification; import javax.management.NotificationListener; ++ ++import java.net.URI; ++import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; @@@ -63,12 -63,12 +66,11 @@@ public class RandomGossipManagerBuilder } @Test -- public void createMembersListIfNull() { ++ public void createMembersListIfNull() throws URISyntaxException { RandomGossipManager gossipManager = RandomGossipManager.newBuilder() .withId("id") .cluster("aCluster") -- .port(8080) -- .address("localhost") ++ .uri(new URI("udp://localhost:2000")) .settings(new GossipSettings()) .gossipMembers(null).build(); @@@ -76,19 -76,19 +78,17 @@@ } @Test -- public void useMemberListIfProvided() { -- LocalGossipMember member = new LocalGossipMember("aCluster", "localhost", 2000, "aGossipMember", ++ public void useMemberListIfProvided() throws URISyntaxException { ++ LocalGossipMember member = new LocalGossipMember("aCluster", new URI("udp://localhost:2000"), "aGossipMember", System.currentTimeMillis(), new TestNotificationListener(), 60000); -- List<GossipMember> memberList = new ArrayList<>(); memberList.add(member); -- RandomGossipManager gossipManager = RandomGossipManager.newBuilder() .withId("id") .cluster("aCluster") .settings(new GossipSettings()) ++ .uri(new URI("udp://localhost:8000")) .gossipMembers(memberList).build(); -- Assert.assertEquals(1, gossipManager.getMemberList().size()); Assert.assertEquals(member.getId(), gossipManager.getMemberList().get(0).getId()); }
