Просмотр исходного кода

YARN-4909. Fix intermittent failures of TestRMWebServices And TestRMWithCSRFFilter. Contributed by Bibin A Chundatt

Naganarasimha 9 лет назад
Родитель
Сommit
fdbafbc9e5

+ 13 - 5
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/webapp/JerseyTestBase.java

@@ -19,9 +19,10 @@
 package org.apache.hadoop.yarn.webapp;
 
 import java.io.IOException;
+import java.util.Random;
 
 import org.apache.hadoop.net.ServerSocketUtil;
-import org.junit.Before;
+
 import com.sun.jersey.test.framework.JerseyTest;
 import com.sun.jersey.test.framework.WebAppDescriptor;
 
@@ -30,9 +31,16 @@ public abstract class JerseyTestBase extends JerseyTest {
     super(appDescriptor);
   }
 
-  @Before
-  public void initializeJerseyPort() throws IOException {
-    int jerseyPort = ServerSocketUtil.getPort(9998, 10);
-    System.setProperty("jersey.test.port", Integer.toString(jerseyPort));
+  @Override
+  protected int getPort(int port) {
+    Random rand = new Random();
+    int jerseyPort = port + rand.nextInt(1000);
+    try {
+      jerseyPort = ServerSocketUtil.getPort(jerseyPort, 10);
+    } catch (IOException e) {
+      // Ignore exception even after 10 times free port is
+      // not received.
+    }
+    return super.getPort(jerseyPort);
   }
 }