hadoop git commit: HDFS-9444. Add utility to find set of available ephemeral ports to ServerSocketUtil. Contributed by Masatake Iwasaki

2016-10-18 Thread zhz
Repository: hadoop
Updated Branches:
  refs/heads/branch-2.7 4aea76067 -> 1e5c40b5b


HDFS-9444. Add utility to find set of available ephemeral ports to 
ServerSocketUtil. Contributed by Masatake Iwasaki

(cherry picked from commit e9a34ae29c7390f3ffcbeee02dc5faa26fca482a)
(cherry picked from commit 5f754e8638d5a35ab12765edec6561228312f71c)


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/1e5c40b5
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/1e5c40b5
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/1e5c40b5

Branch: refs/heads/branch-2.7
Commit: 1e5c40b5b4b013bd63e3c0e060cb4c31e5e8ba82
Parents: 4aea760
Author: Brahma Reddy Battula 
Authored: Wed Sep 28 10:50:50 2016 +0530
Committer: Zhe Zhang 
Committed: Tue Oct 18 10:50:19 2016 -0700

--
 .../org/apache/hadoop/net/ServerSocketUtil.java | 22 +++
 hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt |  3 ++
 .../server/namenode/ha/TestEditLogTailer.java   | 39 +++-
 3 files changed, 54 insertions(+), 10 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/1e5c40b5/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
--
diff --git 
a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
 
b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
index 0ce835f..b9e2c62 100644
--- 
a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
+++ 
b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
@@ -60,4 +60,26 @@ public class ServerSocketUtil {
 }
   }
 
+  /**
+   * Find the specified number of unique ports available.
+   * The ports are all closed afterwards,
+   * so other network services started may grab those same ports.
+   *
+   * @param numPorts number of required port nubmers
+   * @return array of available port numbers
+   * @throws IOException
+   */
+  public static int[] getPorts(int numPorts) throws IOException {
+ServerSocket[] sockets = new ServerSocket[numPorts];
+int[] ports = new int[numPorts];
+for (int i = 0; i < numPorts; i++) {
+  ServerSocket sock = new ServerSocket(0);
+  sockets[i] = sock;
+  ports[i] = sock.getLocalPort();
+}
+for (ServerSocket sock : sockets) {
+  sock.close();
+}
+return ports;
+  }
 }

http://git-wip-us.apache.org/repos/asf/hadoop/blob/1e5c40b5/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
--
diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt 
b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
index c9333a1..b19863b 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
@@ -169,6 +169,9 @@ Release 2.7.4 - UNRELEASED
 HDFS-10301. Remove FBR tracking state to fix false zombie storage
 detection for interleaving block reports. (Vinitha Gankidi via shv)
 
+HDFS-9444. Add utility to find set of available ephemeral ports to
+ServerSocketUtil. (Masatake Iwasaki via Brahma Reddy Battula)
+
 Release 2.7.3 - 2016-08-25
 
   INCOMPATIBLE CHANGES

http://git-wip-us.apache.org/repos/asf/hadoop/blob/1e5c40b5/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestEditLogTailer.java
--
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestEditLogTailer.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestEditLogTailer.java
index 8c61c92..ea7b00a 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestEditLogTailer.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestEditLogTailer.java
@@ -19,8 +19,11 @@ package org.apache.hadoop.hdfs.server.namenode.ha;
 
 import static org.junit.Assert.assertTrue;
 
+import static org.junit.Assert.fail;
+
 import java.io.File;
 import java.io.IOException;
+import java.net.BindException;
 import java.net.URI;
 
 import org.apache.commons.logging.impl.Log4JLogger;
@@ -37,6 +40,7 @@ import org.apache.hadoop.hdfs.server.namenode.FSImage;
 import org.apache.hadoop.hdfs.server.namenode.NNStorage;
 import org.apache.hadoop.hdfs.server.namenode.NameNode;
 import org.apache.hadoop.hdfs.server.namenode.NameNodeAdapter;
+import org.apache.hadoop.net.ServerSocketUtil;
 import org.apache.hadoop.test.GenericTestUtils;
 import org.apache.log4j.Level;
 import 

[12/50] [abbrv] hadoop git commit: HDFS-9444. Add utility to find set of available ephemeral ports to ServerSocketUtil. Contributed by Masatake Iwasaki

2016-09-29 Thread aengineer
HDFS-9444. Add utility to find set of available ephemeral ports to 
ServerSocketUtil. Contributed by Masatake Iwasaki


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/edf0d0f8
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/edf0d0f8
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/edf0d0f8

Branch: refs/heads/HDFS-7240
Commit: edf0d0f8b2115d4edb5d4932b5ecb15430d94c40
Parents: 059058f
Author: Brahma Reddy Battula 
Authored: Tue Sep 27 07:04:37 2016 +0530
Committer: Brahma Reddy Battula 
Committed: Tue Sep 27 07:04:37 2016 +0530

--
 .../org/apache/hadoop/net/ServerSocketUtil.java | 23 +++
 .../server/namenode/TestNameNodeMXBean.java | 34 +++-
 .../server/namenode/ha/TestEditLogTailer.java   | 42 +---
 3 files changed, 75 insertions(+), 24 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/edf0d0f8/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
--
diff --git 
a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
 
b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
index 023c1ed..a294e74 100644
--- 
a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
+++ 
b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
@@ -102,4 +102,27 @@ public class ServerSocketUtil {
   }
 }
   }
+
+  /**
+   * Find the specified number of unique ports available.
+   * The ports are all closed afterwards,
+   * so other network services started may grab those same ports.
+   *
+   * @param numPorts number of required port nubmers
+   * @return array of available port numbers
+   * @throws IOException
+   */
+  public static int[] getPorts(int numPorts) throws IOException {
+ServerSocket[] sockets = new ServerSocket[numPorts];
+int[] ports = new int[numPorts];
+for (int i = 0; i < numPorts; i++) {
+  ServerSocket sock = new ServerSocket(0);
+  sockets[i] = sock;
+  ports[i] = sock.getLocalPort();
+}
+for (ServerSocket sock : sockets) {
+  sock.close();
+}
+return ports;
+  }
 }

http://git-wip-us.apache.org/repos/asf/hadoop/blob/edf0d0f8/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java
--
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java
index dc8bea7..ac97a36 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java
@@ -47,6 +47,7 @@ import javax.management.MBeanServer;
 import javax.management.ObjectName;
 import java.io.File;
 import java.lang.management.ManagementFactory;
+import java.net.BindException;
 import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -59,6 +60,7 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 /**
  * Class for testing {@link NameNodeMXBean} implementation
@@ -431,17 +433,29 @@ public class TestNameNodeMXBean {
   public void testNNDirectorySize() throws Exception{
 Configuration conf = new Configuration();
 conf.setInt(DFSConfigKeys.DFS_HA_TAILEDITS_PERIOD_KEY, 1);
-// Have to specify IPC ports so the NNs can talk to each other.
-MiniDFSNNTopology topology = new MiniDFSNNTopology()
-.addNameservice(new MiniDFSNNTopology.NSConf("ns1")
-.addNN(new MiniDFSNNTopology.NNConf("nn1")
-.setIpcPort(ServerSocketUtil.getPort(0, 100)))
-.addNN(new MiniDFSNNTopology.NNConf("nn2")
-.setIpcPort(ServerSocketUtil.getPort(0, 100;
+MiniDFSCluster cluster = null;
+for (int i = 0; i < 5; i++) {
+  try{
+// Have to specify IPC ports so the NNs can talk to each other.
+int[] ports = ServerSocketUtil.getPorts(2);
+MiniDFSNNTopology topology = new MiniDFSNNTopology()
+.addNameservice(new MiniDFSNNTopology.NSConf("ns1")
+.addNN(new 
MiniDFSNNTopology.NNConf("nn1").setIpcPort(ports[0]))
+.addNN(
+new 

[1/2] hadoop git commit: HDFS-9444. Add utility to find set of available ephemeral ports to ServerSocketUtil. Contributed by Masatake Iwasaki

2016-09-27 Thread brahma
Repository: hadoop
Updated Branches:
  refs/heads/branch-2 54ca505c4 -> e9a34ae29
  refs/heads/branch-2.8 6da9a3c60 -> 5f754e863


HDFS-9444. Add utility to find set of available ephemeral ports to 
ServerSocketUtil. Contributed by Masatake Iwasaki


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/e9a34ae2
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/e9a34ae2
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/e9a34ae2

Branch: refs/heads/branch-2
Commit: e9a34ae29c7390f3ffcbeee02dc5faa26fca482a
Parents: 54ca505
Author: Brahma Reddy Battula 
Authored: Wed Sep 28 10:50:50 2016 +0530
Committer: Brahma Reddy Battula 
Committed: Wed Sep 28 10:50:50 2016 +0530

--
 .../org/apache/hadoop/net/ServerSocketUtil.java | 23 
 .../server/namenode/TestNameNodeMXBean.java | 34 -
 .../server/namenode/ha/TestEditLogTailer.java   | 39 ++--
 3 files changed, 74 insertions(+), 22 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/e9a34ae2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
--
diff --git 
a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
 
b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
index 023c1ed..a294e74 100644
--- 
a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
+++ 
b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
@@ -102,4 +102,27 @@ public class ServerSocketUtil {
   }
 }
   }
+
+  /**
+   * Find the specified number of unique ports available.
+   * The ports are all closed afterwards,
+   * so other network services started may grab those same ports.
+   *
+   * @param numPorts number of required port nubmers
+   * @return array of available port numbers
+   * @throws IOException
+   */
+  public static int[] getPorts(int numPorts) throws IOException {
+ServerSocket[] sockets = new ServerSocket[numPorts];
+int[] ports = new int[numPorts];
+for (int i = 0; i < numPorts; i++) {
+  ServerSocket sock = new ServerSocket(0);
+  sockets[i] = sock;
+  ports[i] = sock.getLocalPort();
+}
+for (ServerSocket sock : sockets) {
+  sock.close();
+}
+return ports;
+  }
 }

http://git-wip-us.apache.org/repos/asf/hadoop/blob/e9a34ae2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java
--
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java
index c9b0aa1..25250c5 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java
@@ -47,6 +47,7 @@ import javax.management.MBeanServer;
 import javax.management.ObjectName;
 import java.io.File;
 import java.lang.management.ManagementFactory;
+import java.net.BindException;
 import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -59,6 +60,7 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 /**
  * Class for testing {@link NameNodeMXBean} implementation
@@ -431,17 +433,29 @@ public class TestNameNodeMXBean {
   public void testNNDirectorySize() throws Exception{
 Configuration conf = new Configuration();
 conf.setInt(DFSConfigKeys.DFS_HA_TAILEDITS_PERIOD_KEY, 1);
-// Have to specify IPC ports so the NNs can talk to each other.
-MiniDFSNNTopology topology = new MiniDFSNNTopology()
-.addNameservice(new MiniDFSNNTopology.NSConf("ns1")
-.addNN(new MiniDFSNNTopology.NNConf("nn1")
-.setIpcPort(ServerSocketUtil.getPort(0, 100)))
-.addNN(new MiniDFSNNTopology.NNConf("nn2")
-.setIpcPort(ServerSocketUtil.getPort(0, 100;
+MiniDFSCluster cluster = null;
+for (int i = 0; i < 5; i++) {
+  try{
+// Have to specify IPC ports so the NNs can talk to each other.
+int[] ports = ServerSocketUtil.getPorts(2);
+MiniDFSNNTopology topology = new MiniDFSNNTopology()
+.addNameservice(new MiniDFSNNTopology.NSConf("ns1")
+

[2/2] hadoop git commit: HDFS-9444. Add utility to find set of available ephemeral ports to ServerSocketUtil. Contributed by Masatake Iwasaki

2016-09-27 Thread brahma
HDFS-9444. Add utility to find set of available ephemeral ports to 
ServerSocketUtil. Contributed by Masatake Iwasaki

(cherry picked from commit e9a34ae29c7390f3ffcbeee02dc5faa26fca482a)


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/5f754e86
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/5f754e86
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/5f754e86

Branch: refs/heads/branch-2.8
Commit: 5f754e8638d5a35ab12765edec6561228312f71c
Parents: 6da9a3c
Author: Brahma Reddy Battula 
Authored: Wed Sep 28 10:50:50 2016 +0530
Committer: Brahma Reddy Battula 
Committed: Wed Sep 28 11:16:40 2016 +0530

--
 .../org/apache/hadoop/net/ServerSocketUtil.java | 23 +++
 .../server/namenode/TestNameNodeMXBean.java | 34 -
 .../server/namenode/ha/TestEditLogTailer.java   | 40 ++--
 3 files changed, 75 insertions(+), 22 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/5f754e86/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
--
diff --git 
a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
 
b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
index 023c1ed..a294e74 100644
--- 
a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
+++ 
b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
@@ -102,4 +102,27 @@ public class ServerSocketUtil {
   }
 }
   }
+
+  /**
+   * Find the specified number of unique ports available.
+   * The ports are all closed afterwards,
+   * so other network services started may grab those same ports.
+   *
+   * @param numPorts number of required port nubmers
+   * @return array of available port numbers
+   * @throws IOException
+   */
+  public static int[] getPorts(int numPorts) throws IOException {
+ServerSocket[] sockets = new ServerSocket[numPorts];
+int[] ports = new int[numPorts];
+for (int i = 0; i < numPorts; i++) {
+  ServerSocket sock = new ServerSocket(0);
+  sockets[i] = sock;
+  ports[i] = sock.getLocalPort();
+}
+for (ServerSocket sock : sockets) {
+  sock.close();
+}
+return ports;
+  }
 }

http://git-wip-us.apache.org/repos/asf/hadoop/blob/5f754e86/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java
--
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java
index dfaf929..e622576 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java
@@ -46,6 +46,7 @@ import javax.management.ObjectName;
 import java.io.File;
 import java.io.IOException;
 import java.lang.management.ManagementFactory;
+import java.net.BindException;
 import java.net.URI;
 import java.util.Collection;
 import java.util.List;
@@ -56,6 +57,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 /**
  * Class for testing {@link NameNodeMXBean} implementation
@@ -422,17 +424,29 @@ public class TestNameNodeMXBean {
   public void testNNDirectorySize() throws Exception{
 Configuration conf = new Configuration();
 conf.setInt(DFSConfigKeys.DFS_HA_TAILEDITS_PERIOD_KEY, 1);
-// Have to specify IPC ports so the NNs can talk to each other.
-MiniDFSNNTopology topology = new MiniDFSNNTopology()
-.addNameservice(new MiniDFSNNTopology.NSConf("ns1")
-.addNN(new MiniDFSNNTopology.NNConf("nn1")
-.setIpcPort(ServerSocketUtil.getPort(0, 100)))
-.addNN(new MiniDFSNNTopology.NNConf("nn2")
-.setIpcPort(ServerSocketUtil.getPort(0, 100;
+MiniDFSCluster cluster = null;
+for (int i = 0; i < 5; i++) {
+  try{
+// Have to specify IPC ports so the NNs can talk to each other.
+int[] ports = ServerSocketUtil.getPorts(2);
+MiniDFSNNTopology topology = new MiniDFSNNTopology()
+.addNameservice(new MiniDFSNNTopology.NSConf("ns1")
+.addNN(new 
MiniDFSNNTopology.NNConf("nn1").setIpcPort(ports[0]))
+  

hadoop git commit: HDFS-9444. Add utility to find set of available ephemeral ports to ServerSocketUtil. Contributed by Masatake Iwasaki

2016-09-26 Thread brahma
Repository: hadoop
Updated Branches:
  refs/heads/trunk 059058f96 -> edf0d0f8b


HDFS-9444. Add utility to find set of available ephemeral ports to 
ServerSocketUtil. Contributed by Masatake Iwasaki


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/edf0d0f8
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/edf0d0f8
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/edf0d0f8

Branch: refs/heads/trunk
Commit: edf0d0f8b2115d4edb5d4932b5ecb15430d94c40
Parents: 059058f
Author: Brahma Reddy Battula 
Authored: Tue Sep 27 07:04:37 2016 +0530
Committer: Brahma Reddy Battula 
Committed: Tue Sep 27 07:04:37 2016 +0530

--
 .../org/apache/hadoop/net/ServerSocketUtil.java | 23 +++
 .../server/namenode/TestNameNodeMXBean.java | 34 +++-
 .../server/namenode/ha/TestEditLogTailer.java   | 42 +---
 3 files changed, 75 insertions(+), 24 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/edf0d0f8/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
--
diff --git 
a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
 
b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
index 023c1ed..a294e74 100644
--- 
a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
+++ 
b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/ServerSocketUtil.java
@@ -102,4 +102,27 @@ public class ServerSocketUtil {
   }
 }
   }
+
+  /**
+   * Find the specified number of unique ports available.
+   * The ports are all closed afterwards,
+   * so other network services started may grab those same ports.
+   *
+   * @param numPorts number of required port nubmers
+   * @return array of available port numbers
+   * @throws IOException
+   */
+  public static int[] getPorts(int numPorts) throws IOException {
+ServerSocket[] sockets = new ServerSocket[numPorts];
+int[] ports = new int[numPorts];
+for (int i = 0; i < numPorts; i++) {
+  ServerSocket sock = new ServerSocket(0);
+  sockets[i] = sock;
+  ports[i] = sock.getLocalPort();
+}
+for (ServerSocket sock : sockets) {
+  sock.close();
+}
+return ports;
+  }
 }

http://git-wip-us.apache.org/repos/asf/hadoop/blob/edf0d0f8/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java
--
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java
index dc8bea7..ac97a36 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java
@@ -47,6 +47,7 @@ import javax.management.MBeanServer;
 import javax.management.ObjectName;
 import java.io.File;
 import java.lang.management.ManagementFactory;
+import java.net.BindException;
 import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -59,6 +60,7 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 /**
  * Class for testing {@link NameNodeMXBean} implementation
@@ -431,17 +433,29 @@ public class TestNameNodeMXBean {
   public void testNNDirectorySize() throws Exception{
 Configuration conf = new Configuration();
 conf.setInt(DFSConfigKeys.DFS_HA_TAILEDITS_PERIOD_KEY, 1);
-// Have to specify IPC ports so the NNs can talk to each other.
-MiniDFSNNTopology topology = new MiniDFSNNTopology()
-.addNameservice(new MiniDFSNNTopology.NSConf("ns1")
-.addNN(new MiniDFSNNTopology.NNConf("nn1")
-.setIpcPort(ServerSocketUtil.getPort(0, 100)))
-.addNN(new MiniDFSNNTopology.NNConf("nn2")
-.setIpcPort(ServerSocketUtil.getPort(0, 100;
+MiniDFSCluster cluster = null;
+for (int i = 0; i < 5; i++) {
+  try{
+// Have to specify IPC ports so the NNs can talk to each other.
+int[] ports = ServerSocketUtil.getPorts(2);
+MiniDFSNNTopology topology = new MiniDFSNNTopology()
+.addNameservice(new MiniDFSNNTopology.NSConf("ns1")
+.addNN(new