Author: mahadev
Date: Mon Feb 6 08:52:05 2012
New Revision: 1240927
URL: http://svn.apache.org/viewvc?rev=1240927&view=rev
Log:
ZOOKEEPER-1352. server.InvalidSnapshotTest is using connection timeouts that are too short.
(phunt via mahadev)
Modified:
zookeeper/branches/branch-3.3/CHANGES.txt
zookeeper/branches/branch-3.3/src/java/test/org/apache/zookeeper/server/InvalidSnapshotTest.java
zookeeper/branches/branch-3.3/src/java/test/org/apache/zookeeper/test/ClientBase.java
Modified: zookeeper/branches/branch-3.3/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.3/CHANGES.txt?rev=1240927&r1=1240926&r2=1240927&view=diff
==============================================================================
--- zookeeper/branches/branch-3.3/CHANGES.txt (original)
+++ zookeeper/branches/branch-3.3/CHANGES.txt Mon Feb 6 08:52:05 2012
@@ -18,6 +18,9 @@ BUGFIXES:
ZOOKEEPER-1353. C client test suite fails consistently.
(Clint Byrum via mahadev)
+ ZOOKEEPER-1352. server.InvalidSnapshotTest is using connection timeouts
+ that are too short. (phunt via mahadev)
+
Release 3.3.4 - 2011-11-16
Backward compatible changes:
Modified: zookeeper/branches/branch-3.3/src/java/test/org/apache/zookeeper/server/InvalidSnapshotTest.java
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.3/src/java/test/org/apache/zookeeper/server/InvalidSnapshotTest.java?rev=1240927&r1=1240926&r2=1240927&view=diff
==============================================================================
--- zookeeper/branches/branch-3.3/src/java/test/org/apache/zookeeper/server/InvalidSnapshotTest.java
(original)
+++ zookeeper/branches/branch-3.3/src/java/test/org/apache/zookeeper/server/InvalidSnapshotTest.java
Mon Feb 6 08:52:05 2012
@@ -20,94 +20,61 @@ package org.apache.zookeeper.server;
import java.io.File;
import java.io.RandomAccessFile;
-import java.net.InetSocketAddress;
-
-import junit.framework.TestCase;
import org.apache.log4j.Logger;
import org.apache.zookeeper.CreateMode;
-import org.apache.zookeeper.PortAssignment;
-import org.apache.zookeeper.WatchedEvent;
-import org.apache.zookeeper.Watcher;
-import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.ZooDefs.Ids;
+import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.test.ClientBase;
import org.junit.Test;
/**
- * this test checks that the server works
- * even if the last snapshot is invalidated
- * by corruption or if the server crashes
- * while generating the snapshot.
+ * This test checks that the server works even if the last snapshot is
+ * invalidated by corruption or if the server crashes while generating the
+ * snapshot.
*/
-public class InvalidSnapshotTest extends TestCase implements Watcher {
- private static final Logger LOG =
- Logger.getLogger(InvalidSnapshotTest.class);
-
- private static final String HOSTPORT =
- "127.0.0.1:" + PortAssignment.unique();
- private static final int CONNECTION_TIMEOUT = 3000;
+public class InvalidSnapshotTest extends ClientBase {
+ private static final Logger LOG = Logger.getLogger(InvalidSnapshotTest.class);
+
+ public InvalidSnapshotTest() {
+ SyncRequestProcessor.setSnapCount(100);
+ }
/**
- * this test does the main work of testing
- * an invalid snapshot
- * @throws Exception
+ * Validate that the server can come up on an invalid snapshot - by
+ * reverting to a prior snapshot + associated logs.
*/
@Test
public void testInvalidSnapshot() throws Exception {
- File tmpDir = ClientBase.createTmpDir();
- ClientBase.setupTestEnv();
- ZooKeeperServer zks = new ZooKeeperServer(tmpDir, tmpDir, 3000);
- SyncRequestProcessor.setSnapCount(100);
- final int PORT = Integer.parseInt(HOSTPORT.split(":")[1]);
- NIOServerCnxn.Factory f = new NIOServerCnxn.Factory(
- new InetSocketAddress(PORT));
- f.startup(zks);
- assertTrue("waiting for server being up ",
- ClientBase.waitForServerUp(HOSTPORT,CONNECTION_TIMEOUT));
- ZooKeeper zk = new ZooKeeper(HOSTPORT, CONNECTION_TIMEOUT, this);
- try {
- for (int i=0; i< 2000; i++) {
- zk.create("/invalidsnap-" + i, new byte[0], Ids.OPEN_ACL_UNSAFE,
- CreateMode.PERSISTENT);
- }
- } finally {
- zk.close();
- }
- f.shutdown();
- assertTrue("waiting for server to shutdown",
- ClientBase.waitForServerDown(HOSTPORT, CONNECTION_TIMEOUT));
- // now corrupt the snapshot
- File snapFile = zks.getTxnLogFactory().findMostRecentSnapshot();
- RandomAccessFile raf = new RandomAccessFile(snapFile, "rws");
- raf.setLength(3);
- raf.close();
- // now restart the server and see if it starts
- zks = new ZooKeeperServer(tmpDir, tmpDir, 3000);
- SyncRequestProcessor.setSnapCount(100);
- f = new NIOServerCnxn.Factory(new InetSocketAddress(PORT));
- f.startup(zks);
- assertTrue("waiting for server being up ",
- ClientBase.waitForServerUp(HOSTPORT,CONNECTION_TIMEOUT));
- // the server should come up
- zk = new ZooKeeper(HOSTPORT, 20000, this);
- try {
- assertTrue("the node should exist",
- (zk.exists("/invalidsnap-1999", false) != null));
- f.shutdown();
- assertTrue("waiting for server to shutdown",
- ClientBase.waitForServerDown(HOSTPORT, CONNECTION_TIMEOUT));
- } finally {
- zk.close();
- }
-
- f.shutdown();
- assertTrue("waiting for server to shutdown",
- ClientBase.waitForServerDown(HOSTPORT, CONNECTION_TIMEOUT));
- }
-
- public void process(WatchedEvent event) {
- // do nothing for now
+ ZooKeeper zk = createClient();
+ try {
+ for (int i = 0; i < 2000; i++) {
+ zk.create("/invalidsnap-" + i, new byte[0],
+ Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
+ }
+ } finally {
+ zk.close();
+ }
+ NIOServerCnxn.Factory factory = serverFactory;
+ stopServer();
+
+ // now corrupt the snapshot
+ File snapFile = factory.zks.getTxnLogFactory().findMostRecentSnapshot();
+ LOG.info("Corrupting " + snapFile);
+ RandomAccessFile raf = new RandomAccessFile(snapFile, "rws");
+ raf.setLength(3);
+ raf.close();
+
+ // now restart the server
+ startServer();
+
+ // verify that the expected data exists and wasn't lost
+ zk = createClient();
+ try {
+ assertTrue("the node should exist",
+ (zk.exists("/invalidsnap-1999", false) != null));
+ } finally {
+ zk.close();
+ }
}
-
}
\ No newline at end of file
Modified: zookeeper/branches/branch-3.3/src/java/test/org/apache/zookeeper/test/ClientBase.java
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.3/src/java/test/org/apache/zookeeper/test/ClientBase.java?rev=1240927&r1=1240926&r2=1240927&view=diff
==============================================================================
--- zookeeper/branches/branch-3.3/src/java/test/org/apache/zookeeper/test/ClientBase.java
(original)
+++ zookeeper/branches/branch-3.3/src/java/test/org/apache/zookeeper/test/ClientBase.java
Mon Feb 6 08:52:05 2012
@@ -291,7 +291,7 @@ public abstract class ClientBase extends
return Integer.parseInt(portstr);
}
- static NIOServerCnxn.Factory createNewServerInstance(File dataDir,
+ public static NIOServerCnxn.Factory createNewServerInstance(File dataDir,
NIOServerCnxn.Factory factory, String hostPort, int maxCnxns)
throws IOException, InterruptedException
{
|