You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ay...@apache.org on 2007/01/17 12:40:56 UTC
svn commit: r497001 -
/harmony/enhanced/classlib/trunk/support/src/test/java/tests/support/Support_PortManager.java
Author: ayza
Date: Wed Jan 17 03:40:56 2007
New Revision: 497001
URL: http://svn.apache.org/viewvc?view=rev&rev=497001
Log:
Applying patch from HARMONY-2338 ([classlib][luni] tests.api.java.net.ServerSocketTest failed intermittently)
Modified:
harmony/enhanced/classlib/trunk/support/src/test/java/tests/support/Support_PortManager.java
Modified: harmony/enhanced/classlib/trunk/support/src/test/java/tests/support/Support_PortManager.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/support/src/test/java/tests/support/Support_PortManager.java?view=diff&rev=497001&r1=497000&r2=497001
==============================================================================
--- harmony/enhanced/classlib/trunk/support/src/test/java/tests/support/Support_PortManager.java (original)
+++ harmony/enhanced/classlib/trunk/support/src/test/java/tests/support/Support_PortManager.java Wed Jan 17 03:40:56 2007
@@ -17,29 +17,47 @@
package tests.support;
+import java.net.ServerSocket;
import java.util.Calendar;
import java.util.TimeZone;
-public class Support_PortManager extends java.lang.Object {
+public class Support_PortManager {
- private static int lastAssignedPort = somewhatRandomPort();
+ private static int lastAssignedPort = somewhatRandomPort();
+ private static boolean failedOnce = false;
- public static synchronized int getNextPort() {
- if (++lastAssignedPort > 65534) {
+ public static synchronized int getNextPort() {
+ if (!failedOnce) {
+ try {
+ ServerSocket ss = new ServerSocket(0);
+ int port = ss.getLocalPort();
+
+ ss.close();
+ return port;
+ } catch (Exception ex) {
+ failedOnce = true;
+ }
+ }
+ return getNextPort_unsafe();
+ }
+
+ public static synchronized int getNextPort_unsafe() {
+ if (++lastAssignedPort > 65534) {
lastAssignedPort = 6000;
}
- return lastAssignedPort;
- }
+ return lastAssignedPort;
+ }
- /*
- * Returns a different port number every 6 seconds or so. The port number
- * should be about += 100 at each 6 second interval
- */
- private static int somewhatRandomPort() {
+ /*
+ * Returns a different port number every 6 seconds or so. The port number
+ * should be about += 100 at each 6 second interval
+ */
+ private static int somewhatRandomPort() {
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
- int minutes = c.get(Calendar.MINUTE);
- int seconds = c.get(Calendar.SECOND);
- return 6000 + (1000 * minutes) + ((seconds / 6) * 100);
- }
+ int minutes = c.get(Calendar.MINUTE);
+ int seconds = c.get(Calendar.SECOND);
+
+ return 6000 + (1000 * minutes) + ((seconds / 6) * 100);
+ }
}