You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ar...@apache.org on 2014/02/07 02:14:12 UTC
svn commit: r1565508 - in
/hadoop/common/branches/branch-2/hadoop-common-project:
hadoop-common/CHANGES.txt
hadoop-nfs/src/test/java/org/apache/hadoop/oncrpc/TestFrameDecoder.java
Author: arp
Date: Fri Feb 7 01:14:11 2014
New Revision: 1565508
URL: http://svn.apache.org/r1565508
Log:
HADOOP-10330. Merging r1565507 from trunk to branch-2.
Modified:
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-nfs/src/test/java/org/apache/hadoop/oncrpc/TestFrameDecoder.java
Modified: hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1565508&r1=1565507&r2=1565508&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt (original)
+++ hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt Fri Feb 7 01:14:11 2014
@@ -27,6 +27,9 @@ Release 2.4.0 - UNRELEASED
HADOOP-10327. Trunk windows build broken after HDFS-5746.
(Vinay via cnauroth)
+ HADOOP-10330. TestFrameDecoder fails if it cannot bind port 12345.
+ (Arpit Agarwal)
+
Release 2.3.0 - UNRELEASED
INCOMPATIBLE CHANGES
Modified: hadoop/common/branches/branch-2/hadoop-common-project/hadoop-nfs/src/test/java/org/apache/hadoop/oncrpc/TestFrameDecoder.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-common-project/hadoop-nfs/src/test/java/org/apache/hadoop/oncrpc/TestFrameDecoder.java?rev=1565508&r1=1565507&r2=1565508&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-common-project/hadoop-nfs/src/test/java/org/apache/hadoop/oncrpc/TestFrameDecoder.java (original)
+++ hadoop/common/branches/branch-2/hadoop-common-project/hadoop-nfs/src/test/java/org/apache/hadoop/oncrpc/TestFrameDecoder.java Fri Feb 7 01:14:11 2014
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertFal
import static org.junit.Assert.assertTrue;
import java.nio.ByteBuffer;
+import java.util.Random;
import org.apache.hadoop.oncrpc.RpcUtil.RpcFrameDecoder;
import org.apache.hadoop.oncrpc.security.CredentialsNone;
@@ -31,17 +32,17 @@ import org.jboss.netty.buffer.ByteBuffer
import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.buffer.ChannelBuffers;
import org.jboss.netty.channel.Channel;
+import org.jboss.netty.channel.ChannelException;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.junit.Test;
import org.mockito.Mockito;
public class TestFrameDecoder {
- private static int port = 12345; // some random server port
private static int resultSize;
- static void testRequest(XDR request) {
- SimpleTcpClient tcpClient = new SimpleTcpClient("localhost", port, request,
+ static void testRequest(XDR request, int serverPort) {
+ SimpleTcpClient tcpClient = new SimpleTcpClient("localhost", serverPort, request,
true);
tcpClient.run();
}
@@ -148,10 +149,25 @@ public class TestFrameDecoder {
@Test
public void testFrames() {
- RpcProgram program = new TestFrameDecoder.TestRpcProgram("TestRpcProgram",
- "localhost", port, 100000, 1, 2);
- SimpleTcpServer tcpServer = new SimpleTcpServer(port, program, 1);
- tcpServer.run();
+ Random rand = new Random();
+ int serverPort = 30000 + rand.nextInt(10000);
+ int retries = 10; // A few retries in case initial choice is in use.
+
+ while (true) {
+ try {
+ RpcProgram program = new TestFrameDecoder.TestRpcProgram("TestRpcProgram",
+ "localhost", serverPort, 100000, 1, 2);
+ SimpleTcpServer tcpServer = new SimpleTcpServer(serverPort, program, 1);
+ tcpServer.run();
+ break; // Successfully bound a port, break out.
+ } catch (ChannelException ce) {
+ if (retries-- > 0) {
+ serverPort += rand.nextInt(20); // Port in use? Try another.
+ } else {
+ throw ce; // Out of retries.
+ }
+ }
+ }
XDR xdrOut = createGetportMount();
int headerSize = xdrOut.size();
@@ -161,7 +177,7 @@ public class TestFrameDecoder {
int requestSize = xdrOut.size() - headerSize;
// Send the request to the server
- testRequest(xdrOut);
+ testRequest(xdrOut, serverPort);
// Verify the server got the request with right size
assertEquals(requestSize, resultSize);