From ef0c501673f8cab1e2cd718a469d0565c16d7062 Mon Sep 17 00:00:00 2001 From: artem-v Date: Wed, 6 Nov 2019 18:37:25 +0200 Subject: [PATCH 1/2] Added test on repeated start stop of cluster instance --- .../io/scalecube/cluster/ClusterTest.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/cluster/src/test/java/io/scalecube/cluster/ClusterTest.java b/cluster/src/test/java/io/scalecube/cluster/ClusterTest.java index 98412215..95a27ce5 100644 --- a/cluster/src/test/java/io/scalecube/cluster/ClusterTest.java +++ b/cluster/src/test/java/io/scalecube/cluster/ClusterTest.java @@ -32,6 +32,48 @@ public class ClusterTest extends BaseTest { public static final Duration TIMEOUT = Duration.ofSeconds(30); public static final int CONNECT_TIMEOUT = 3000; + @Test + public void testStartStopRepeatedly() throws Exception { + Address address = Address.from("localhost:4848"); + + // Start seed node + Cluster seedNode = + new ClusterImpl() + .gossip(opts -> opts.gossipInterval(1)) + .failureDetector(opts -> opts.pingInterval(1)) + .membership(opts -> opts.syncInterval(1)) + .transport(opts -> opts.host(address.host()).port(address.port())) + .transport(opts -> opts.connectTimeout(CONNECT_TIMEOUT)) + .startAwait(); + + Cluster otherNode = + new ClusterImpl() + .membership(opts -> opts.seedMembers(address)) + .gossip(opts -> opts.gossipInterval(1)) + .failureDetector(opts -> opts.pingInterval(1)) + .membership(opts -> opts.syncInterval(1)) + .transport(opts -> opts.connectTimeout(CONNECT_TIMEOUT)) + .startAwait(); + + assertEquals(2, seedNode.members().size()); + assertEquals(2, otherNode.members().size()); + + for (int i = 0; i < 15; i++) { + seedNode.shutdown(); + seedNode.onShutdown().then(Mono.delay(Duration.ofMillis(100))).block(); + + seedNode = + new ClusterImpl() + .transport(opts -> opts.host(address.host()).port(address.port())) + .startAwait(); + + TimeUnit.SECONDS.sleep(1); + + assertEquals(2, seedNode.members().size()); + assertEquals(2, otherNode.members().size()); + } + } + @Test public void testMembersAccessFromScheduler() { // Start seed node From f38f458224833f058edd2f3d36cdb4aa4535ab7e Mon Sep 17 00:00:00 2001 From: artem-v Date: Wed, 6 Nov 2019 21:50:56 +0200 Subject: [PATCH 2/2] Added test on repeated start stop of cluster instance --- .../java/io/scalecube/cluster/ClusterTest.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/cluster/src/test/java/io/scalecube/cluster/ClusterTest.java b/cluster/src/test/java/io/scalecube/cluster/ClusterTest.java index 95a27ce5..3c880189 100644 --- a/cluster/src/test/java/io/scalecube/cluster/ClusterTest.java +++ b/cluster/src/test/java/io/scalecube/cluster/ClusterTest.java @@ -39,9 +39,9 @@ public void testStartStopRepeatedly() throws Exception { // Start seed node Cluster seedNode = new ClusterImpl() - .gossip(opts -> opts.gossipInterval(1)) - .failureDetector(opts -> opts.pingInterval(1)) - .membership(opts -> opts.syncInterval(1)) + .gossip(opts -> opts.gossipInterval(100)) + .failureDetector(opts -> opts.pingInterval(100)) + .membership(opts -> opts.syncInterval(100)) .transport(opts -> opts.host(address.host()).port(address.port())) .transport(opts -> opts.connectTimeout(CONNECT_TIMEOUT)) .startAwait(); @@ -49,22 +49,26 @@ public void testStartStopRepeatedly() throws Exception { Cluster otherNode = new ClusterImpl() .membership(opts -> opts.seedMembers(address)) - .gossip(opts -> opts.gossipInterval(1)) - .failureDetector(opts -> opts.pingInterval(1)) - .membership(opts -> opts.syncInterval(1)) + .gossip(opts -> opts.gossipInterval(100)) + .failureDetector(opts -> opts.pingInterval(100)) + .membership(opts -> opts.syncInterval(100)) .transport(opts -> opts.connectTimeout(CONNECT_TIMEOUT)) .startAwait(); assertEquals(2, seedNode.members().size()); assertEquals(2, otherNode.members().size()); - for (int i = 0; i < 15; i++) { + for (int i = 0; i < 10; i++) { seedNode.shutdown(); seedNode.onShutdown().then(Mono.delay(Duration.ofMillis(100))).block(); seedNode = new ClusterImpl() + .gossip(opts -> opts.gossipInterval(100)) + .failureDetector(opts -> opts.pingInterval(100)) + .membership(opts -> opts.syncInterval(100)) .transport(opts -> opts.host(address.host()).port(address.port())) + .transport(opts -> opts.connectTimeout(CONNECT_TIMEOUT)) .startAwait(); TimeUnit.SECONDS.sleep(1);