You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by br...@apache.org on 2012/04/23 01:20:15 UTC

svn commit: r1328991 [2/2] - in /zookeeper/trunk: ./ src/java/main/org/apache/zookeeper/server/quorum/ src/java/main/org/apache/zookeeper/server/quorum/flexible/ src/java/test/org/apache/zookeeper/server/quorum/ src/java/test/org/apache/zookeeper/serve...

Added: zookeeper/trunk/src/java/test/org/apache/zookeeper/server/util/DynamicConfigBCTest.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/test/org/apache/zookeeper/server/util/DynamicConfigBCTest.java?rev=1328991&view=auto
==============================================================================
--- zookeeper/trunk/src/java/test/org/apache/zookeeper/server/util/DynamicConfigBCTest.java (added)
+++ zookeeper/trunk/src/java/test/org/apache/zookeeper/server/util/DynamicConfigBCTest.java Sun Apr 22 23:20:13 2012
@@ -0,0 +1,171 @@
+/**
+ * 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.server.util;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.Properties;
+import org.junit.Assert;
+
+import org.junit.Test;
+import org.apache.zookeeper.PortAssignment;
+import org.apache.zookeeper.server.ZKDatabase;
+import org.apache.zookeeper.server.quorum.QuorumPeer;
+import org.apache.zookeeper.server.quorum.QuorumPeerConfig;
+import org.apache.zookeeper.server.quorum.QuorumPeerConfig.ConfigException;
+import org.apache.zookeeper.server.quorum.flexible.QuorumVerifier;
+import org.apache.zookeeper.test.ClientBase;
+
+
+/**
+ * test for backward compatibility of dynamic configuration parameters representation.
+ * Currently this only includes membership parameters.
+ * {@link https://issues.apache.org/jira/browse/ZOOKEEPER-1411}
+ */
+public class DynamicConfigBCTest extends QuorumPeer {
+    final int CLIENT_PORT_QP1 = PortAssignment.unique();
+    final int CLIENT_PORT_QP2 = PortAssignment.unique();
+    final int CLIENT_PORT_QP3 = PortAssignment.unique();
+    
+    String configStr1 =
+        "server.1=127.0.0.1:" + PortAssignment.unique()
+        + ":" + PortAssignment.unique()
+        + "\nserver.2=127.0.0.1:" + PortAssignment.unique() 
+        + ":" + PortAssignment.unique();
+
+    
+    String configStr2 =
+        "server.1=127.0.0.1:" + PortAssignment.unique()
+        + ":" + PortAssignment.unique() + ";" + CLIENT_PORT_QP1
+        + "\nserver.2=127.0.0.1:" + PortAssignment.unique() 
+        + ":" + PortAssignment.unique() + ";" + CLIENT_PORT_QP2
+        + "\nserver.3=127.0.0.1:" + PortAssignment.unique() 
+        + ":" + PortAssignment.unique() + ";" + CLIENT_PORT_QP3
+        + "\nversion=2";
+
+    
+        @Test
+        public void dynamicConfigBackwardCompatibilityTest() throws IOException, ConfigException
+        {           
+            //set up an plain old single config file 
+            File tmpDir = ClientBase.createTmpDir();            
+            File confFile = new File(tmpDir, "zoo.cfg");            
+            
+            FileWriter fwriter = new FileWriter(confFile);
+            fwriter.write("tickTime=4000\n");
+            fwriter.write("initLimit=10\n");
+            fwriter.write("syncLimit=5\n");
+
+            File dataDir = new File(tmpDir, "data");
+            if (!dataDir.mkdir()) {
+                throw new IOException("Unable to mkdir " + dataDir);
+            }
+
+            // Convert windows path to UNIX to avoid problems with "\"
+            String dir = dataDir.toString();
+            String osname = java.lang.System.getProperty("os.name");
+            if (osname.toLowerCase().contains("windows")) {
+                dir = dir.replace('\\', '/');
+            }
+            fwriter.write("dataDir=" + dir + "\n");
+            
+            fwriter.write("clientPort=" + CLIENT_PORT_QP1 + "\n");
+            
+            fwriter.write(configStr1 + "\n");
+            fwriter.flush();
+            fwriter.close();
+            
+            File myidFile = new File(dataDir, "myid");
+            fwriter = new FileWriter(myidFile);
+            int myId = 1;
+            fwriter.write(Integer.toString(myId));
+            fwriter.flush();
+            fwriter.close();
+            
+            //set QuorumPeer's  membership params the same way QuorumPeerMain does            
+            QuorumPeerConfig config = new QuorumPeerConfig();
+            config.parse(confFile.toString());
+            
+            setDynamicConfigFilename(config.getDynamicConfigFilename());
+            setConfigFileName(config.getConfigFilename());
+            setConfigBackwardCompatibility(config.getConfigBackwardCompatibility());
+            setZKDatabase(new ZKDatabase(getTxnFactory()));
+            setQuorumVerifier(config.getQuorumVerifier(), false);
+            
+            // check that a dynamic configuration file wasn't created and that the static config file contains
+            // the membership definitions
+            Assert.assertFalse((new File(config.getConfigFilename() + ".dynamic")).exists());
+            Properties cfg = new Properties();
+            FileInputStream in = new FileInputStream(config.getConfigFilename());
+            try {
+                cfg.load(in);
+            } finally {
+                in.close();
+            }
+            Assert.assertTrue(cfg.containsKey("server.1"));
+            Assert.assertTrue(cfg.containsKey("server.2"));
+            Assert.assertFalse(cfg.containsKey("server.3"));
+            Assert.assertFalse(cfg.containsKey("dynamicConfigFile"));
+            
+            // check that backward compatibility bit is true
+            Assert.assertTrue(getConfigBackwardCompatibility());
+
+            QuorumVerifier qvNew = configFromString(configStr2);
+            setQuorumVerifier(qvNew, true);
+            
+            // check that backward compatibility bit is now false
+            Assert.assertFalse(getConfigBackwardCompatibility());
+
+            // check that a dynamic configuration file was created
+            Assert.assertTrue((new File(config.getConfigFilename() + ".dynamic")).exists());
+
+            // check that config file doesn't include membership info
+            // and has a pointer to the dynamic configuration file
+            cfg = new Properties();
+            in = new FileInputStream(config.getConfigFilename());
+            try {
+                cfg.load(in);
+            } finally {
+                in.close();
+            }
+            Assert.assertFalse(cfg.containsKey("server.1"));
+            Assert.assertFalse(cfg.containsKey("server.2"));
+            Assert.assertFalse(cfg.containsKey("server.3"));
+            Assert.assertTrue(cfg.containsKey("dynamicConfigFile"));
+
+            // check that the dynamic configuration file contains the membership info            
+            cfg = new Properties();
+            in = new FileInputStream(getDynamicConfigFilename());
+            try {
+                cfg.load(in);
+            } finally {
+                in.close();
+            }
+            Assert.assertTrue(cfg.containsKey("server.1"));
+            Assert.assertTrue(cfg.containsKey("server.2"));
+            Assert.assertTrue(cfg.containsKey("server.3"));
+            Assert.assertFalse(cfg.containsKey("dynamicConfigFile"));
+        }
+
+}

Modified: zookeeper/trunk/src/java/test/org/apache/zookeeper/test/CnxManagerTest.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/test/org/apache/zookeeper/test/CnxManagerTest.java?rev=1328991&r1=1328990&r2=1328991&view=diff
==============================================================================
--- zookeeper/trunk/src/java/test/org/apache/zookeeper/test/CnxManagerTest.java (original)
+++ zookeeper/trunk/src/java/test/org/apache/zookeeper/test/CnxManagerTest.java Sun Apr 22 23:20:13 2012
@@ -66,7 +66,8 @@ public class CnxManagerTest extends ZKTe
             peers.put(Long.valueOf(i),
                     new QuorumServer(i,
                             new InetSocketAddress(peerQuorumPort[i]),
-                    new InetSocketAddress(PortAssignment.unique())));
+                    new InetSocketAddress(PortAssignment.unique()), 
+                    new InetSocketAddress(peerClientPort[i])));
             peerTmpdir[i] = ClientBase.createTmpDir();
         }
     }
@@ -183,6 +184,7 @@ public class CnxManagerTest extends ZKTe
         peers.put(Long.valueOf(2),
                 new QuorumServer(2,
                         new InetSocketAddress(deadAddress, deadPort),
+                        new InetSocketAddress(deadAddress, PortAssignment.unique()),
                         new InetSocketAddress(deadAddress, PortAssignment.unique())));
         peerTmpdir[2] = ClientBase.createTmpDir();
 

Modified: zookeeper/trunk/src/java/test/org/apache/zookeeper/test/FLETest.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/test/org/apache/zookeeper/test/FLETest.java?rev=1328991&r1=1328990&r2=1328991&view=diff
==============================================================================
--- zookeeper/trunk/src/java/test/org/apache/zookeeper/test/FLETest.java (original)
+++ zookeeper/trunk/src/java/test/org/apache/zookeeper/test/FLETest.java Sun Apr 22 23:20:13 2012
@@ -298,12 +298,12 @@ public class FLETest extends ZKTestCase 
          * Creates list of peers.
          */
         for(int i = 0; i < count; i++) {
+            port[i] = PortAssignment.unique();
             peers.put(Long.valueOf(i),
                     new QuorumServer(i,
                             new InetSocketAddress(PortAssignment.unique()),
-                    new InetSocketAddress(PortAssignment.unique())));
-            tmpdir[i] = ClientBase.createTmpDir();
-            port[i] = PortAssignment.unique();
+                    new InetSocketAddress(PortAssignment.unique()), new InetSocketAddress(port[i])));
+            tmpdir[i] = ClientBase.createTmpDir();           
         }
 
         /*
@@ -400,12 +400,13 @@ public class FLETest extends ZKTestCase 
         int waitTime = 10 * 1000;
         ArrayList<QuorumPeer> peerList = new ArrayList<QuorumPeer>();
         for(sid = 0; sid < 3; sid++) {
+            port[sid] = PortAssignment.unique();
             peers.put(Long.valueOf(sid),
                     new QuorumServer(sid,
                             new InetSocketAddress(PortAssignment.unique()),
-                    new InetSocketAddress(PortAssignment.unique())));
-            tmpdir[sid] = ClientBase.createTmpDir();
-            port[sid] = PortAssignment.unique();
+                    new InetSocketAddress(PortAssignment.unique()),
+                    new InetSocketAddress(port[sid])));
+            tmpdir[sid] = ClientBase.createTmpDir();          
         }
         // start 2 peers and verify if they form the cluster
         for (sid = 0; sid < 2; sid++) {

Modified: zookeeper/trunk/src/java/test/org/apache/zookeeper/test/FLEZeroWeightTest.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/test/org/apache/zookeeper/test/FLEZeroWeightTest.java?rev=1328991&r1=1328990&r2=1328991&view=diff
==============================================================================
--- zookeeper/trunk/src/java/test/org/apache/zookeeper/test/FLEZeroWeightTest.java (original)
+++ zookeeper/trunk/src/java/test/org/apache/zookeeper/test/FLEZeroWeightTest.java Sun Apr 22 23:20:13 2012
@@ -144,12 +144,13 @@ public class FLEZeroWeightTest extends Z
 
         LOG.info("TestZeroWeightQuorum: " + getTestName()+ ", " + count);
         for(int i = 0; i < count; i++) {
-            peers.put(Long.valueOf(i),
-                    new QuorumServer(i,
-                            new InetSocketAddress(PortAssignment.unique()),
-                    new InetSocketAddress(PortAssignment.unique())));
+            InetSocketAddress addr1 = new InetSocketAddress("127.0.0.1",PortAssignment.unique());
+            InetSocketAddress addr2 = new InetSocketAddress("127.0.0.1",PortAssignment.unique());
+            InetSocketAddress addr3 = new InetSocketAddress("127.0.0.1",PortAssignment.unique());
+            port[i] = addr3.getPort();
+            qp.setProperty("server."+i, "127.0.0.1:"+addr1.getPort()+":"+addr2.getPort()+";"+port[i]);
+            peers.put(Long.valueOf(i), new QuorumServer(i, addr1, addr2, addr3));
             tmpdir[i] = ClientBase.createTmpDir();
-            port[i] = PortAssignment.unique();
         }
 
         for(int i = 0; i < le.length; i++) {

Modified: zookeeper/trunk/src/java/test/org/apache/zookeeper/test/HierarchicalQuorumTest.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/test/org/apache/zookeeper/test/HierarchicalQuorumTest.java?rev=1328991&r1=1328990&r2=1328991&view=diff
==============================================================================
--- zookeeper/trunk/src/java/test/org/apache/zookeeper/test/HierarchicalQuorumTest.java (original)
+++ zookeeper/trunk/src/java/test/org/apache/zookeeper/test/HierarchicalQuorumTest.java Sun Apr 22 23:20:13 2012
@@ -53,6 +53,13 @@ public class HierarchicalQuorumTest exte
     protected int leport4;
     protected int leport5;
 
+    protected int clientport1;
+    protected int clientport2;
+    protected int clientport3;
+    protected int clientport4;
+    protected int clientport5;
+    
+    
     Properties qp;
     protected final ClientHammerTest cht = new ClientHammerTest();
     
@@ -74,12 +81,17 @@ public class HierarchicalQuorumTest exte
         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;
+        clientport1 = PortAssignment.unique();
+        clientport2 = PortAssignment.unique();
+        clientport3 = PortAssignment.unique();
+        clientport4 = PortAssignment.unique();
+        clientport5 = PortAssignment.unique();
+        
+        hostPort = "127.0.0.1:" + clientport1 
+            + ",127.0.0.1:" + clientport2 
+            + ",127.0.0.1:" + clientport3 
+            + ",127.0.0.1:" + clientport4 
+            + ",127.0.0.1:" + clientport5;
         LOG.info("Ports are: " + hostPort);
 
         s1dir = ClientBase.createTmpDir();
@@ -94,7 +106,12 @@ public class HierarchicalQuorumTest exte
         "weight.2=1\n" +
         "weight.3=1\n" +
         "weight.4=0\n" +
-        "weight.5=0\n";
+        "weight.5=0\n" +
+        "server.1=127.0.0.1:" + (port1 + 1000) + ":" + (leport1 + 1000) + ";" + clientport1 + "\n" + 
+        "server.2=127.0.0.1:" + (port2 + 1000) + ":" + (leport2 + 1000) + ";" + clientport2 + "\n" + 
+        "server.3=127.0.0.1:" + (port3 + 1000) + ":" + (leport3 + 1000) + ";" + clientport3 + "\n" + 
+        "server.4=127.0.0.1:" + (port4 + 1000) + ":" + (leport4 + 1000) + ";" + clientport4 + "\n" + 
+        "server.5=127.0.0.1:" + (port5 + 1000) + ":" + (leport5 + 1000) + ";" + clientport5 + "\n";
 
         ByteArrayInputStream is = new ByteArrayInputStream(config.getBytes());
         this.qp = new Properties();
@@ -130,54 +147,64 @@ public class HierarchicalQuorumTest exte
         HashMap<Long,QuorumServer> peers = new HashMap<Long,QuorumServer>();
         peers.put(Long.valueOf(1), new QuorumServer(1, 
                 new InetSocketAddress("127.0.0.1", port1 + 1000),
-                new InetSocketAddress("127.0.0.1", leport1 + 1000)));        
+                new InetSocketAddress("127.0.0.1", leport1 + 1000),
+                new InetSocketAddress("127.0.0.1", clientport1)));        
         peers.put(Long.valueOf(2), new QuorumServer(2, 
                 new InetSocketAddress("127.0.0.1", port2 + 1000),
-                new InetSocketAddress("127.0.0.1", leport2 + 1000)));
+                new InetSocketAddress("127.0.0.1", leport2 + 1000),
+                new InetSocketAddress("127.0.0.1", clientport2)));
         peers.put(Long.valueOf(3), new QuorumServer(3, 
                 new InetSocketAddress("127.0.0.1", port3 + 1000),
-                new InetSocketAddress("127.0.0.1", leport3 + 1000)));
+                new InetSocketAddress("127.0.0.1", leport3 + 1000),
+                new InetSocketAddress("127.0.0.1", clientport3)));
         peers.put(Long.valueOf(4), new QuorumServer(4,
                 new InetSocketAddress("127.0.0.1", port4 + 1000),
-                new InetSocketAddress("127.0.0.1", leport4 + 1000),
+                new InetSocketAddress("127.0.0.1", leport4),
+                new InetSocketAddress("127.0.0.1", clientport4),
                 withObservers ? QuorumPeer.LearnerType.OBSERVER
                         : QuorumPeer.LearnerType.PARTICIPANT));
         peers.put(Long.valueOf(5), new QuorumServer(5,
                 new InetSocketAddress("127.0.0.1", port5 + 1000),
                 new InetSocketAddress("127.0.0.1", leport5 + 1000),
+                new InetSocketAddress("127.0.0.1", clientport5),
                 withObservers ? QuorumPeer.LearnerType.OBSERVER
                         : QuorumPeer.LearnerType.PARTICIPANT));
 
-        LOG.info("creating QuorumPeer 1 port " + port1);
+        LOG.info("creating QuorumPeer 1 port " + clientport1);
+        
+        if (withObservers) {
+               qp.setProperty("server.4", "127.0.0.1:" + (port4 + 1000) + ":" + (leport4 + 1000) + ":observer" + ";" + clientport4);  
+               qp.setProperty("server.5", "127.0.0.1:" + (port5 + 1000) + ":" + (leport5 + 1000) +  ":observer" + ";" + clientport5);
+        }
         QuorumHierarchical hq1 = new QuorumHierarchical(qp); 
-        s1 = new QuorumPeer(peers, s1dir, s1dir, port1, 3, 1, tickTime, initLimit, syncLimit, hq1);
-        Assert.assertEquals(port1, s1.getClientPort());
+        s1 = new QuorumPeer(peers, s1dir, s1dir, clientport1, 3, 1, tickTime, initLimit, syncLimit, hq1);
+        Assert.assertEquals(clientport1, s1.getClientPort());
         
-        LOG.info("creating QuorumPeer 2 port " + port2);
+        LOG.info("creating QuorumPeer 2 port " + clientport2);
         QuorumHierarchical hq2 = new QuorumHierarchical(qp); 
-        s2 = new QuorumPeer(peers, s2dir, s2dir, port2, 3, 2, tickTime, initLimit, syncLimit, hq2);
-        Assert.assertEquals(port2, s2.getClientPort());
+        s2 = new QuorumPeer(peers, s2dir, s2dir, clientport2, 3, 2, tickTime, initLimit, syncLimit, hq2);
+        Assert.assertEquals(clientport2, s2.getClientPort());
         
-        LOG.info("creating QuorumPeer 3 port " + port3);
+        LOG.info("creating QuorumPeer 3 port " + clientport3);
         QuorumHierarchical hq3 = new QuorumHierarchical(qp); 
-        s3 = new QuorumPeer(peers, s3dir, s3dir, port3, 3, 3, tickTime, initLimit, syncLimit, hq3);
-        Assert.assertEquals(port3, s3.getClientPort());
+        s3 = new QuorumPeer(peers, s3dir, s3dir, clientport3, 3, 3, tickTime, initLimit, syncLimit, hq3);
+        Assert.assertEquals(clientport3, s3.getClientPort());
         
-        LOG.info("creating QuorumPeer 4 port " + port4);
+        LOG.info("creating QuorumPeer 4 port " + clientport4);
         QuorumHierarchical hq4 = new QuorumHierarchical(qp); 
-        s4 = new QuorumPeer(peers, s4dir, s4dir, port4, 3, 4, tickTime, initLimit, syncLimit, hq4);
+        s4 = new QuorumPeer(peers, s4dir, s4dir, clientport4, 3, 4, tickTime, initLimit, syncLimit, hq4);
         if (withObservers) {
             s4.setLearnerType(QuorumPeer.LearnerType.OBSERVER);
         }
-        Assert.assertEquals(port4, s4.getClientPort());
+        Assert.assertEquals(clientport4, s4.getClientPort());
                        
-        LOG.info("creating QuorumPeer 5 port " + port5);
+        LOG.info("creating QuorumPeer 5 port " + clientport5);
         QuorumHierarchical hq5 = new QuorumHierarchical(qp); 
-        s5 = new QuorumPeer(peers, s5dir, s5dir, port5, 3, 5, tickTime, initLimit, syncLimit, hq5);
+        s5 = new QuorumPeer(peers, s5dir, s5dir, clientport5, 3, 5, tickTime, initLimit, syncLimit, hq5);
         if (withObservers) {
             s5.setLearnerType(QuorumPeer.LearnerType.OBSERVER);
         }
-        Assert.assertEquals(port5, s5.getClientPort());
+        Assert.assertEquals(clientport5, s5.getClientPort());
         
         // Observers are currently only compatible with LeaderElection
         if (withObservers) {

Modified: zookeeper/trunk/src/java/test/org/apache/zookeeper/test/LENonTerminateTest.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/test/org/apache/zookeeper/test/LENonTerminateTest.java?rev=1328991&r1=1328990&r2=1328991&view=diff
==============================================================================
--- zookeeper/trunk/src/java/test/org/apache/zookeeper/test/LENonTerminateTest.java (original)
+++ zookeeper/trunk/src/java/test/org/apache/zookeeper/test/LENonTerminateTest.java Sun Apr 22 23:20:13 2012
@@ -218,7 +218,7 @@ public class LENonTerminateTest extends 
             super(quorumPeers, snapDir, logDir, electionAlg,
                     myid,tickTime, initLimit,syncLimit,
                     ServerCnxnFactory.createFactory(clientPort, -1),
-                    new QuorumMaj(countParticipants(quorumPeers)));
+                    new QuorumMaj(quorumPeers), null);
         }
 
         protected  Election createElectionAlgorithm(int electionAlgorithm){

Modified: zookeeper/trunk/src/java/test/org/apache/zookeeper/test/ObserverTest.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/test/org/apache/zookeeper/test/ObserverTest.java?rev=1328991&r1=1328990&r2=1328991&view=diff
==============================================================================
--- zookeeper/trunk/src/java/test/org/apache/zookeeper/test/ObserverTest.java (original)
+++ zookeeper/trunk/src/java/test/org/apache/zookeeper/test/ObserverTest.java Sun Apr 22 23:20:13 2012
@@ -71,18 +71,17 @@ public class ObserverTest extends Quorum
         final int CLIENT_PORT_OBS = PortAssignment.unique();
 
         
-        String quorumCfgSection =
-            "electionAlg=3\n" + 
+        String quorumCfgSection = 
             "server.1=127.0.0.1:" + (PORT_QP1)
-            + ":" + (PORT_QP_LE1)
+            + ":" + (PORT_QP_LE1) + ";" +  CLIENT_PORT_QP1 
             + "\nserver.2=127.0.0.1:" + (PORT_QP2)
-            + ":" + (PORT_QP_LE2)
+            + ":" + (PORT_QP_LE2) + ";" + CLIENT_PORT_QP2  
             + "\nserver.3=127.0.0.1:" 
-            + (PORT_OBS)+ ":" + (PORT_OBS_LE) + ":observer";
-        String obsCfgSection =  quorumCfgSection + "\npeerType=observer";
+            + (PORT_OBS)+ ":" + (PORT_OBS_LE) + ":observer" + ";" + CLIENT_PORT_OBS;
+        
         MainThread q1 = new MainThread(1, CLIENT_PORT_QP1, quorumCfgSection);
         MainThread q2 = new MainThread(2, CLIENT_PORT_QP2, quorumCfgSection);
-        MainThread q3 = new MainThread(3, CLIENT_PORT_OBS, obsCfgSection);
+        MainThread q3 = new MainThread(3, CLIENT_PORT_OBS, quorumCfgSection);
         q1.start();
         q2.start();
         q3.start();
@@ -201,7 +200,7 @@ public class ObserverTest extends Quorum
         
         String quorumCfgSection =
             "server.1=127.0.0.1:" + (PortAssignment.unique())
-            + ":" + (PortAssignment.unique()) + ":observer\npeerType=observer\n";
+            + ":" + (PortAssignment.unique()) + ":observer;" + CLIENT_PORT_QP1 + "\n";
                     
         MainThread q1 = new MainThread(1, CLIENT_PORT_QP1, quorumCfgSection);
         q1.start();

Modified: zookeeper/trunk/src/java/test/org/apache/zookeeper/test/QuorumBase.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/test/org/apache/zookeeper/test/QuorumBase.java?rev=1328991&r1=1328990&r2=1328991&view=diff
==============================================================================
--- zookeeper/trunk/src/java/test/org/apache/zookeeper/test/QuorumBase.java (original)
+++ zookeeper/trunk/src/java/test/org/apache/zookeeper/test/QuorumBase.java Sun Apr 22 23:20:13 2012
@@ -56,7 +56,13 @@ public class QuorumBase extends ClientBa
     protected int portLE3;
     protected int portLE4;
     protected int portLE5;
-
+    
+    protected int portClient1;
+    protected int portClient2;
+    protected int portClient3;
+    protected int portClient4;
+    protected int portClient5;
+    
     @Test
     // This just avoids complaints by junit
     public void testNull() {
@@ -87,11 +93,17 @@ public class QuorumBase extends ClientBa
         portLE4 = PortAssignment.unique();
         portLE5 = 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;
+        portClient1 = PortAssignment.unique();
+        portClient2 = PortAssignment.unique();
+        portClient3 = PortAssignment.unique();
+        portClient4 = PortAssignment.unique();
+        portClient5 = PortAssignment.unique();
+        
+        hostPort = "127.0.0.1:" + portClient1
+            + ",127.0.0.1:" + portClient2
+            + ",127.0.0.1:" + portClient3
+            + ",127.0.0.1:" + portClient4
+            + ",127.0.0.1:" + portClient5;
         LOG.info("Ports are: " + hostPort);
 
         s1dir = ClientBase.createTmpDir();
@@ -126,22 +138,27 @@ public class QuorumBase extends ClientBa
         peers.put(Long.valueOf(1), new QuorumServer(1, 
                 new InetSocketAddress("127.0.0.1", port1 + 1000),
                 new InetSocketAddress("127.0.0.1", portLE1 + 1000),
+                new InetSocketAddress("127.0.0.1", portClient1),
                 LearnerType.PARTICIPANT));
         peers.put(Long.valueOf(2), new QuorumServer(2, 
                 new InetSocketAddress("127.0.0.1", port2 + 1000),
                 new InetSocketAddress("127.0.0.1", portLE2 + 1000),
+                new InetSocketAddress("127.0.0.1", portClient2),
                 LearnerType.PARTICIPANT));
         peers.put(Long.valueOf(3), new QuorumServer(3, 
                 new InetSocketAddress("127.0.0.1", port3 + 1000),
                 new InetSocketAddress("127.0.0.1", portLE3 + 1000),
+                new InetSocketAddress("127.0.0.1", portClient3),
                 LearnerType.PARTICIPANT));
         peers.put(Long.valueOf(4), new QuorumServer(4, 
                 new InetSocketAddress("127.0.0.1", port4 + 1000),
                 new InetSocketAddress("127.0.0.1", portLE4 + 1000),
+                new InetSocketAddress("127.0.0.1", portClient4),
                 LearnerType.PARTICIPANT));
         peers.put(Long.valueOf(5), new QuorumServer(5, 
                 new InetSocketAddress("127.0.0.1", port5 + 1000),
                 new InetSocketAddress("127.0.0.1", portLE5 + 1000),
+                new InetSocketAddress("127.0.0.1", portClient5),
                 LearnerType.PARTICIPANT));
         
         if (withObservers) {
@@ -149,21 +166,21 @@ public class QuorumBase extends ClientBa
             peers.get(Long.valueOf(5)).type = LearnerType.OBSERVER;
         }
 
-        LOG.info("creating QuorumPeer 1 port " + port1);
-        s1 = new QuorumPeer(peers, s1dir, s1dir, port1, 3, 1, tickTime, initLimit, syncLimit);
-        Assert.assertEquals(port1, s1.getClientPort());
-        LOG.info("creating QuorumPeer 2 port " + port2);
-        s2 = new QuorumPeer(peers, s2dir, s2dir, port2, 3, 2, tickTime, initLimit, syncLimit);
-        Assert.assertEquals(port2, s2.getClientPort());
-        LOG.info("creating QuorumPeer 3 port " + port3);
-        s3 = new QuorumPeer(peers, s3dir, s3dir, port3, 3, 3, tickTime, initLimit, syncLimit);
-        Assert.assertEquals(port3, s3.getClientPort());
-        LOG.info("creating QuorumPeer 4 port " + port4);
-        s4 = new QuorumPeer(peers, s4dir, s4dir, port4, 3, 4, tickTime, initLimit, syncLimit);
-        Assert.assertEquals(port4, s4.getClientPort());
-        LOG.info("creating QuorumPeer 5 port " + port5);
-        s5 = new QuorumPeer(peers, s5dir, s5dir, port5, 3, 5, tickTime, initLimit, syncLimit);
-        Assert.assertEquals(port5, s5.getClientPort());
+        LOG.info("creating QuorumPeer 1 port " + portClient1);
+        s1 = new QuorumPeer(peers, s1dir, s1dir, portClient1, 3, 1, tickTime, initLimit, syncLimit);
+        Assert.assertEquals(portClient1, s1.getClientPort());
+        LOG.info("creating QuorumPeer 2 port " + portClient2);
+        s2 = new QuorumPeer(peers, s2dir, s2dir, portClient2, 3, 2, tickTime, initLimit, syncLimit);
+        Assert.assertEquals(portClient2, s2.getClientPort());
+        LOG.info("creating QuorumPeer 3 port " + portClient3);
+        s3 = new QuorumPeer(peers, s3dir, s3dir, portClient3, 3, 3, tickTime, initLimit, syncLimit);
+        Assert.assertEquals(portClient3, s3.getClientPort());
+        LOG.info("creating QuorumPeer 4 port " + portClient4);
+        s4 = new QuorumPeer(peers, s4dir, s4dir, portClient4, 3, 4, tickTime, initLimit, syncLimit);
+        Assert.assertEquals(portClient4, s4.getClientPort());
+        LOG.info("creating QuorumPeer 5 port " + portClient5);
+        s5 = new QuorumPeer(peers, s5dir, s5dir, portClient5, 3, 5, tickTime, initLimit, syncLimit);
+        Assert.assertEquals(portClient5, s5.getClientPort());
         
         if (withObservers) {
             s4.setLearnerType(LearnerType.OBSERVER);
@@ -240,50 +257,55 @@ public class QuorumBase extends ClientBa
             peers.put(Long.valueOf(1), new QuorumServer(1, 
                 new InetSocketAddress("127.0.0.1", port1 + 1000),
                 new InetSocketAddress("127.0.0.1", portLE1 + 1000),
+                new InetSocketAddress("127.0.0.1", portClient1),
                 LearnerType.PARTICIPANT));
             peers.put(Long.valueOf(2), new QuorumServer(2, 
                 new InetSocketAddress("127.0.0.1", port2 + 1000),
                 new InetSocketAddress("127.0.0.1", portLE2 + 1000),
+                new InetSocketAddress("127.0.0.1", portClient2),
                 LearnerType.PARTICIPANT));
             peers.put(Long.valueOf(3), new QuorumServer(3, 
                 new InetSocketAddress("127.0.0.1", port3 + 1000),
                 new InetSocketAddress("127.0.0.1", portLE3 + 1000),
+                new InetSocketAddress("127.0.0.1", portClient3),
                 LearnerType.PARTICIPANT));
             peers.put(Long.valueOf(4), new QuorumServer(4, 
                 new InetSocketAddress("127.0.0.1", port4 + 1000),
                 new InetSocketAddress("127.0.0.1", portLE4 + 1000),
+                new InetSocketAddress("127.0.0.1", portClient4),
                 LearnerType.PARTICIPANT));
             peers.put(Long.valueOf(5), new QuorumServer(5, 
                 new InetSocketAddress("127.0.0.1", port5 + 1000),
                 new InetSocketAddress("127.0.0.1", portLE5 + 1000),
+                new InetSocketAddress("127.0.0.1", portClient5),
                 LearnerType.PARTICIPANT));
         }
         
         switch(i){
         case 1:
-            LOG.info("creating QuorumPeer 1 port " + port1);
-            s1 = new QuorumPeer(peers, s1dir, s1dir, port1, 3, 1, tickTime, initLimit, syncLimit);
-            Assert.assertEquals(port1, s1.getClientPort());
+            LOG.info("creating QuorumPeer 1 port " + portClient1);
+            s1 = new QuorumPeer(peers, s1dir, s1dir, portClient1, 3, 1, tickTime, initLimit, syncLimit);
+            Assert.assertEquals(portClient1, s1.getClientPort());
             break;
         case 2:
-            LOG.info("creating QuorumPeer 2 port " + port2);
-            s2 = new QuorumPeer(peers, s2dir, s2dir, port2, 3, 2, tickTime, initLimit, syncLimit);
-            Assert.assertEquals(port2, s2.getClientPort());
+            LOG.info("creating QuorumPeer 2 port " + portClient2);
+            s2 = new QuorumPeer(peers, s2dir, s2dir, portClient2, 3, 2, tickTime, initLimit, syncLimit);
+            Assert.assertEquals(portClient2, s2.getClientPort());
             break;
         case 3:  
-            LOG.info("creating QuorumPeer 3 port " + port3);
-            s3 = new QuorumPeer(peers, s3dir, s3dir, port3, 3, 3, tickTime, initLimit, syncLimit);
-            Assert.assertEquals(port3, s3.getClientPort());
+            LOG.info("creating QuorumPeer 3 port " + portClient3);
+            s3 = new QuorumPeer(peers, s3dir, s3dir, portClient3, 3, 3, tickTime, initLimit, syncLimit);
+            Assert.assertEquals(portClient3, s3.getClientPort());
             break;
         case 4:
-            LOG.info("creating QuorumPeer 4 port " + port4);
-            s4 = new QuorumPeer(peers, s4dir, s4dir, port4, 3, 4, tickTime, initLimit, syncLimit);
-            Assert.assertEquals(port4, s4.getClientPort());
+            LOG.info("creating QuorumPeer 4 port " + portClient4);
+            s4 = new QuorumPeer(peers, s4dir, s4dir, portClient4, 3, 4, tickTime, initLimit, syncLimit);
+            Assert.assertEquals(portClient4, s4.getClientPort());
             break;
         case 5:
-            LOG.info("creating QuorumPeer 5 port " + port5);
-            s5 = new QuorumPeer(peers, s5dir, s5dir, port5, 3, 5, tickTime, initLimit, syncLimit);
-            Assert.assertEquals(port5, s5.getClientPort());
+            LOG.info("creating QuorumPeer 5 port " + portClient5);
+            s5 = new QuorumPeer(peers, s5dir, s5dir, portClient5, 3, 5, tickTime, initLimit, syncLimit);
+            Assert.assertEquals(portClient5, s5.getClientPort());
         }
     }
     

Modified: zookeeper/trunk/src/java/test/org/apache/zookeeper/test/QuorumUtil.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/test/org/apache/zookeeper/test/QuorumUtil.java?rev=1328991&r1=1328990&r2=1328991&view=diff
==============================================================================
--- zookeeper/trunk/src/java/test/org/apache/zookeeper/test/QuorumUtil.java (original)
+++ zookeeper/trunk/src/java/test/org/apache/zookeeper/test/QuorumUtil.java Sun Apr 22 23:20:13 2012
@@ -102,9 +102,11 @@ public class QuorumUtil {
                 ps.clientPort = PortAssignment.unique();
                 peers.put(i, ps);
 
-                peersView.put(Long.valueOf(i), new QuorumServer(i, new InetSocketAddress(
-                        "127.0.0.1", ps.clientPort + 1000), new InetSocketAddress("127.0.0.1",
-                        PortAssignment.unique() + 1000), LearnerType.PARTICIPANT));
+                peersView.put(Long.valueOf(i), new QuorumServer(i, 
+                               new InetSocketAddress("127.0.0.1", PortAssignment.unique() + 1000), 
+                               new InetSocketAddress("127.0.0.1", PortAssignment.unique() + 1000), 
+                               new InetSocketAddress("127.0.0.1", ps.clientPort), 
+                               LearnerType.PARTICIPANT));
                 hostPort += "127.0.0.1:" + ps.clientPort + ((i == ALL) ? "" : ",");
             }
             for (int i = 1; i <= ALL; ++i) {

Modified: zookeeper/trunk/src/java/test/org/apache/zookeeper/test/StandaloneTest.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/test/org/apache/zookeeper/test/StandaloneTest.java?rev=1328991&r1=1328990&r2=1328991&view=diff
==============================================================================
--- zookeeper/trunk/src/java/test/org/apache/zookeeper/test/StandaloneTest.java (original)
+++ zookeeper/trunk/src/java/test/org/apache/zookeeper/test/StandaloneTest.java Sun Apr 22 23:20:13 2012
@@ -49,7 +49,7 @@ public class StandaloneTest extends Quor
         
         String quorumCfgSection =
             "server.1=127.0.0.1:" + (PortAssignment.unique())
-            + ":" + (PortAssignment.unique()) + "\n";
+            + ":" + (PortAssignment.unique()) + ";" + CLIENT_PORT_QP1 + "\n";
                     
         MainThread q1 = new MainThread(1, CLIENT_PORT_QP1, quorumCfgSection);
         q1.start();