diff options
author | Martin Polden <mpolden@mpolden.no> | 2020-12-13 10:48:52 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2020-12-13 11:18:04 +0100 |
commit | 5f4b5e5af6e1ec45fcab006ae08a414f9f1c4e58 (patch) | |
tree | 7630d2938765af8c60ec29439325df1ca97042fa /zookeeper-server/zookeeper-server-common/src/test | |
parent | 1a5f1b49f221a50379006f39b5386d0723f1410b (diff) |
Prevent tests from blocking until shutdown timeout
Diffstat (limited to 'zookeeper-server/zookeeper-server-common/src/test')
-rw-r--r-- | zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java | 75 |
1 files changed, 35 insertions, 40 deletions
diff --git a/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java b/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java index 020c84f74fb..1ca79a885fb 100644 --- a/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java +++ b/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java @@ -71,18 +71,22 @@ public class ReconfigurerTest { @Test public void testReconfigureFailsWithReconfigInProgressThenSucceeds() { - reconfigurer = new TestableReconfigurer(new TemporarilyFailVespaZooKeeperAdmin()); - ZookeeperServerConfig initialConfig = createConfig(3, true); - reconfigurer.startOrReconfigure(initialConfig); - assertSame(initialConfig, reconfigurer.activeConfig()); - - ZookeeperServerConfig nextConfig = createConfig(5, true); - reconfigurer.startOrReconfigure(nextConfig); - assertEquals("node1:2181", reconfigurer.connectionSpec()); - assertEquals("3=node3:2182:2183;2181,4=node4:2182:2183;2181", reconfigurer.joiningServers()); - assertNull("No servers are leaving", reconfigurer.leavingServers()); - assertEquals(1, reconfigurer.reconfigurations()); - assertSame(nextConfig, reconfigurer.activeConfig()); + try { + TestableReconfigurer reconfigurer = new TestableReconfigurer(new TestableVespaZooKeeperAdmin().failures(3)); + ZookeeperServerConfig initialConfig = createConfig(3, true); + reconfigurer.startOrReconfigure(initialConfig); + assertSame(initialConfig, reconfigurer.activeConfig()); + + ZookeeperServerConfig nextConfig = createConfig(5, true); + reconfigurer.startOrReconfigure(nextConfig); + assertEquals("node1:2181", reconfigurer.connectionSpec()); + assertEquals("3=node3:2182:2183;2181,4=node4:2182:2183;2181", reconfigurer.joiningServers()); + assertNull("No servers are leaving", reconfigurer.leavingServers()); + assertEquals(1, reconfigurer.reconfigurations()); + assertSame(nextConfig, reconfigurer.activeConfig()); + } finally { + reconfigurer.shutdown(); + } } @Test @@ -119,13 +123,13 @@ public class ReconfigurerTest { return builder; } - private static class TestableReconfigurer extends Reconfigurer implements VespaZooKeeperServer{ + private static class TestableReconfigurer extends Reconfigurer implements VespaZooKeeperServer { - private final TestableVespaZooKeeperAdmin zkReconfigurer; + private final TestableVespaZooKeeperAdmin zooKeeperAdmin; - TestableReconfigurer(TestableVespaZooKeeperAdmin zkReconfigurer) { - super(zkReconfigurer); - this.zkReconfigurer = zkReconfigurer; + TestableReconfigurer(TestableVespaZooKeeperAdmin zooKeeperAdmin) { + super(zooKeeperAdmin, (ignored) -> {}); + this.zooKeeperAdmin = zooKeeperAdmin; HostName.setHostNameForTestingOnly("node1"); } @@ -133,25 +137,20 @@ public class ReconfigurerTest { startOrReconfigure(newConfig, this); } - @Override - void startOrReconfigure(ZookeeperServerConfig newConfig, VespaZooKeeperServer server) { - super.startOrReconfigure(newConfig, l -> {}, this); - } - String connectionSpec() { - return zkReconfigurer.connectionSpec; + return zooKeeperAdmin.connectionSpec; } String joiningServers() { - return zkReconfigurer.joiningServers; + return zooKeeperAdmin.joiningServers; } String leavingServers() { - return zkReconfigurer.leavingServers; + return zooKeeperAdmin.leavingServers; } int reconfigurations() { - return zkReconfigurer.reconfigurations; + return zooKeeperAdmin.reconfigurations; } @Override @@ -166,8 +165,18 @@ public class ReconfigurerTest { String leavingServers; int reconfigurations = 0; + private int failures = 0; + private int attempts = 0; + + public TestableVespaZooKeeperAdmin failures(int failures) { + this.failures = failures; + return this; + } + @Override public void reconfigure(String connectionSpec, String joiningServers, String leavingServers) throws ReconfigException { + if (++attempts < failures) + throw new ReconfigException("Reconfig failed"); this.connectionSpec = connectionSpec; this.joiningServers = joiningServers; this.leavingServers = leavingServers; @@ -176,19 +185,5 @@ public class ReconfigurerTest { } - // Fails 3 times with KeeperException.ReconfigInProgress(), then succeeds - private static class TemporarilyFailVespaZooKeeperAdmin extends TestableVespaZooKeeperAdmin { - - private int attempts = 0; - - public void reconfigure(String connectionSpec, String joiningServers, String leavingServers) throws ReconfigException { - if (++attempts < 3) - throw new ReconfigException("Reconfig failed"); - else - super.reconfigure(connectionSpec, joiningServers, leavingServers); - } - - } - } |