You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by ca...@apache.org on 2013/07/14 22:09:45 UTC

svn commit: r1503045 - in /zookeeper/trunk: CHANGES.txt src/java/test/org/apache/zookeeper/server/TruncateCorruptionTest.java src/java/test/org/apache/zookeeper/server/util/PortForwarder.java src/java/test/org/apache/zookeeper/test/TruncateTest.java

Author: camille
Date: Sun Jul 14 20:09:45 2013
New Revision: 1503045

URL: http://svn.apache.org/r1503045
Log:
 ZOOKEEPER-1629. testTransactionLogCorruption occasionally fails. (shralex via camille)

Removed:
    zookeeper/trunk/src/java/test/org/apache/zookeeper/server/TruncateCorruptionTest.java
Modified:
    zookeeper/trunk/CHANGES.txt
    zookeeper/trunk/src/java/test/org/apache/zookeeper/server/util/PortForwarder.java
    zookeeper/trunk/src/java/test/org/apache/zookeeper/test/TruncateTest.java

Modified: zookeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/trunk/CHANGES.txt?rev=1503045&r1=1503044&r2=1503045&view=diff
==============================================================================
--- zookeeper/trunk/CHANGES.txt (original)
+++ zookeeper/trunk/CHANGES.txt Sun Jul 14 20:09:45 2013
@@ -364,6 +364,8 @@ BUGFIXES:
   receiving successful response to connection request, can cause TCP
   RST (Chris Nauroth via phunt)
 
+  ZOOKEEPER-1629. testTransactionLogCorruption occasionally fails. (shralex via camille)
+  
 IMPROVEMENTS:
 
   ZOOKEEPER-1170. Fix compiler (eclipse) warnings: unused imports,

Modified: zookeeper/trunk/src/java/test/org/apache/zookeeper/server/util/PortForwarder.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/test/org/apache/zookeeper/server/util/PortForwarder.java?rev=1503045&r1=1503044&r2=1503045&view=diff
==============================================================================
--- zookeeper/trunk/src/java/test/org/apache/zookeeper/server/util/PortForwarder.java (original)
+++ zookeeper/trunk/src/java/test/org/apache/zookeeper/server/util/PortForwarder.java Sun Jul 14 20:09:45 2013
@@ -36,6 +36,55 @@ import java.util.concurrent.TimeUnit;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+/**
+ * A utility that does bi-directional forwarding between two ports.
+ * Useful, for example, to simulate network failures.
+ * Example:
+ * 
+ *   Server 1 config file:
+ *           
+ *      server.1=127.0.0.1:7301:7401;8201
+ *      server.2=127.0.0.1:7302:7402;8202
+ *      server.3=127.0.0.1:7303:7403;8203
+ *   
+ *   Server 2 and 3 config files:
+ *           
+ *      server.1=127.0.0.1:8301:8401;8201
+ *      server.2=127.0.0.1:8302:8402;8202
+ *      server.3=127.0.0.1:8303:8403;8203
+ *
+ *   Initially forward traffic between 730x and 830x and between 740x and 830x
+ *   This way server 1 can communicate with servers 2 and 3
+ *  ....
+ *   
+ *   List<PortForwarder> pfs = startForwarding();
+ *  ....
+ *   // simulate a network interruption for server 1
+ *   stopForwarding(pfs);
+ *  ....
+ *   // restore connection 
+ *   pfs = startForwarding();
+ *
+ *
+ *  private List<PortForwarder> startForwarding() throws IOException {
+ *      List<PortForwarder> res = new ArrayList<PortForwarder>();
+ *      res.add(new PortForwarder(8301, 7301));
+ *      res.add(new PortForwarder(8401, 7401));
+ *      res.add(new PortForwarder(7302, 8302));
+ *      res.add(new PortForwarder(7402, 8402));
+ *      res.add(new PortForwarder(7303, 8303));
+ *      res.add(new PortForwarder(7403, 8403));
+ *      return res;
+ *  }
+ *  
+ *  private void stopForwarding(List<PortForwarder> pfs) throws Exception {
+ *       for (PortForwarder pf : pfs) {
+ *           pf.shutdown();
+ *       }
+ *  }
+ *  
+ *
+ */
 public class PortForwarder extends Thread {
     private static final Logger LOG = LoggerFactory
             .getLogger(PortForwarder.class);

Modified: zookeeper/trunk/src/java/test/org/apache/zookeeper/test/TruncateTest.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/test/org/apache/zookeeper/test/TruncateTest.java?rev=1503045&r1=1503044&r2=1503045&view=diff
==============================================================================
--- zookeeper/trunk/src/java/test/org/apache/zookeeper/test/TruncateTest.java (original)
+++ zookeeper/trunk/src/java/test/org/apache/zookeeper/test/TruncateTest.java Sun Jul 14 20:09:45 2013
@@ -26,6 +26,7 @@ import java.util.HashMap;
 import org.apache.jute.Record;
 import org.apache.zookeeper.CreateMode;
 import org.apache.zookeeper.KeeperException;
+import org.apache.zookeeper.PortAssignment;
 import org.apache.zookeeper.WatchedEvent;
 import org.apache.zookeeper.Watcher;
 import org.apache.zookeeper.ZKTestCase;
@@ -53,7 +54,7 @@ import org.slf4j.LoggerFactory;
 public class TruncateTest extends ZKTestCase {
 	private static final Logger LOG = LoggerFactory.getLogger(TruncateTest.class);
     File dataDir1, dataDir2, dataDir3;
-    final int baseHostPort = 12233;
+    final int baseHostPort = PortAssignment.unique();
     
     @Before
     public void setUp() throws IOException {
@@ -161,9 +162,15 @@ public class TruncateTest extends ZKTest
         
         // Start up two of the quorum and add 10 txns
         HashMap<Long,QuorumServer> peers = new HashMap<Long,QuorumServer>();
-        peers.put(Long.valueOf(1), new QuorumServer(1, new InetSocketAddress("127.0.0.1", port1 + 1000)));
-        peers.put(Long.valueOf(2), new QuorumServer(2, new InetSocketAddress("127.0.0.1", port2 + 1000)));
-        peers.put(Long.valueOf(3), new QuorumServer(3, new InetSocketAddress("127.0.0.1", port3 + 1000)));
+        peers.put(Long.valueOf(1), new QuorumServer(1, new InetSocketAddress("127.0.0.1", port1 + 1000),
+        		new InetSocketAddress("127.0.0.1", port1 + 2000),
+        		new InetSocketAddress("127.0.0.1", port1 + 3000)));
+        peers.put(Long.valueOf(2), new QuorumServer(2, new InetSocketAddress("127.0.0.1", port2 + 1000),
+        		new InetSocketAddress("127.0.0.1", port2 + 2000),
+        		new InetSocketAddress("127.0.0.1", port2 + 3000)));
+        peers.put(Long.valueOf(3), new QuorumServer(3, new InetSocketAddress("127.0.0.1", port3 + 1000),
+        		new InetSocketAddress("127.0.0.1", port3 + 2000),
+        		new InetSocketAddress("127.0.0.1", port3 + 3000)));
 
         QuorumPeer s2 = new QuorumPeer(peers, dataDir2, dataDir2, port2, 0, 2, tickTime, initLimit, syncLimit);
         s2.start();