You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by si...@apache.org on 2012/09/07 07:04:34 UTC
svn commit: r1381870 [2/2] - in /zookeeper/bookkeeper/trunk: ./
bookkeeper-server/bin/
bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/
bookkeeper-server/src/main/java/org/apache/bookkeeper/client/
bookkeeper-server/src/main/java/org/apach...
Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/TestBackwardCompat.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/TestBackwardCompat.java?rev=1381870&r1=1381869&r2=1381870&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/TestBackwardCompat.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/TestBackwardCompat.java Fri Sep 7 05:04:33 2012
@@ -34,7 +34,11 @@ import org.junit.Before;
import org.junit.After;
import static org.junit.Assert.*;
+import org.apache.bookkeeper.bookie.Bookie;
+import org.apache.bookkeeper.bookie.BookieException;
import org.apache.bookkeeper.bookie.FileSystemUpgrade;
+import org.apache.bookkeeper.client.BookKeeperAdmin;
+import org.apache.bookkeeper.conf.ClientConfiguration;
public class TestBackwardCompat {
static Logger LOG = LoggerFactory.getLogger(TestBackwardCompat.class);
@@ -351,6 +355,60 @@ public class TestBackwardCompat {
}
}
+ /*
+ * Test old cookie accessing the new version formatted cluster.
+ */
+ @Test
+ public void testOldCookieAccessingNewCluster() throws Exception {
+ File journalDir = File.createTempFile("bookie", "journal");
+ journalDir.delete();
+ journalDir.mkdir();
+ File ledgerDir = File.createTempFile("bookie", "ledger");
+ ledgerDir.delete();
+ ledgerDir.mkdir();
+
+ int port = nextPort++;
+
+ // start old server
+ Server410 s410 = new Server410(journalDir, ledgerDir, port);
+ s410.start();
+
+ Ledger410 l410 = Ledger410.newLedger();
+ l410.write100();
+ l410.getId();
+ l410.close();
+ s410.stop();
+
+ // Format the metadata using current version
+ ServerCurrent currentServer = new ServerCurrent(journalDir, ledgerDir,
+ port);
+ BookKeeperAdmin.format(new ClientConfiguration(currentServer.conf),
+ false, true);
+ // start the current version server with old version cookie
+ try {
+ currentServer.start();
+ fail("Bookie should not start with old cookie");
+ } catch (BookieException e) {
+ assertTrue("Old Cookie should not be able to access", e
+ .getMessage().contains("instanceId"));
+ } finally {
+ currentServer.stop();
+ }
+
+ // Format the bookie also and restart
+ assertTrue("Format should be success",
+ Bookie.format(currentServer.conf, false, true));
+ try {
+ currentServer = null;
+ currentServer = new ServerCurrent(journalDir, ledgerDir, port);
+ currentServer.start();
+ } finally {
+ if (null != currentServer) {
+ currentServer.stop();
+ }
+ }
+ }
+
/**
* Test compatability between version 4.0.0 and the current version.
* Incompatabilities are:
Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/ZooKeeperUtil.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/ZooKeeperUtil.java?rev=1381870&r1=1381869&r2=1381870&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/ZooKeeperUtil.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/ZooKeeperUtil.java Fri Sep 7 05:04:33 2012
@@ -26,17 +26,11 @@ import java.io.IOException;
import java.net.InetSocketAddress;
+import org.apache.bookkeeper.util.ZkUtils;
import org.apache.commons.io.FileUtils;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-
import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-import org.apache.zookeeper.KeeperException;
-import org.apache.zookeeper.WatchedEvent;
-import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.ZooDefs.Ids;
@@ -72,25 +66,6 @@ public class ZooKeeperUtil {
return zkc;
}
- public ZooKeeper getNewZooKeeperClient() throws Exception {
- final CountDownLatch latch = new CountDownLatch(1);
- ZooKeeper zkc = new ZooKeeper(getZooKeeperConnectString(), 10000,
- new Watcher() {
- @Override
- public void process(WatchedEvent event) {
- // handle session disconnects and expires
- if (event.getState().equals(Watcher.Event.KeeperState.SyncConnected)) {
- latch.countDown();
- }
- }
- });
- if (!latch.await(10000, TimeUnit.MILLISECONDS)) {
- zkc.close();
- fail("Could not connect to zookeeper server");
- }
- return zkc;
- }
-
public String getZooKeeperConnectString() {
return connectString;
}
@@ -115,8 +90,8 @@ public class ZooKeeperUtil {
// create a zookeeper client
LOG.debug("Instantiate ZK Client");
- final CountDownLatch latch = new CountDownLatch(1);
- zkc = getNewZooKeeperClient();
+ zkc = ZkUtils.createConnectedZookeeperClient(
+ getZooKeeperConnectString(), 10000);
// initialize the zk client with values
zkc.create("/ledgers", new byte[0], Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);