You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by an...@apache.org on 2018/10/24 09:32:41 UTC
[25/36] zookeeper git commit: ZOOKEEPER-3032: MAVEN MIGRATION -
branch-3.4 - zookeeper-server
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/7291e47c/zookeeper-common/src/test/java/org/apache/zookeeper/test/FollowerTest.java
----------------------------------------------------------------------
diff --git a/zookeeper-common/src/test/java/org/apache/zookeeper/test/FollowerTest.java b/zookeeper-common/src/test/java/org/apache/zookeeper/test/FollowerTest.java
deleted file mode 100644
index fa6b4a3..0000000
--- a/zookeeper-common/src/test/java/org/apache/zookeeper/test/FollowerTest.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.zookeeper.test;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import org.apache.zookeeper.AsyncCallback;
-import org.apache.zookeeper.CreateMode;
-import org.apache.zookeeper.KeeperException;
-import org.apache.zookeeper.Op;
-import org.apache.zookeeper.OpResult;
-import org.apache.zookeeper.WatchedEvent;
-import org.apache.zookeeper.Watcher;
-import org.apache.zookeeper.Watcher.Event.KeeperState;
-import org.apache.zookeeper.ZKTestCase;
-import org.apache.zookeeper.ZooDefs;
-import org.apache.zookeeper.ZooDefs.Ids;
-import org.apache.zookeeper.ZooKeeper;
-import org.apache.zookeeper.data.Stat;
-import org.apache.zookeeper.server.quorum.Leader;
-import org.apache.zookeeper.server.quorum.LearnerHandler;
-import org.apache.zookeeper.test.ClientBase.CountdownWatcher;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class FollowerTest extends ZKTestCase {
- private static final Logger LOG = LoggerFactory.getLogger(FollowerTest.class);
- public static final long CONNECTION_TIMEOUT = ClientTest.CONNECTION_TIMEOUT;
-
- volatile int counter = 0;
- volatile int errors = 0;
-
- /**
- * See ZOOKEEPER-790 for details
- * */
- @Test
- public void testFollowersStartAfterLeader() throws Exception {
- QuorumUtil qu = new QuorumUtil(1);
- CountdownWatcher watcher = new CountdownWatcher();
- qu.startQuorum();
-
- int index = 1;
- while(qu.getPeer(index).peer.leader == null) {
- index++;
- }
-
- ZooKeeper zk = new ZooKeeper(
- "127.0.0.1:" + qu.getPeer((index == 1)?2:1).peer.getClientPort(),
- ClientBase.CONNECTION_TIMEOUT, watcher);
- watcher.waitForConnected(CONNECTION_TIMEOUT);
-
- // break the quorum
- qu.shutdown(index);
-
- // Wait until we disconnect to proceed
- watcher.waitForDisconnected(CONNECTION_TIMEOUT);
-
- // try to reestablish the quorum
- qu.start(index);
-
- try{
- watcher.waitForConnected(30000);
- } catch(TimeoutException e) {
- Assert.fail("client could not connect to reestablished quorum: giving up after 30+ seconds.");
- }
-
- zk.close();
-
- qu.tearDown();
- }
-
- // skip superhammer and clientcleanup as they are too expensive for quorum
-
- /**
- * Tests if a multiop submitted to a non-leader propagates to the leader properly
- * (see ZOOKEEPER-1124).
- *
- * The test works as follows. It has a client connect to a follower and submit a multiop
- * to the follower. It then verifies that the multiop successfully gets committed by the leader.
- *
- * Without the fix in ZOOKEEPER-1124, this fails with a ConnectionLoss KeeperException.
- */
- @Test
- public void testMultiToFollower() throws Exception {
- QuorumUtil qu = new QuorumUtil(1);
- CountdownWatcher watcher = new CountdownWatcher();
- qu.startQuorum();
-
- int index = 1;
- while(qu.getPeer(index).peer.leader == null) {
- index++;
- }
-
- ZooKeeper zk = new ZooKeeper(
- "127.0.0.1:" + qu.getPeer((index == 1)?2:1).peer.getClientPort(),
- ClientBase.CONNECTION_TIMEOUT, watcher);
- watcher.waitForConnected(CONNECTION_TIMEOUT);
-
- List<OpResult> results = new ArrayList<OpResult>();
-
- results = zk.multi(Arrays.asList(
- Op.create("/multi0", new byte[0], Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT),
- Op.create("/multi1", new byte[0], Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT),
- Op.create("/multi2", new byte[0], Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT)
- ));
- zk.getData("/multi0", false, null);
- zk.getData("/multi1", false, null);
- zk.getData("/multi2", false, null);
-
- zk.close();
-
- qu.tearDown();
- }
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/7291e47c/zookeeper-common/src/test/java/org/apache/zookeeper/test/FourLetterWordsQuorumTest.java
----------------------------------------------------------------------
diff --git a/zookeeper-common/src/test/java/org/apache/zookeeper/test/FourLetterWordsQuorumTest.java b/zookeeper-common/src/test/java/org/apache/zookeeper/test/FourLetterWordsQuorumTest.java
deleted file mode 100644
index 49d90f7..0000000
--- a/zookeeper-common/src/test/java/org/apache/zookeeper/test/FourLetterWordsQuorumTest.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.zookeeper.test;
-
-import java.io.IOException;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.zookeeper.TestableZooKeeper;
-import static org.apache.zookeeper.client.FourLetterWordMain.send4LetterWord;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class FourLetterWordsQuorumTest extends QuorumBase {
- protected static final Logger LOG =
- LoggerFactory.getLogger(FourLetterWordsQuorumTest.class);
-
- /** Test the various four letter words */
- @Test
- public void testFourLetterWords() throws Exception {
- String servers[] = hostPort.split(",");
- for (String hp : servers) {
- verify(hp, "ruok", "imok");
- verify(hp, "envi", "java.version");
- verify(hp, "conf", "clientPort");
- verify(hp, "stat", "Outstanding");
- verify(hp, "srvr", "Outstanding");
- verify(hp, "cons", "queued");
- verify(hp, "dump", "Session");
- verify(hp, "wchs", "watches");
- verify(hp, "wchp", "");
- verify(hp, "wchc", "");
-
- verify(hp, "srst", "reset");
- verify(hp, "crst", "reset");
-
- verify(hp, "stat", "Outstanding");
- verify(hp, "srvr", "Outstanding");
- verify(hp, "cons", "queued");
-
- TestableZooKeeper zk = createClient(hp);
- String sid = getHexSessionId(zk.getSessionId());
-
- verify(hp, "stat", "queued");
- verify(hp, "srvr", "Outstanding");
- verify(hp, "cons", sid);
- verify(hp, "dump", sid);
-
- zk.getData("/", true, null);
-
- verify(hp, "stat", "queued");
- verify(hp, "srvr", "Outstanding");
- verify(hp, "cons", sid);
- verify(hp, "dump", sid);
- verify(hp, "wchs", "watching 1");
- verify(hp, "wchp", sid);
- verify(hp, "wchc", sid);
-
- zk.close();
-
- verify(hp, "ruok", "imok");
- verify(hp, "envi", "java.version");
- verify(hp, "conf", "clientPort");
- verify(hp, "stat", "Outstanding");
- verify(hp, "srvr", "Outstanding");
- verify(hp, "cons", "queued");
- verify(hp, "dump", "Session");
- verify(hp, "wchs", "watch");
- verify(hp, "wchp", "");
- verify(hp, "wchc", "");
-
- verify(hp, "srst", "reset");
- verify(hp, "crst", "reset");
-
- verify(hp, "stat", "Outstanding");
- verify(hp, "srvr", "Outstanding");
- verify(hp, "cons", "queued");
-
- verify(hp, "mntr", "zk_version\t");
- }
- }
-
- private void verify(String hp, String cmd, String expected)
- throws IOException
- {
- for(HostPort hpobj: parseHostPortList(hp)) {
- String resp = send4LetterWord(hpobj.host, hpobj.port, cmd);
- LOG.info("cmd " + cmd + " expected " + expected + " got " + resp);
- if (cmd.equals("dump")) {
- Assert.assertTrue(resp.contains(expected)
- || resp.contains("Sessions with Ephemerals"));
- } else {
- Assert.assertTrue(resp.contains(expected));
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/7291e47c/zookeeper-common/src/test/java/org/apache/zookeeper/test/FourLetterWordsTest.java
----------------------------------------------------------------------
diff --git a/zookeeper-common/src/test/java/org/apache/zookeeper/test/FourLetterWordsTest.java b/zookeeper-common/src/test/java/org/apache/zookeeper/test/FourLetterWordsTest.java
deleted file mode 100644
index bc8d071..0000000
--- a/zookeeper-common/src/test/java/org/apache/zookeeper/test/FourLetterWordsTest.java
+++ /dev/null
@@ -1,238 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.zookeeper.test;
-
-import java.io.BufferedReader;
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.regex.Pattern;
-
-import org.apache.zookeeper.TestableZooKeeper;
-import org.apache.zookeeper.ZooKeeper;
-import org.apache.zookeeper.common.IOUtils;
-import static org.apache.zookeeper.client.FourLetterWordMain.send4LetterWord;
-import org.junit.Assert;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.Timeout;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class FourLetterWordsTest extends ClientBase {
- protected static final Logger LOG =
- LoggerFactory.getLogger(FourLetterWordsTest.class);
-
- @Rule
- public Timeout timeout = new Timeout(30000);
-
- /** Test the various four letter words */
- @Test
- public void testFourLetterWords() throws Exception {
- verify("ruok", "imok");
- verify("envi", "java.version");
- verify("conf", "clientPort");
- verify("stat", "Outstanding");
- verify("srvr", "Outstanding");
- verify("cons", "queued");
- verify("dump", "Session");
- verify("wchs", "watches");
- verify("wchp", "");
- verify("wchc", "");
-
- verify("srst", "reset");
- verify("crst", "reset");
-
- verify("stat", "Outstanding");
- verify("srvr", "Outstanding");
- verify("cons", "queued");
-
- TestableZooKeeper zk = createClient();
- String sid = getHexSessionId(zk.getSessionId());
-
- verify("stat", "queued");
- verify("srvr", "Outstanding");
- verify("cons", sid);
- verify("dump", sid);
-
- zk.getData("/", true, null);
-
- verify("stat", "queued");
- verify("srvr", "Outstanding");
- verify("cons", sid);
- verify("dump", sid);
-
- verify("wchs", "watching 1");
- verify("wchp", sid);
- verify("wchc", sid);
- zk.close();
-
- verify("ruok", "imok");
- verify("envi", "java.version");
- verify("conf", "clientPort");
- verify("stat", "Outstanding");
- verify("srvr", "Outstanding");
- verify("cons", "queued");
- verify("dump", "Session");
- verify("wchs", "watch");
- verify("wchp", "");
- verify("wchc", "");
-
- verify("srst", "reset");
- verify("crst", "reset");
-
- verify("stat", "Outstanding");
- verify("srvr", "Outstanding");
- verify("cons", "queued");
- verify("mntr", "zk_server_state\tstandalone");
- verify("mntr", "num_alive_connections");
- verify("mntr", "fsync_threshold_exceed_count");
- verify("stat", "Connections");
- verify("srvr", "Connections");
- }
-
- private String sendRequest(String cmd) throws IOException {
- HostPort hpobj = ClientBase.parseHostPortList(hostPort).get(0);
- return send4LetterWord(hpobj.host, hpobj.port, cmd);
- }
- private String sendRequest(String cmd, int timeout) throws IOException {
- HostPort hpobj = ClientBase.parseHostPortList(hostPort).get(0);
- return send4LetterWord(hpobj.host, hpobj.port, cmd, timeout);
- }
-
- private void verify(String cmd, String expected) throws IOException {
- String resp = sendRequest(cmd);
- LOG.info("cmd " + cmd + " expected " + expected + " got " + resp);
- Assert.assertTrue(resp.contains(expected));
- }
-
- @Test
- public void testValidateStatOutput() throws Exception {
- ZooKeeper zk1 = createClient();
- ZooKeeper zk2 = createClient();
-
- String resp = sendRequest("stat");
- BufferedReader in = new BufferedReader(new StringReader(resp));
-
- String line;
- // first line should be version info
- line = in.readLine();
- Assert.assertTrue(Pattern.matches("^.*\\s\\d+\\.\\d+\\.\\d+-.*$", line));
- Assert.assertTrue(Pattern.matches("^Clients:$", in.readLine()));
-
- int count = 0;
- while ((line = in.readLine()).length() > 0) {
- count++;
- Assert.assertTrue(Pattern.matches("^ /.*:\\d+\\[\\d+\\]\\(queued=\\d+,recved=\\d+,sent=\\d+\\)$", line));
- }
- // ensure at least the two clients we created are accounted for
- Assert.assertTrue(count >= 2);
-
- line = in.readLine();
- Assert.assertTrue(Pattern.matches("^Latency min/avg/max: \\d+/\\d+/\\d+$", line));
- line = in.readLine();
- Assert.assertTrue(Pattern.matches("^Received: \\d+$", line));
- line = in.readLine();
- Assert.assertTrue(Pattern.matches("^Sent: \\d+$", line));
- line = in.readLine();
- Assert.assertTrue(Pattern.matches("^Connections: \\d+$", line));
- line = in.readLine();
- Assert.assertTrue(Pattern.matches("^Outstanding: \\d+$", line));
- line = in.readLine();
- Assert.assertTrue(Pattern.matches("^Zxid: 0x[\\da-fA-F]+$", line));
- line = in.readLine();
- Assert.assertTrue(Pattern.matches("^Mode: .*$", line));
- line = in.readLine();
- Assert.assertTrue(Pattern.matches("^Node count: \\d+$", line));
-
- zk1.close();
- zk2.close();
- }
-
- @Test
- public void testValidateConsOutput() throws Exception {
- ZooKeeper zk1 = createClient();
- ZooKeeper zk2 = createClient();
-
- String resp = sendRequest("cons");
- BufferedReader in = new BufferedReader(new StringReader(resp));
-
- String line;
- int count = 0;
- while ((line = in.readLine()) != null && line.length() > 0) {
- count++;
- Assert.assertTrue(line, Pattern.matches("^ /.*:\\d+\\[\\d+\\]\\(queued=\\d+,recved=\\d+,sent=\\d+.*\\)$", line));
- }
- // ensure at least the two clients we created are accounted for
- Assert.assertTrue(count >= 2);
-
- zk1.close();
- zk2.close();
- }
-
- @Test(timeout=60000)
- public void testValidateSocketTimeout() throws Exception {
- /**
- * testing positive scenario that even with timeout parameter the
- * functionality works fine
- */
- String resp = sendRequest("isro", 2000);
- Assert.assertTrue(resp.contains("rw"));
- }
-
- @Test
- public void testSetTraceMask() throws Exception {
- String gtmkResp = sendRequest("gtmk");
- Assert.assertNotNull(gtmkResp);
- gtmkResp = gtmkResp.trim();
- Assert.assertFalse(gtmkResp.isEmpty());
- long formerMask = Long.valueOf(gtmkResp);
- try {
- verify(buildSetTraceMaskRequest(0), "0");
- verify("gtmk", "0");
- } finally {
- // Restore former value.
- sendRequest(buildSetTraceMaskRequest(formerMask));
- }
- }
-
- /**
- * Builds a SetTraceMask request to be sent to the server, consisting of
- * "stmk" followed by the 8-byte long representation of the trace mask.
- *
- * @param mask trace mask to set
- * @return built request
- * @throws IOException if there is an I/O error
- */
- private String buildSetTraceMaskRequest(long mask) throws IOException {
- ByteArrayOutputStream baos = null;
- DataOutputStream dos = null;
- try {
- baos = new ByteArrayOutputStream();
- dos = new DataOutputStream(baos);
- dos.writeBytes("stmk");
- dos.writeLong(mask);
- } finally {
- IOUtils.closeStream(dos);
- IOUtils.closeStream(baos);
- }
- return new String(baos.toByteArray());
- }
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/7291e47c/zookeeper-common/src/test/java/org/apache/zookeeper/test/FourLetterWordsWhiteListTest.java
----------------------------------------------------------------------
diff --git a/zookeeper-common/src/test/java/org/apache/zookeeper/test/FourLetterWordsWhiteListTest.java b/zookeeper-common/src/test/java/org/apache/zookeeper/test/FourLetterWordsWhiteListTest.java
deleted file mode 100644
index 515cbdc..0000000
--- a/zookeeper-common/src/test/java/org/apache/zookeeper/test/FourLetterWordsWhiteListTest.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.zookeeper.test;
-
-import java.io.IOException;
-
-import org.apache.zookeeper.TestableZooKeeper;
-import org.apache.zookeeper.server.ServerCnxn;
-import static org.apache.zookeeper.client.FourLetterWordMain.send4LetterWord;
-import org.junit.Assert;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.Timeout;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class FourLetterWordsWhiteListTest extends ClientBase {
- protected static final Logger LOG =
- LoggerFactory.getLogger(FourLetterWordsTest.class);
-
- @Rule
- public Timeout timeout = new Timeout(30000);
-
- /*
- * ZOOKEEPER-2693: test white list of four letter words.
- * For 3.5.x default white list is empty. Verify that is
- * the case (except 'stat' command which is enabled in ClientBase
- * which other tests depend on.).
- */
- @Test(timeout=30000)
- public void testFourLetterWordsAllDisabledByDefault() throws Exception {
- stopServer();
- ServerCnxn.resetWhiteList();
- System.setProperty("zookeeper.4lw.commands.whitelist", "stat");
- startServer();
-
- // Default white list for 3.5.x is empty, so all command should fail.
- verifyAllCommandsFail();
-
- TestableZooKeeper zk = createClient();
-
- verifyAllCommandsFail();
-
- zk.getData("/", true, null);
-
- verifyAllCommandsFail();
-
- zk.close();
-
- verifyFuzzyMatch("stat", "Outstanding");
- verifyAllCommandsFail();
- }
-
- @Test(timeout=30000)
- public void testFourLetterWordsEnableSomeCommands() throws Exception {
- stopServer();
- ServerCnxn.resetWhiteList();
- System.setProperty("zookeeper.4lw.commands.whitelist", "stat, ruok, isro");
- startServer();
- // stat, ruok and isro are white listed.
- verifyFuzzyMatch("stat", "Outstanding");
- verifyExactMatch("ruok", "imok");
- verifyExactMatch("isro", "rw");
-
- // Rest of commands fail.
- verifyExactMatch("conf", generateExpectedMessage("conf"));
- verifyExactMatch("cons", generateExpectedMessage("cons"));
- verifyExactMatch("crst", generateExpectedMessage("crst"));
- verifyExactMatch("dump", generateExpectedMessage("dump"));
- verifyExactMatch("envi", generateExpectedMessage("envi"));
- verifyExactMatch("gtmk", generateExpectedMessage("gtmk"));
- verifyExactMatch("stmk", generateExpectedMessage("stmk"));
- verifyExactMatch("srst", generateExpectedMessage("srst"));
- verifyExactMatch("wchc", generateExpectedMessage("wchc"));
- verifyExactMatch("wchp", generateExpectedMessage("wchp"));
- verifyExactMatch("wchs", generateExpectedMessage("wchs"));
- verifyExactMatch("mntr", generateExpectedMessage("mntr"));
- }
-
- @Test(timeout=30000)
- public void testISROEnabledWhenReadOnlyModeEnabled() throws Exception {
- stopServer();
- ServerCnxn.resetWhiteList();
- System.setProperty("zookeeper.4lw.commands.whitelist", "stat");
- System.setProperty("readonlymode.enabled", "true");
- startServer();
- verifyExactMatch("isro", "rw");
- System.clearProperty("readonlymode.enabled");
- }
-
- @Test(timeout=30000)
- public void testFourLetterWordsInvalidConfiguration() throws Exception {
- stopServer();
- ServerCnxn.resetWhiteList();
- System.setProperty("zookeeper.4lw.commands.whitelist", "foo bar" +
- " foo,,, " +
- "bar :.,@#$%^&*() , , , , bar, bar, stat, ");
- startServer();
-
- // Just make sure we are good when admin made some mistakes in config file.
- verifyAllCommandsFail();
- // But still, what's valid in white list will get through.
- verifyFuzzyMatch("stat", "Outstanding");
- }
-
- @Test(timeout=30000)
- public void testFourLetterWordsEnableAllCommandsThroughAsterisk() throws Exception {
- stopServer();
- ServerCnxn.resetWhiteList();
- System.setProperty("zookeeper.4lw.commands.whitelist", "*");
- startServer();
- verifyAllCommandsSuccess();
- }
-
- @Test(timeout=30000)
- public void testFourLetterWordsEnableAllCommandsThroughExplicitList() throws Exception {
- stopServer();
- ServerCnxn.resetWhiteList();
- System.setProperty("zookeeper.4lw.commands.whitelist",
- "ruok, envi, conf, stat, srvr, cons, dump," +
- "wchs, wchp, wchc, srst, crst, " +
- "mntr, gtmk, isro, stmk");
- startServer();
- verifyAllCommandsSuccess();
- }
-
- private void verifyAllCommandsSuccess() throws Exception {
- verifyExactMatch("ruok", "imok");
- verifyFuzzyMatch("envi", "java.version");
- verifyFuzzyMatch("conf", "clientPort");
- verifyFuzzyMatch("stat", "Outstanding");
- verifyFuzzyMatch("srvr", "Outstanding");
- verifyFuzzyMatch("cons", "queued");
- verifyFuzzyMatch("dump", "Session");
- verifyFuzzyMatch("wchs", "watches");
- verifyFuzzyMatch("wchp", "");
- verifyFuzzyMatch("wchc", "");
-
- verifyFuzzyMatch("srst", "reset");
- verifyFuzzyMatch("crst", "reset");
-
- verifyFuzzyMatch("stat", "Outstanding");
- verifyFuzzyMatch("srvr", "Outstanding");
- verifyFuzzyMatch("cons", "queued");
- verifyFuzzyMatch("gtmk", "306");
- verifyFuzzyMatch("isro", "rw");
-
- TestableZooKeeper zk = createClient();
- String sid = getHexSessionId(zk.getSessionId());
-
- verifyFuzzyMatch("stat", "queued");
- verifyFuzzyMatch("srvr", "Outstanding");
- verifyFuzzyMatch("cons", sid);
- verifyFuzzyMatch("dump", sid);
-
- zk.getData("/", true, null);
-
- verifyFuzzyMatch("stat", "queued");
- verifyFuzzyMatch("srvr", "Outstanding");
- verifyFuzzyMatch("cons", sid);
- verifyFuzzyMatch("dump", sid);
-
- verifyFuzzyMatch("wchs", "watching 1");
- verifyFuzzyMatch("wchp", sid);
- verifyFuzzyMatch("wchc", sid);
- zk.close();
-
- verifyExactMatch("ruok", "imok");
- verifyFuzzyMatch("envi", "java.version");
- verifyFuzzyMatch("conf", "clientPort");
- verifyFuzzyMatch("stat", "Outstanding");
- verifyFuzzyMatch("srvr", "Outstanding");
- verifyFuzzyMatch("cons", "queued");
- verifyFuzzyMatch("dump", "Session");
- verifyFuzzyMatch("wchs", "watch");
- verifyFuzzyMatch("wchp", "");
- verifyFuzzyMatch("wchc", "");
-
- verifyFuzzyMatch("srst", "reset");
- verifyFuzzyMatch("crst", "reset");
-
- verifyFuzzyMatch("stat", "Outstanding");
- verifyFuzzyMatch("srvr", "Outstanding");
- verifyFuzzyMatch("cons", "queued");
- verifyFuzzyMatch("mntr", "zk_server_state\tstandalone");
- verifyFuzzyMatch("mntr", "num_alive_connections");
- verifyFuzzyMatch("mntr", "fsync_threshold_exceed_count");
- verifyFuzzyMatch("stat", "Connections");
- verifyFuzzyMatch("srvr", "Connections");
- }
-
- private void verifyAllCommandsFail() throws Exception {
- verifyExactMatch("ruok", generateExpectedMessage("ruok"));
- verifyExactMatch("conf", generateExpectedMessage("conf"));
- verifyExactMatch("cons", generateExpectedMessage("cons"));
- verifyExactMatch("crst", generateExpectedMessage("crst"));
- verifyExactMatch("dump", generateExpectedMessage("dump"));
- verifyExactMatch("envi", generateExpectedMessage("envi"));
- verifyExactMatch("gtmk", generateExpectedMessage("gtmk"));
- verifyExactMatch("stmk", generateExpectedMessage("stmk"));
- verifyExactMatch("srst", generateExpectedMessage("srst"));
- verifyExactMatch("wchc", generateExpectedMessage("wchc"));
- verifyExactMatch("wchp", generateExpectedMessage("wchp"));
- verifyExactMatch("wchs", generateExpectedMessage("wchs"));
- verifyExactMatch("mntr", generateExpectedMessage("mntr"));
- verifyExactMatch("isro", generateExpectedMessage("isro"));
-
- // srvr is enabled by default due to the sad fact zkServer.sh uses it.
- verifyFuzzyMatch("srvr", "Outstanding");
- }
-
- private void verifyFuzzyMatch(String cmd, String expected) throws IOException {
- String resp = sendRequest(cmd);
- LOG.info("cmd " + cmd + " expected " + expected + " got " + resp);
- Assert.assertTrue(resp.contains(expected));
- }
-
- private String generateExpectedMessage(String command) {
- return command + " is not executed because it is not in the whitelist.";
- }
-
- private void verifyExactMatch(String cmd, String expected) throws IOException {
- String resp = sendRequest(cmd);
- LOG.info("cmd " + cmd + " expected an exact match of " + expected + "; got " + resp);
- Assert.assertTrue(resp.trim().equals(expected));
- }
-
- private String sendRequest(String cmd) throws IOException {
- HostPort hpobj = ClientBase.parseHostPortList(hostPort).get(0);
- return send4LetterWord(hpobj.host, hpobj.port, cmd);
- }
-
- private String sendRequest(String cmd, int timeout) throws IOException {
- HostPort hpobj = ClientBase.parseHostPortList(hostPort).get(0);
- return send4LetterWord(hpobj.host, hpobj.port, cmd, timeout);
- }
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/7291e47c/zookeeper-common/src/test/java/org/apache/zookeeper/test/GetChildren2Test.java
----------------------------------------------------------------------
diff --git a/zookeeper-common/src/test/java/org/apache/zookeeper/test/GetChildren2Test.java b/zookeeper-common/src/test/java/org/apache/zookeeper/test/GetChildren2Test.java
deleted file mode 100644
index e41fffe..0000000
--- a/zookeeper-common/src/test/java/org/apache/zookeeper/test/GetChildren2Test.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.zookeeper.test;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.zookeeper.CreateMode;
-import org.apache.zookeeper.KeeperException;
-import org.apache.zookeeper.ZooKeeper;
-import org.apache.zookeeper.ZooDefs.Ids;
-import org.apache.zookeeper.data.Stat;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class GetChildren2Test extends ClientBase {
- private ZooKeeper zk;
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
-
- zk = createClient();
- }
-
- @Override
- public void tearDown() throws Exception {
- super.tearDown();
-
- zk.close();
- }
-
- @Test
- public void testChild()
- throws IOException, KeeperException, InterruptedException
- {
- String name = "/foo";
- zk.create(name, name.getBytes(), Ids.OPEN_ACL_UNSAFE,
- CreateMode.PERSISTENT);
-
- String childname = name + "/bar";
- zk.create(childname, childname.getBytes(), Ids.OPEN_ACL_UNSAFE,
- CreateMode.EPHEMERAL);
-
- Stat stat = new Stat();
- List<String> s = zk.getChildren(name, false, stat);
-
- Assert.assertEquals(stat.getCzxid(), stat.getMzxid());
- Assert.assertEquals(stat.getCzxid() + 1, stat.getPzxid());
- Assert.assertEquals(stat.getCtime(), stat.getMtime());
- Assert.assertEquals(1, stat.getCversion());
- Assert.assertEquals(0, stat.getVersion());
- Assert.assertEquals(0, stat.getAversion());
- Assert.assertEquals(0, stat.getEphemeralOwner());
- Assert.assertEquals(name.length(), stat.getDataLength());
- Assert.assertEquals(1, stat.getNumChildren());
- Assert.assertEquals(s.size(), stat.getNumChildren());
-
- s = zk.getChildren(childname, false, stat);
-
- Assert.assertEquals(stat.getCzxid(), stat.getMzxid());
- Assert.assertEquals(stat.getCzxid(), stat.getPzxid());
- Assert.assertEquals(stat.getCtime(), stat.getMtime());
- Assert.assertEquals(0, stat.getCversion());
- Assert.assertEquals(0, stat.getVersion());
- Assert.assertEquals(0, stat.getAversion());
- Assert.assertEquals(zk.getSessionId(), stat.getEphemeralOwner());
- Assert.assertEquals(childname.length(), stat.getDataLength());
- Assert.assertEquals(0, stat.getNumChildren());
- Assert.assertEquals(s.size(), stat.getNumChildren());
- }
-
- @Test
- public void testChildren()
- throws IOException, KeeperException, InterruptedException
- {
- String name = "/foo";
- zk.create(name, name.getBytes(), Ids.OPEN_ACL_UNSAFE,
- CreateMode.PERSISTENT);
-
- List<String> children = new ArrayList<String>();
- List<String> children_s = new ArrayList<String>();
-
- for (int i = 0; i < 10; i++) {
- String childname = name + "/bar" + i;
- String childname_s = "bar" + i;
- children.add(childname);
- children_s.add(childname_s);
- }
-
- for(int i = 0; i < children.size(); i++) {
- String childname = children.get(i);
- zk.create(childname, childname.getBytes(), Ids.OPEN_ACL_UNSAFE,
- CreateMode.EPHEMERAL);
-
- Stat stat = new Stat();
- List<String> s = zk.getChildren(name, false, stat);
-
- Assert.assertEquals(stat.getCzxid(), stat.getMzxid());
- Assert.assertEquals(stat.getCzxid() + i + 1, stat.getPzxid());
- Assert.assertEquals(stat.getCtime(), stat.getMtime());
- Assert.assertEquals(i + 1, stat.getCversion());
- Assert.assertEquals(0, stat.getVersion());
- Assert.assertEquals(0, stat.getAversion());
- Assert.assertEquals(0, stat.getEphemeralOwner());
- Assert.assertEquals(name.length(), stat.getDataLength());
- Assert.assertEquals(i + 1, stat.getNumChildren());
- Assert.assertEquals(s.size(), stat.getNumChildren());
- }
- List<String> p = zk.getChildren(name, false, null);
- List<String> c_a = children_s;
- List<String> c_b = p;
- Collections.sort(c_a);
- Collections.sort(c_b);
- Assert.assertEquals(c_a.size(), 10);
- Assert.assertEquals(c_a, c_b);
- }
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/7291e47c/zookeeper-common/src/test/java/org/apache/zookeeper/test/HierarchicalQuorumTest.java
----------------------------------------------------------------------
diff --git a/zookeeper-common/src/test/java/org/apache/zookeeper/test/HierarchicalQuorumTest.java b/zookeeper-common/src/test/java/org/apache/zookeeper/test/HierarchicalQuorumTest.java
deleted file mode 100644
index 051da13..0000000
--- a/zookeeper-common/src/test/java/org/apache/zookeeper/test/HierarchicalQuorumTest.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.zookeeper.test;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Properties;
-import java.util.Set;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.zookeeper.PortAssignment;
-import org.apache.zookeeper.TestableZooKeeper;
-import org.apache.zookeeper.jmx.CommonNames;
-import org.apache.zookeeper.server.quorum.QuorumPeer;
-import org.apache.zookeeper.server.quorum.QuorumPeer.LearnerType;
-import org.apache.zookeeper.server.quorum.QuorumPeer.QuorumServer;
-import org.apache.zookeeper.server.quorum.QuorumPeer.ServerState;
-import org.apache.zookeeper.server.quorum.flexible.QuorumHierarchical;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class HierarchicalQuorumTest extends ClientBase {
- private static final Logger LOG = LoggerFactory.getLogger(QuorumBase.class);
-
- File s1dir, s2dir, s3dir, s4dir, s5dir;
- QuorumPeer s1, s2, s3, s4, s5;
- protected int port1;
- protected int port2;
- protected int port3;
- protected int port4;
- protected int port5;
-
- protected int leport1;
- protected int leport2;
- protected int leport3;
- protected int leport4;
- protected int leport5;
-
- Properties qp;
- protected final ClientHammerTest cht = new ClientHammerTest();
-
- @Override
- public void setUp() throws Exception {
- setupTestEnv();
-
- JMXEnv.setUp();
-
- setUpAll();
-
- port1 = PortAssignment.unique();
- port2 = PortAssignment.unique();
- port3 = PortAssignment.unique();
- port4 = PortAssignment.unique();
- port5 = PortAssignment.unique();
- leport1 = PortAssignment.unique();
- leport2 = PortAssignment.unique();
- leport3 = PortAssignment.unique();
- leport4 = PortAssignment.unique();
- leport5 = PortAssignment.unique();
-
- hostPort = "127.0.0.1:" + port1
- + ",127.0.0.1:" + port2
- + ",127.0.0.1:" + port3
- + ",127.0.0.1:" + port4
- + ",127.0.0.1:" + port5;
- LOG.info("Ports are: " + hostPort);
-
- s1dir = ClientBase.createTmpDir();
- s2dir = ClientBase.createTmpDir();
- s3dir = ClientBase.createTmpDir();
- s4dir = ClientBase.createTmpDir();
- s5dir = ClientBase.createTmpDir();
-
- String config = "group.1=1:2:3\n" +
- "group.2=4:5\n" +
- "weight.1=1\n" +
- "weight.2=1\n" +
- "weight.3=1\n" +
- "weight.4=0\n" +
- "weight.5=0\n";
-
- ByteArrayInputStream is = new ByteArrayInputStream(config.getBytes());
- this.qp = new Properties();
-
- qp.load(is);
- startServers();
-
- cht.hostPort = hostPort;
- cht.setUpAll();
-
- LOG.info("Setup finished");
- }
-
- /**
- * This method is here to keep backwards compatibility with the test code
- * written before observers.
- * @throws Exception
- */
- void startServers() throws Exception {
- startServers(false);
- }
-
- /**
- * Starts 5 Learners. When withObservers == false, all 5 are Followers.
- * When withObservers == true, 3 are Followers and 2 Observers.
- * @param withObservers
- * @throws Exception
- */
- void startServers(boolean withObservers) throws Exception {
- int tickTime = 2000;
- int initLimit = 3;
- int syncLimit = 3;
- HashMap<Long,QuorumServer> peers = new HashMap<Long,QuorumServer>();
- peers.put(Long.valueOf(1), new QuorumServer(1, "127.0.0.1", port1 + 1000, leport1 + 1000, null));
- peers.put(Long.valueOf(2), new QuorumServer(2, "127.0.0.1", port2 + 1000, leport2 + 1000, null));
- peers.put(Long.valueOf(3), new QuorumServer(3, "127.0.0.1", port3 + 1000, leport3 + 1000, null));
- peers.put(Long.valueOf(4), new QuorumServer(4, "127.0.0.1", port4 + 1000, leport4 + 1000,
- withObservers ? QuorumPeer.LearnerType.OBSERVER
- : QuorumPeer.LearnerType.PARTICIPANT));
- peers.put(Long.valueOf(5), new QuorumServer(5, "127.0.0.1", port5 + 1000, leport5 + 1000,
- withObservers ? QuorumPeer.LearnerType.OBSERVER
- : QuorumPeer.LearnerType.PARTICIPANT));
-
- LOG.info("creating QuorumPeer 1 port " + port1);
- List <QuorumPeer> qps = new ArrayList<QuorumPeer>();
- QuorumHierarchical hq1 = new QuorumHierarchical(qp);
- s1 = new QuorumPeer(peers, s1dir, s1dir, port1, 3, 1, tickTime, initLimit, syncLimit, hq1);
- qps.add(s1);
- Assert.assertEquals(port1, s1.getClientPort());
-
- LOG.info("creating QuorumPeer 2 port " + port2);
- QuorumHierarchical hq2 = new QuorumHierarchical(qp);
- s2 = new QuorumPeer(peers, s2dir, s2dir, port2, 3, 2, tickTime, initLimit, syncLimit, hq2);
- qps.add(s2);
- Assert.assertEquals(port2, s2.getClientPort());
-
- LOG.info("creating QuorumPeer 3 port " + port3);
- QuorumHierarchical hq3 = new QuorumHierarchical(qp);
- s3 = new QuorumPeer(peers, s3dir, s3dir, port3, 3, 3, tickTime, initLimit, syncLimit, hq3);
- qps.add(s3);
- Assert.assertEquals(port3, s3.getClientPort());
-
- LOG.info("creating QuorumPeer 4 port " + port4);
- QuorumHierarchical hq4 = new QuorumHierarchical(qp);
- s4 = new QuorumPeer(peers, s4dir, s4dir, port4, 3, 4, tickTime, initLimit, syncLimit, hq4);
- qps.add(s4);
- if (withObservers) {
- s4.setLearnerType(QuorumPeer.LearnerType.OBSERVER);
- }
- Assert.assertEquals(port4, s4.getClientPort());
-
- LOG.info("creating QuorumPeer 5 port " + port5);
- QuorumHierarchical hq5 = new QuorumHierarchical(qp);
- s5 = new QuorumPeer(peers, s5dir, s5dir, port5, 3, 5, tickTime, initLimit, syncLimit, hq5);
- qps.add(s5);
- if (withObservers) {
- s5.setLearnerType(QuorumPeer.LearnerType.OBSERVER);
- }
- Assert.assertEquals(port5, s5.getClientPort());
-
- // Observers are currently only compatible with LeaderElection
- if (withObservers) {
- s1.setElectionType(0);
- s2.setElectionType(0);
- s3.setElectionType(0);
- s4.setElectionType(0);
- s5.setElectionType(0);
- }
-
- LOG.info("start QuorumPeer 1");
- s1.start();
- LOG.info("start QuorumPeer 2");
- s2.start();
- LOG.info("start QuorumPeer 3");
- s3.start();
- LOG.info("start QuorumPeer 4" + (withObservers ? "(observer)" : ""));
- s4.start();
- LOG.info("start QuorumPeer 5" + (withObservers ? "(observer)" : ""));
- s5.start();
- LOG.info("started QuorumPeer 5");
-
- LOG.info ("Closing ports " + hostPort);
- for (String hp : hostPort.split(",")) {
- Assert.assertTrue("waiting for server up",
- ClientBase.waitForServerUp(hp,
- CONNECTION_TIMEOUT));
- LOG.info(hp + " is accepting client connections");
- }
-
- // interesting to see what's there...
- JMXEnv.dump();
- // make sure we have these 5 servers listed
- Set<String> ensureNames = new LinkedHashSet<String>();
- for (int i = 1; i <= 5; i++) {
- ensureNames.add("InMemoryDataTree");
- }
- for (int i = 1; i <= 5; i++) {
- ensureNames.add("name0=ReplicatedServer_id" + i
- + ",name1=replica." + i + ",name2=");
- }
- for (int i = 1; i <= 5; i++) {
- for (int j = 1; j <= 5; j++) {
- ensureNames.add("name0=ReplicatedServer_id" + i
- + ",name1=replica." + j);
- }
- }
- for (int i = 1; i <= 5; i++) {
- ensureNames.add("name0=ReplicatedServer_id" + i);
- }
- JMXEnv.ensureAll(ensureNames.toArray(new String[ensureNames.size()]));
- verifyElectionTimeTakenJMXAttribute(qps);
- }
-
- @Override
- public void tearDown() throws Exception {
- LOG.info("TearDown started");
- cht.tearDownAll();
-
- LOG.info("Shutting down server 1");
- shutdown(s1);
- LOG.info("Shutting down server 2");
- shutdown(s2);
- LOG.info("Shutting down server 3");
- shutdown(s3);
- LOG.info("Shutting down server 4");
- shutdown(s4);
- LOG.info("Shutting down server 5");
- shutdown(s5);
-
- for (String hp : hostPort.split(",")) {
- Assert.assertTrue("waiting for server down",
- ClientBase.waitForServerDown(hp,
- ClientBase.CONNECTION_TIMEOUT));
- LOG.info(hp + " is no longer accepting client connections");
- }
-
- JMXEnv.tearDown();
- }
-
- protected void shutdown(QuorumPeer qp) {
- QuorumBase.shutdown(qp);
- }
-
- protected TestableZooKeeper createClient()
- throws IOException, InterruptedException
- {
- return createClient(hostPort);
- }
-
- protected TestableZooKeeper createClient(String hp)
- throws IOException, InterruptedException
- {
- CountdownWatcher watcher = new CountdownWatcher();
- return createClient(watcher, hp);
- }
-
- private void verifyElectionTimeTakenJMXAttribute(List<QuorumPeer> peers)
- throws Exception {
- LOG.info("Verify QuorumPeer#electionTimeTaken jmx bean attribute");
-
- for (int i = 1; i <= peers.size(); i++) {
- QuorumPeer qp = peers.get(i - 1);
- if (qp.getLearnerType() == LearnerType.OBSERVER) {
- continue; // Observer don't have electionTimeTaken attribute.
- }
- Long electionTimeTaken = -1L;
- String bean = "";
- if (qp.getPeerState() == ServerState.FOLLOWING) {
- bean = String.format(
- "%s:name0=ReplicatedServer_id%d,name1=replica.%d,name2=Follower",
- CommonNames.DOMAIN, i, i);
- } else if (qp.getPeerState() == ServerState.LEADING) {
- bean = String.format(
- "%s:name0=ReplicatedServer_id%d,name1=replica.%d,name2=Leader",
- CommonNames.DOMAIN, i, i);
- }
- electionTimeTaken = (Long) JMXEnv.ensureBeanAttribute(bean,
- "ElectionTimeTaken");
- Assert.assertTrue("Wrong electionTimeTaken value!",
- electionTimeTaken >= 0);
- }
- }
-
- @Test
- public void testHierarchicalQuorum() throws Throwable {
- cht.runHammer(5, 10);
- }
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/7291e47c/zookeeper-common/src/test/java/org/apache/zookeeper/test/IntegrityCheck.java
----------------------------------------------------------------------
diff --git a/zookeeper-common/src/test/java/org/apache/zookeeper/test/IntegrityCheck.java b/zookeeper-common/src/test/java/org/apache/zookeeper/test/IntegrityCheck.java
deleted file mode 100644
index 9a01a65..0000000
--- a/zookeeper-common/src/test/java/org/apache/zookeeper/test/IntegrityCheck.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.zookeeper.test;
-
-/**
- * This is a simple test to check the integrity of ZooKeeper servers. The client
- * simply cycles through blasting changes to ZooKeeper and the checking what it
- * gets back.
- *
- * The check is very simple. The value of the last successful read or write is
- * stored in lastValue. When we issue a request, that value becomes a possible
- * value. The difficulty is that when a communication error happens, the client
- * doesn't know if the set actually went through. So, our invariant that we
- * check for is that we always read a value that is greater than or equal to
- * a value that we have previously read or set. (Each time we set a value, the
- * value will be one more than the previous set.)
- */
-import java.io.IOException;
-import java.util.Date;
-import java.util.HashMap;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.zookeeper.CreateMode;
-import org.apache.zookeeper.KeeperException;
-import org.apache.zookeeper.WatchedEvent;
-import org.apache.zookeeper.Watcher;
-import org.apache.zookeeper.ZooDefs;
-import org.apache.zookeeper.ZooKeeper;
-import org.apache.zookeeper.AsyncCallback.DataCallback;
-import org.apache.zookeeper.AsyncCallback.StatCallback;
-import org.apache.zookeeper.Watcher.Event.KeeperState;
-import org.apache.zookeeper.data.Stat;
-
-public class IntegrityCheck implements Watcher, StatCallback, DataCallback {
- private static final Logger LOG = LoggerFactory.getLogger(IntegrityCheck.class);
-
- ZooKeeper zk;
-
- HashMap<String, byte[]> lastValue = new HashMap<String, byte[]>();
-
- int count;
-
- String path;
-
- int iteration;
-
- int outstanding;
-
- int errorCount;
-
- synchronized void incOutstanding() {
- outstanding++;
- }
-
- synchronized void decOutstanding() {
- outstanding--;
- notifyAll();
- }
-
- synchronized void waitOutstanding() throws InterruptedException {
- while (outstanding > 0) {
- wait();
- }
- }
-
- IntegrityCheck(String hostPort, String path, int count) throws
- IOException {
- zk = new ZooKeeper(hostPort, 30000, this);
- this.path = path;
- this.count = count;
- }
-
- public void run() throws InterruptedException, KeeperException {
- try{
- LOG.warn("Creating znodes for "+path);
- doCreate();
- LOG.warn("Staring the test loop for "+path);
- while (true) {
- LOG.warn("Staring write cycle for "+path);
- doPopulate();
- waitOutstanding();
- LOG.warn("Staring read cycle for "+path);
- readAll();
- waitOutstanding();
- }
- }finally{
- LOG.warn("Test loop terminated for "+path);
- }
- }
-
- void readAll() {
- for (int i = 0; i < count; i++) {
- String cpath = path + "/" + i;
- zk.getData(cpath, false, this, null);
- incOutstanding();
- }
-
- }
-
- void doCreate() throws InterruptedException, KeeperException {
- // create top level znode
- try{
- zk.create(path, null, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
- }catch(KeeperException.NodeExistsException e){
- // ignore duplicate create
- }
- iteration++;
- byte v[] = ("" + iteration).getBytes();
- // create child znodes
- for (int i = 0; i < count; i++) {
- String cpath = path + "/" + i;
- try{
- if(i%10==0)
- LOG.warn("Creating znode "+cpath);
- zk.create(cpath, v, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
- }catch(KeeperException.NodeExistsException e){
- // ignore duplicate create
- }
- lastValue.put(cpath, v);
- }
- }
-
- void doPopulate() {
- iteration++;
- byte v[] = ("" + iteration).getBytes();
- for (int i = 0; i < count; i++) {
- String cpath = path + "/" + i;
- zk.setData(cpath, v, -1, this, v);
- incOutstanding();
- }
- }
-
- // watcher callback
- public void process(WatchedEvent event) {
- if(event.getState()==KeeperState.SyncConnected){
- synchronized(this){
- notifyAll();
- }
- }
- }
-
- synchronized void ensureConnected(){
- while(zk.getState()!=ZooKeeper.States.CONNECTED){
- try {
- wait();
- } catch (InterruptedException e) {
- return;
- }
- }
- }
-
- /**
- * @param args
- */
- public static void main(String[] args) {
- if (args.length < 3) {
- System.err.println("USAGE: IntegrityCheck zookeeperHostPort znode #children");
- return;
- }
- int childrenCount=0;
- try {
- childrenCount=Integer.parseInt(args[2]);
- } catch (NumberFormatException e) {
- e.printStackTrace();
- System.exit(1);
- }
-
- try{
- final IntegrityCheck ctest = new IntegrityCheck(args[0], args[1],childrenCount);
- Runtime.getRuntime().addShutdownHook(new Thread() {
- public void run() {
- System.out.println(new Date().toString()+": Error count = " + ctest.errorCount);
- }
- });
- while(true){
- try{
- ctest.ensureConnected();
- ctest.run();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- System.exit(2);
- }
- }
-
- public void processResult(int rc, String path, Object ctx, Stat stat) {
- if (rc == 0) {
- lastValue.put(path, (byte[]) ctx);
- }
- decOutstanding();
- }
-
- public void processResult(int rc, String path, Object ctx, byte[] data,
- Stat stat) {
- if (rc == 0) {
- String string = new String(data);
- String lastString = null;
- byte[] v = lastValue.get(path);
- if (v != null) {
- lastString = new String(v);
- }
- if (lastString != null
- && Integer.parseInt(string) < Integer.parseInt(lastString)) {
- LOG.error("ERROR: Got " + string + " expected >= "
- + lastString);
- errorCount++;
- }
- lastValue.put(path, (byte[]) ctx);
- }
- decOutstanding();
- }
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/7291e47c/zookeeper-common/src/test/java/org/apache/zookeeper/test/InvalidSnapshotTest.java
----------------------------------------------------------------------
diff --git a/zookeeper-common/src/test/java/org/apache/zookeeper/test/InvalidSnapshotTest.java b/zookeeper-common/src/test/java/org/apache/zookeeper/test/InvalidSnapshotTest.java
deleted file mode 100644
index c5a7b4f..0000000
--- a/zookeeper-common/src/test/java/org/apache/zookeeper/test/InvalidSnapshotTest.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.zookeeper.test;
-
-import static org.apache.zookeeper.test.ClientBase.CONNECTION_TIMEOUT;
-
-import java.io.File;
-import java.util.concurrent.CountDownLatch;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.zookeeper.PortAssignment;
-import org.apache.zookeeper.WatchedEvent;
-import org.apache.zookeeper.Watcher;
-import org.apache.zookeeper.ZKTestCase;
-import org.apache.zookeeper.ZooKeeper;
-import org.apache.zookeeper.Watcher.Event.KeeperState;
-import org.apache.zookeeper.server.LogFormatter;
-import org.apache.zookeeper.server.ServerCnxnFactory;
-import org.apache.zookeeper.server.SnapshotFormatter;
-import org.apache.zookeeper.server.SyncRequestProcessor;
-import org.apache.zookeeper.server.ZooKeeperServer;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class InvalidSnapshotTest extends ZKTestCase implements Watcher {
- private final static Logger LOG = LoggerFactory.getLogger(UpgradeTest.class);
- private static final String HOSTPORT =
- "127.0.0.1:" + PortAssignment.unique();
-
- private static final File testData = new File(
- System.getProperty("test.data.dir", "build/test/data"));
- private CountDownLatch startSignal;
-
- /**
- * Verify the LogFormatter by running it on a known file.
- */
- @Test
- public void testLogFormatter() throws Exception {
- File snapDir = new File(testData, "invalidsnap");
- File logfile = new File(new File(snapDir, "version-2"), "log.274");
- String[] args = {logfile.getCanonicalFile().toString()};
- LogFormatter.main(args);
- }
-
-
- /**
- * Verify the SnapshotFormatter by running it on a known file.
- */
- @Test
- public void testSnapshotFormatter() throws Exception {
- File snapDir = new File(testData, "invalidsnap");
- File snapfile = new File(new File(snapDir, "version-2"), "snapshot.272");
- String[] args = {snapfile.getCanonicalFile().toString()};
- SnapshotFormatter.main(args);
- }
-
- /**
- * Verify the SnapshotFormatter by running it on a known file with one null data.
- */
- @Test
- public void testSnapshotFormatterWithNull() throws Exception {
- File snapDir = new File(testData, "invalidsnap");
- File snapfile = new File(new File(snapDir, "version-2"), "snapshot.273");
- String[] args = {snapfile.getCanonicalFile().toString()};
- SnapshotFormatter.main(args);
- }
-
- /**
- * test the snapshot
- * @throws Exception an exception could be expected
- */
- @Test
- public void testSnapshot() throws Exception {
- File snapDir = new File(testData, "invalidsnap");
- ZooKeeperServer zks = new ZooKeeperServer(snapDir, snapDir, 3000);
- SyncRequestProcessor.setSnapCount(1000);
- final int PORT = Integer.parseInt(HOSTPORT.split(":")[1]);
- ServerCnxnFactory f = ServerCnxnFactory.createFactory(PORT, -1);
- f.startup(zks);
- LOG.info("starting up the zookeeper server .. waiting");
- Assert.assertTrue("waiting for server being up",
- ClientBase.waitForServerUp(HOSTPORT, CONNECTION_TIMEOUT));
- ZooKeeper zk = new ZooKeeper(HOSTPORT, 20000, this);
- try {
- // we know this from the data files
- // this node is the last node in the snapshot
-
- Assert.assertTrue(zk.exists("/9/9/8", false) != null);
- } finally {
- zk.close();
- }
- f.shutdown();
- zks.shutdown();
- Assert.assertTrue("waiting for server down",
- ClientBase.waitForServerDown(HOSTPORT,
- ClientBase.CONNECTION_TIMEOUT));
-
- }
-
- public void process(WatchedEvent event) {
- LOG.info("Event:" + event.getState() + " " + event.getType() + " " + event.getPath());
- if (event.getState() == KeeperState.SyncConnected
- && startSignal != null && startSignal.getCount() > 0)
- {
- startSignal.countDown();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/7291e47c/zookeeper-common/src/test/java/org/apache/zookeeper/test/JMXEnv.java
----------------------------------------------------------------------
diff --git a/zookeeper-common/src/test/java/org/apache/zookeeper/test/JMXEnv.java b/zookeeper-common/src/test/java/org/apache/zookeeper/test/JMXEnv.java
deleted file mode 100644
index f67c67c..0000000
--- a/zookeeper-common/src/test/java/org/apache/zookeeper/test/JMXEnv.java
+++ /dev/null
@@ -1,325 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.zookeeper.test;
-
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.management.MBeanServer;
-import javax.management.MBeanServerConnection;
-import javax.management.MalformedObjectNameException;
-import javax.management.ObjectName;
-import javax.management.remote.JMXConnector;
-import javax.management.remote.JMXConnectorFactory;
-import javax.management.remote.JMXConnectorServer;
-import javax.management.remote.JMXConnectorServerFactory;
-import javax.management.remote.JMXServiceURL;
-
-import junit.framework.TestCase;
-
-import org.apache.zookeeper.jmx.CommonNames;
-import org.apache.zookeeper.jmx.MBeanRegistry;
-import org.junit.Assert;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class JMXEnv {
- protected static final Logger LOG = LoggerFactory.getLogger(JMXEnv.class);
-
- private static JMXConnectorServer cs;
- private static JMXConnector cc;
-
- public static void setUp() throws IOException {
- MBeanServer mbs = MBeanRegistry.getInstance().getPlatformMBeanServer();
-
- JMXServiceURL url = new JMXServiceURL("service:jmx:rmi://");
- cs = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);
- cs.start();
-
- JMXServiceURL addr = cs.getAddress();
-
- cc = JMXConnectorFactory.connect(addr);
- }
-
- public static void tearDown() {
- try {
- if (cc != null) {
- cc.close();
- }
- } catch (IOException e) {
- LOG.warn("Unexpected, ignoring", e);
-
- }
- cc = null;
- try {
- if (cs != null) {
- cs.stop();
- }
- } catch (IOException e) {
- LOG.warn("Unexpected, ignoring", e);
-
- }
- cs = null;
- }
-
- public static MBeanServerConnection conn() throws IOException {
- return cc.getMBeanServerConnection();
- }
-
- /**
- * Ensure that all of the specified names are registered.
- * Note that these are components of the name, and in particular
- * order matters - you want the more specific name (leafs) specified
- * before their parent(s) (since names are hierarchical)
- * It waits in a loop up to 60 seconds before failing if there is a
- * mismatch.
- * @param expectedNames
- * @return
- * @throws IOException
- * @throws MalformedObjectNameException
- */
- public static Set<ObjectName> ensureAll(String... expectedNames)
- throws IOException, InterruptedException
- {
- Set<ObjectName> beans;
- Set<ObjectName> found;
- int nTry = 0;
- do {
- if (nTry++ > 0) {
- Thread.sleep(100);
- }
- try {
- beans = conn().queryNames(
- new ObjectName(CommonNames.DOMAIN + ":*"), null);
- } catch (MalformedObjectNameException e) {
- throw new RuntimeException(e);
- }
-
- found = new HashSet<ObjectName>();
- for (String name : expectedNames) {
- LOG.info("expect:" + name);
- for (ObjectName bean : beans) {
- if (bean.toString().contains(name)) {
- LOG.info("found:" + name + " " + bean);
- found.add(bean);
- break;
- }
- }
- beans.removeAll(found);
- }
- } while ((expectedNames.length != found.size()) && (nTry < 600));
- TestCase.assertEquals("expected " + Arrays.toString(expectedNames),
- expectedNames.length, found.size());
- return beans;
- }
-
- /**
- * Ensure that only the specified names are registered.
- * Note that these are components of the name, and in particular
- * order matters - you want the more specific name (leafs) specified
- * before their parent(s) (since names are hierarchical)
- * @param expectedNames
- * @return
- * @throws IOException
- * @throws MalformedObjectNameException
- */
- public static Set<ObjectName> ensureOnly(String... expectedNames)
- throws IOException, InterruptedException
- {
- LOG.info("ensureOnly:" + Arrays.toString(expectedNames));
- Set<ObjectName> beans = ensureAll(expectedNames);
- for (ObjectName bean : beans) {
- LOG.info("unexpected:" + bean.toString());
- }
- TestCase.assertEquals(0, beans.size());
- return beans;
- }
-
- public static void ensureNone(String... expectedNames)
- throws IOException, InterruptedException
- {
- Set<ObjectName> beans;
- int nTry = 0;
- boolean foundUnexpected = false;
- String unexpectedName = "";
- do {
- if (nTry++ > 0) {
- Thread.sleep(100);
- }
- try {
- beans = conn().queryNames(
- new ObjectName(CommonNames.DOMAIN + ":*"), null);
- } catch (MalformedObjectNameException e) {
- throw new RuntimeException(e);
- }
-
- foundUnexpected = false;
- for (String name : expectedNames) {
- for (ObjectName bean : beans) {
- if (bean.toString().contains(name)) {
- LOG.info("didntexpect:" + name);
- foundUnexpected = true;
- unexpectedName = name + " " + bean.toString();
- break;
- }
- }
- if (foundUnexpected) {
- break;
- }
- }
- } while ((foundUnexpected) && (nTry < 600));
- if (foundUnexpected) {
- LOG.info("List of all beans follows:");
- for (ObjectName bean : beans) {
- LOG.info("bean:" + bean.toString());
- }
- TestCase.fail(unexpectedName);
- }
- }
-
- public static void dump() throws IOException {
- LOG.info("JMXEnv.dump() follows");
- Set<ObjectName> beans;
- try {
- beans = conn().queryNames(
- new ObjectName(CommonNames.DOMAIN + ":*"), null);
- } catch (MalformedObjectNameException e) {
- throw new RuntimeException(e);
- }
- for (ObjectName bean : beans) {
- LOG.info("bean:" + bean.toString());
- }
- }
-
- /**
- * Ensure that the specified parent names are registered. Note that these
- * are components of the name. It waits in a loop up to 60 seconds before
- * failing if there is a mismatch. This will return the beans which are not
- * matched.
- *
- * {@link https://issues.apache.org/jira/browse/ZOOKEEPER-1858}
- *
- * @param expectedNames
- * - expected beans
- * @return the beans which are not matched with the given expected names
- *
- * @throws IOException
- * @throws InterruptedException
- *
- */
- public static Set<ObjectName> ensureParent(String... expectedNames)
- throws IOException, InterruptedException {
- LOG.info("ensureParent:" + Arrays.toString(expectedNames));
-
- Set<ObjectName> beans;
- int nTry = 0;
- Set<ObjectName> found = new HashSet<ObjectName>();
- do {
- if (nTry++ > 0) {
- Thread.sleep(500);
- }
- try {
- beans = conn().queryNames(
- new ObjectName(CommonNames.DOMAIN + ":*"), null);
- } catch (MalformedObjectNameException e) {
- throw new RuntimeException(e);
- }
- found.clear();
- for (String name : expectedNames) {
- LOG.info("expect:" + name);
- for (ObjectName bean : beans) {
- // check the existence of name in bean
- if (compare(bean.toString(), name)) {
- LOG.info("found:" + name + " " + bean);
- found.add(bean);
- break;
- }
- }
- beans.removeAll(found);
- }
- } while (expectedNames.length != found.size() && nTry < 120);
- TestCase.assertEquals("expected " + Arrays.toString(expectedNames),
- expectedNames.length, found.size());
- return beans;
- }
-
- /**
- * Comparing that the given name exists in the bean. For component beans,
- * the component name will be present at the end of the bean name
- *
- * For example 'StandaloneServer' will present in the bean name like
- * 'org.apache.ZooKeeperService:name0=StandaloneServer_port-1'
- */
- private static boolean compare(String bean, String name) {
- String[] names = bean.split("=");
- if (names.length > 0 && names[names.length - 1].contains(name)) {
- return true;
- }
- return false;
- }
-
- /**
- * Ensure that the specified bean name and its attribute is registered. Note
- * that these are components of the name. It waits in a loop up to 60
- * seconds before failing if there is a mismatch. This will return the beans
- * which are not matched.
- *
- * @param expectedName
- * - expected bean
- * @param expectedAttribute
- * - expected attribute
- * @return the value of the attribute
- *
- * @throws Exception
- */
- public static Object ensureBeanAttribute(String expectedName,
- String expectedAttribute) throws Exception {
- String value = "";
- LOG.info("ensure bean:{}, attribute:{}", new Object[] { expectedName,
- expectedAttribute });
-
- Set<ObjectName> beans;
- int nTry = 0;
- do {
- if (nTry++ > 0) {
- Thread.sleep(500);
- }
- try {
- beans = conn().queryNames(
- new ObjectName(CommonNames.DOMAIN + ":*"), null);
- } catch (MalformedObjectNameException e) {
- throw new RuntimeException(e);
- }
- LOG.info("expect:" + expectedName);
- for (ObjectName bean : beans) {
- // check the existence of name in bean
- if (bean.toString().equals(expectedName)) {
- LOG.info("found:{} {}", new Object[] { expectedName, bean });
- return conn().getAttribute(bean, expectedAttribute);
- }
- }
- } while (nTry < 120);
- Assert.fail("Failed to find bean:" + expectedName + ", attribute:"
- + expectedAttribute);
- return value;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/7291e47c/zookeeper-common/src/test/java/org/apache/zookeeper/test/KeeperStateTest.java
----------------------------------------------------------------------
diff --git a/zookeeper-common/src/test/java/org/apache/zookeeper/test/KeeperStateTest.java b/zookeeper-common/src/test/java/org/apache/zookeeper/test/KeeperStateTest.java
deleted file mode 100644
index 55dc852..0000000
--- a/zookeeper-common/src/test/java/org/apache/zookeeper/test/KeeperStateTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.zookeeper.test;
-
-import java.util.EnumSet;
-
-import org.apache.zookeeper.ZKTestCase;
-import org.apache.zookeeper.KeeperException.Code;
-import org.apache.zookeeper.Watcher.Event.KeeperState;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class KeeperStateTest extends ZKTestCase {
-
- @Test
- public void testIntConversion() {
- // Ensure that we can convert all valid integers to KeeperStates
- EnumSet<KeeperState> allStates = EnumSet.allOf(KeeperState.class);
-
- for(KeeperState as : allStates) {
- Assert.assertEquals(as, KeeperState.fromInt( as.getIntValue() ) );
- }
- }
-
- @Test
- public void testInvalidIntConversion() {
- try {
- KeeperState ks = KeeperState.fromInt(324142);
- Assert.fail("Was able to create an invalid KeeperState via an integer");
- } catch(RuntimeException re) {
- // we're good.
- }
-
- }
-
- /** Validate that the deprecated constant still works. There were issues
- * found with switch statements - which need compile time constants.
- */
- @Test
- @SuppressWarnings("deprecation")
- public void testDeprecatedCodeOkInSwitch() {
- int test = 1;
- switch (test) {
- case Code.Ok:
- Assert.assertTrue(true);
- break;
- }
- }
-
- /** Verify the enum works (paranoid) */
- @Test
- public void testCodeOKInSwitch() {
- Code test = Code.OK;
- switch (test) {
- case OK:
- Assert.assertTrue(true);
- break;
- }
- }
-}