ZOOKEEPER-4962: Export bound client port for ZooKeeperServerEmbedded

Reviewers: anmolnar
Author: kezhuw
Closes #2302 from kezhuw/ZOOKEEPER-4962-ZooKeeperServerEmbedded-getClientPort
diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/ZooKeeperServerMain.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/ZooKeeperServerMain.java
index 24e7f5b..b63280f 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/ZooKeeperServerMain.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/ZooKeeperServerMain.java
@@ -242,7 +242,6 @@ ServerCnxnFactory getSecureCnxnFactory() {
         return secureCnxnFactory;
     }
 
-    // VisibleForTesting
     public int getClientPort() {
         if (cnxnFactory != null) {
             return cnxnFactory.getLocalPort();
@@ -250,7 +249,6 @@ public int getClientPort() {
         return 0;
     }
 
-    // VisibleForTesting
     public int getSecureClientPort() {
         if (secureCnxnFactory != null) {
             return secureCnxnFactory.getLocalPort();
diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/embedded/ZooKeeperServerEmbedded.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/embedded/ZooKeeperServerEmbedded.java
index 6fcd703..f73a1ee 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/embedded/ZooKeeperServerEmbedded.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/embedded/ZooKeeperServerEmbedded.java
@@ -117,6 +117,16 @@ static ZookKeeperServerEmbeddedBuilder builder() {
     void start(long startupTimeout) throws Exception;
 
     /**
+     * Get client port for no secure connection.
+     */
+    int getClientPort();
+
+    /**
+     * Get client port for secure connection.
+     */
+    int getSecureClientPort();
+
+    /**
      * Get a connection string useful for the client.
      * @return the connection string
      * @throws Exception in case the connection string is not available
diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/embedded/ZooKeeperServerEmbeddedImpl.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/embedded/ZooKeeperServerEmbeddedImpl.java
index fb9e5eb..14e7cbb 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/embedded/ZooKeeperServerEmbeddedImpl.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/embedded/ZooKeeperServerEmbeddedImpl.java
@@ -107,8 +107,8 @@ protected QuorumPeer getQuorumPeer() throws SaslException {
                         @Override
                         public void start() {
                             super.start();
-                            boundClientPort = getClientPort();
-                            boundSecureClientPort = getSecureClientPort();
+                            boundClientPort = super.getClientPort();
+                            boundSecureClientPort = super.getSecureClientPort();
                             LOG.info("ZK Server {} started", this);
                             started.complete(null);
                         }
@@ -148,8 +148,8 @@ public void run() {
                 @Override
                 public void serverStarted() {
                     LOG.info("ZK Server started");
-                    boundClientPort = getClientPort();
-                    boundSecureClientPort = getSecureClientPort();
+                    boundClientPort = super.getClientPort();
+                    boundSecureClientPort = super.getSecureClientPort();
                     started.complete(null);
                 }
             };
@@ -191,6 +191,16 @@ public void run() {
     }
 
     @Override
+    public int getClientPort() {
+        return boundClientPort;
+    }
+
+    @Override
+    public int getSecureClientPort() {
+        return boundSecureClientPort;
+    }
+
+    @Override
     public String getConnectionString() {
         return prettifyConnectionString(config.getClientPortAddress(), boundClientPort);
     }