summaryrefslogtreecommitdiffstats
path: root/zookeeper-server/zookeeper-server-3.5.6/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java
diff options
context:
space:
mode:
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.java81
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);
}
}
+
}