diff options
Diffstat (limited to 'zookeeper-server/zookeeper-server-3.5.6/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java')
-rw-r--r-- | zookeeper-server/zookeeper-server-3.5.6/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java | 81 |
1 files changed, 53 insertions, 28 deletions
diff --git a/zookeeper-server/zookeeper-server-3.5.6/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java b/zookeeper-server/zookeeper-server-3.5.6/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java index bf1f9ca5611..e8ee17192ee 100644 --- a/zookeeper-server/zookeeper-server-3.5.6/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java +++ b/zookeeper-server/zookeeper-server-3.5.6/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java @@ -2,7 +2,6 @@ package com.yahoo.vespa.zookeeper; import com.yahoo.cloud.config.ZookeeperServerConfig; -import org.apache.zookeeper.KeeperException; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -35,7 +34,7 @@ public class ReconfigurerTest { public void setup() throws IOException { cfgFile = folder.newFile(); idFile = folder.newFile("myid"); - reconfigurer = new TestableReconfigurer(); + reconfigurer = new TestableReconfigurer(new TestableZkAdmin()); } @Test @@ -47,40 +46,40 @@ public class ReconfigurerTest { // Cluster grows ZookeeperServerConfig nextConfig = createConfig(5, true); reconfigurer.startOrReconfigure(nextConfig); - assertEquals("node0:2181,node1:2181,node2: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); + assertEquals("node0:2181,node1:2181,node2: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()); // No reconfiguration happens with same config reconfigurer.startOrReconfigure(nextConfig); - assertEquals(1, reconfigurer.reconfigurations); + assertEquals(1, reconfigurer.reconfigurations()); assertSame(nextConfig, reconfigurer.activeConfig()); // Cluster shrinks nextConfig = createConfig(3, true); reconfigurer.startOrReconfigure(nextConfig); - assertEquals(2, reconfigurer.reconfigurations); - assertEquals("node0:2181,node1:2181,node2:2181,node3:2181,node4:2181", reconfigurer.connectionSpec); - assertNull("No servers are joining", reconfigurer.joiningServers); - assertEquals("3,4", reconfigurer.leavingServers); + assertEquals(2, reconfigurer.reconfigurations()); + assertEquals("node0:2181,node1:2181,node2:2181,node3:2181,node4:2181", reconfigurer.connectionSpec()); + assertNull("No servers are joining", reconfigurer.joiningServers()); + assertEquals("3,4", reconfigurer.leavingServers()); assertSame(nextConfig, reconfigurer.activeConfig()); } @Test public void testReconfigureFailsWithReconfigInProgressThenSucceeds() { - reconfigurer = new TemporarilyFailWithReconfigInProgressReconfigurer(); + reconfigurer = new TestableReconfigurer(new TemporarilyFailZkAdmin()); ZookeeperServerConfig initialConfig = createConfig(3, true); reconfigurer.startOrReconfigure(initialConfig); assertSame(initialConfig, reconfigurer.activeConfig()); ZookeeperServerConfig nextConfig = createConfig(5, true); reconfigurer.startOrReconfigure(nextConfig); - assertEquals("node0:2181,node1:2181,node2: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); + assertEquals("node0:2181,node1:2181,node2: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()); } @@ -93,7 +92,7 @@ public class ReconfigurerTest { ZookeeperServerConfig nextConfig = createConfig(5, false); reconfigurer.startOrReconfigure(nextConfig); assertSame(initialConfig, reconfigurer.activeConfig()); - assertEquals(0, reconfigurer.reconfigurations); + assertEquals(0, reconfigurer.reconfigurations()); } @After @@ -120,19 +119,45 @@ public class ReconfigurerTest { private static class TestableReconfigurer extends Reconfigurer { - private int reconfigurations = 0; + private final TestableZkAdmin zkReconfigurer; - private String connectionSpec; - private String joiningServers; - private String leavingServers; + TestableReconfigurer(TestableZkAdmin zkReconfigurer) { + super(zkReconfigurer); + this.zkReconfigurer = zkReconfigurer; + } @Override void startOrReconfigure(ZookeeperServerConfig newConfig) { - super.startOrReconfigure(newConfig, l->{}); + super.startOrReconfigure(newConfig, l -> { }); + } + + String connectionSpec() { + return zkReconfigurer.connectionSpec; + } + + String joiningServers() { + return zkReconfigurer.joiningServers; + } + + String leavingServers() { + return zkReconfigurer.leavingServers; } + int reconfigurations() { + return zkReconfigurer.reconfigurations; + } + + } + + private static class TestableZkAdmin implements ZkAdmin { + + String connectionSpec; + String joiningServers; + String leavingServers; + int reconfigurations = 0; + @Override - void zooKeeperReconfigure(String connectionSpec, String joiningServers, String leavingServers) throws KeeperException { + public void reconfigure(String connectionSpec, String joiningServers, String leavingServers) throws ReconfigException { this.connectionSpec = connectionSpec; this.joiningServers = joiningServers; this.leavingServers = leavingServers; @@ -142,18 +167,18 @@ public class ReconfigurerTest { } // Fails 3 times with KeeperException.ReconfigInProgress(), then succeeds - private static class TemporarilyFailWithReconfigInProgressReconfigurer extends TestableReconfigurer { + private static class TemporarilyFailZkAdmin extends TestableZkAdmin { private int attempts = 0; - @Override - void zooKeeperReconfigure(String connectionSpec, String joiningServers, String leavingServers) throws KeeperException { + public void reconfigure(String connectionSpec, String joiningServers, String leavingServers) throws ReconfigException { if (++attempts < 3) - throw new KeeperException.ReconfigInProgress(); + throw new ReconfigException("Reconfig failed"); else - super.zooKeeperReconfigure(connectionSpec, joiningServers, leavingServers); + super.reconfigure(connectionSpec, joiningServers, leavingServers); } } + } |