diff --git a/src/main/java/com/google/code/gossip/GossipService.java b/src/main/java/com/google/code/gossip/GossipService.java index 0fea049..41f044e 100644 --- a/src/main/java/com/google/code/gossip/GossipService.java +++ b/src/main/java/com/google/code/gossip/GossipService.java @@ -74,4 +74,14 @@ public class GossipService { out.println("[" + addressString + "][" + new Date().toString() + "] " + message);*/ out.println("[" + new Date().toString() + "] " + message); } + + public GossipManager get_gossipManager() { + return _gossipManager; + } + + public void set_gossipManager(GossipManager _gossipManager) { + this._gossipManager = _gossipManager; + } + + } diff --git a/src/main/java/com/google/code/gossip/manager/PassiveGossipThread.java b/src/main/java/com/google/code/gossip/manager/PassiveGossipThread.java index 477dd6f..9b15a19 100644 --- a/src/main/java/com/google/code/gossip/manager/PassiveGossipThread.java +++ b/src/main/java/com/google/code/gossip/manager/PassiveGossipThread.java @@ -36,27 +36,16 @@ abstract public class PassiveGossipThread implements Runnable { public PassiveGossipThread(GossipManager gossipManager) { _gossipManager = gossipManager; - - // Start the service on the given port number. try { - //_server = new DatagramSocket( _gossipManager.getMyself().getPort()); - SocketAddress socketAddress = new InetSocketAddress(_gossipManager.getMyself().getHost(), _gossipManager.getMyself().getPort()); _server = new DatagramSocket(socketAddress); - - // The server successfully started on the current port. GossipService.info("Gossip service successfully initialized on port " + _gossipManager.getMyself().getPort()); GossipService.debug("I am " + _gossipManager.getMyself()); } catch (SocketException ex) { System.err.println(ex); _server = null; - // Let's communicate this to the user. - /* - GossipService.error("Error while starting the gossip service on port " + _gossipManager.getMyself().getPort() + ": " + ex.getMessage()); - System.exit(-1);*/ throw new RuntimeException(ex); } - _keepRunning = new AtomicBoolean(true); } diff --git a/src/test/java/io/teknek/gossip/TenNodeThreeSeedTest.java b/src/test/java/io/teknek/gossip/TenNodeThreeSeedTest.java new file mode 100644 index 0000000..f826d42 --- /dev/null +++ b/src/test/java/io/teknek/gossip/TenNodeThreeSeedTest.java @@ -0,0 +1,45 @@ +package io.teknek.gossip; + +import java.net.UnknownHostException; +import java.util.ArrayList; + +import junit.framework.Assert; + +import org.junit.Test; + +import com.google.code.gossip.GossipMember; +import com.google.code.gossip.GossipService; +import com.google.code.gossip.GossipSettings; +import com.google.code.gossip.LogLevel; +import com.google.code.gossip.RemoteGossipMember; + +public class TenNodeThreeSeedTest { + + + @Test + public void test() throws UnknownHostException, InterruptedException{ + GossipSettings settings = new GossipSettings(); + + int seedNodes = 3; + ArrayList startupMembers = new ArrayList(); + for (int i = 1; i < seedNodes+1; ++i) { + startupMembers.add(new RemoteGossipMember("127.0.0." + i, 2000)); + } + + ArrayList clients = new ArrayList(); + int clusterMembers = 10; + for (int i = 1; i < clusterMembers+1; ++i) { + GossipService gossipService = new GossipService("127.0.0."+i, 2000, LogLevel.DEBUG, startupMembers, settings); + clients.add(gossipService); + gossipService.start(); + Thread.sleep(settings.getCleanupInterval() + 1000); + } + Thread.sleep(10000); + for (int i = 0; i < clusterMembers; ++i) { + Assert.assertEquals(9, clients.get(i).get_gossipManager().getMemberList().size()); + } + for (int i = 0; i < clusterMembers; ++i) { + clients.get(i).shutdown(); + } + } +}