You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by mi...@apache.org on 2014/03/11 02:44:31 UTC

svn commit: r1576174 - in /zookeeper/trunk: CHANGES.txt src/java/test/org/apache/zookeeper/test/ReconfigTest.java

Author: michim
Date: Tue Mar 11 01:44:30 2014
New Revision: 1576174

URL: http://svn.apache.org/r1576174
Log:
ZOOKEEPER-1662. Fix to two small bugs in ReconfigTest.testPortChange() (Alexander Shraer via michim)

Modified:
    zookeeper/trunk/CHANGES.txt
    zookeeper/trunk/src/java/test/org/apache/zookeeper/test/ReconfigTest.java

Modified: zookeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/trunk/CHANGES.txt?rev=1576174&r1=1576173&r2=1576174&view=diff
==============================================================================
--- zookeeper/trunk/CHANGES.txt (original)
+++ zookeeper/trunk/CHANGES.txt Tue Mar 11 01:44:30 2014
@@ -567,6 +567,9 @@ BUGFIXES:
   ZOOKEEPER-1888. ZkCli.cmd commands fail with "'java' is not recognized as an
   internal or external command" (Ivan Mitic via michim)
 
+  ZOOKEEPER-1662. Fix to two small bugs in ReconfigTest.testPortChange()
+  (Alexander Shraer via michim)
+
 IMPROVEMENTS:
 
   ZOOKEEPER-1170. Fix compiler (eclipse) warnings: unused imports,

Modified: zookeeper/trunk/src/java/test/org/apache/zookeeper/test/ReconfigTest.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/test/org/apache/zookeeper/test/ReconfigTest.java?rev=1576174&r1=1576173&r2=1576174&view=diff
==============================================================================
--- zookeeper/trunk/src/java/test/org/apache/zookeeper/test/ReconfigTest.java (original)
+++ zookeeper/trunk/src/java/test/org/apache/zookeeper/test/ReconfigTest.java Tue Mar 11 01:44:30 2014
@@ -539,25 +539,37 @@ public class ReconfigTest extends ZKTest
         joiningServers.add("server." + observerIndex + "=localhost:" + port1
                 + ":" + port2 + ":observer;localhost:" + port3);
 
+        // create a /test znode and check that read/write works before
+        // any reconfig is invoked
+        testNormalOperation(zkArr[observerIndex], zkArr[followerIndex]);
+
         reconfig(zkArr[followerIndex], joiningServers, null, null, -1);
 
-       try {
-            zkArr[observerIndex].create("/test", "asdfg".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
-            Assert.fail("client port didn't change");
+        // the change of port may not be immediate -- we repeatedly
+        // invoke an operation expecting it to eventually fail once
+        // the client port of observerIndex changes. If it didn't
+        // change -- that's an error.
+        try {
+          for (int i=0; i < 30; i++) {
+            Thread.sleep(1000);
+            zkArr[observerIndex].setData("/test", "teststr".getBytes(), -1);
+          }
+          Assert.fail("client port didn't change");
         } catch (KeeperException.ConnectionLossException e) {
             zkArr[observerIndex] = new ZooKeeper("127.0.0.1:"
                     + qu.getPeer(observerIndex).peer.getClientPort(),
-                    ClientBase.CONNECTION_TIMEOUT, null);
+                    ClientBase.CONNECTION_TIMEOUT, new Watcher() {
+                        public void process(WatchedEvent event) {}});
         }
-      
+
         leaderIndex = getLeaderId(qu);
 
         followerIndex = 1;
         while (followerIndex == leaderIndex || followerIndex == observerIndex)
             followerIndex++;
-        
+
         testNormalOperation(zkArr[observerIndex], zkArr[followerIndex]);
-        
+
         testServerHasConfig(zkArr[observerIndex], joiningServers, null);
 
         Assert.assertTrue(qu.getPeer(observerIndex).peer.getQuorumAddress()