8067316: TEST_BUG: update RMI test library with better test.timeout.factor handling
Reviewed-by: lancea
--- a/jdk/test/java/rmi/activation/Activatable/checkActivateRef/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/activation/Activatable/checkActivateRef/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -4,8 +4,8 @@
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
+ permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
- // test needs to communicate with the activation system
- permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
permission java.lang.RuntimePermission "getClassLoader";
};
--- a/jdk/test/java/rmi/activation/Activatable/checkAnnotations/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/activation/Activatable/checkAnnotations/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -1,10 +1,9 @@
/*
- * security policy used by activation groups.
+ * security policy used by activation groups
*/
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // test needs to communicate with the activation system
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/checkRegisterInLog/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/activation/Activatable/checkRegisterInLog/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -4,10 +4,6 @@
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // allow remote objects to be exported on arbitrary ports.
- permission java.net.SocketPermission "*:1024-", "connect,accept";
-
- // allow exporting object with non-public remote interface
- permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe";
+ permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/createPrivateActivable/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/activation/Activatable/createPrivateActivable/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -1,13 +1,9 @@
/*
- * security policy used activation groups
+ * security policy used by activation groups
*/
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // test needs to communicate with the activation system
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
-
- // allow exporting object with non-public remote interface
- permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/downloadParameterClass/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/activation/Activatable/downloadParameterClass/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -1,14 +1,15 @@
/*
- * security policy used exec'ed activation groups
+ * security policy used by activation groups
*/
grant {
+ permission java.io.FilePermission "..${/}..${/}test.props", "read";
+ permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
+
// need to load custom security manager and activation group from a new codebase
permission java.io.FilePermission ".${/}codebase1", "read,write,delete";
permission java.io.FilePermission ".${/}codebase1${/}-", "read,write";
permission java.io.FilePermission ".${/}codebase2", "read,write,delete";
permission java.io.FilePermission ".${/}codebase2${/}-", "read,write,delete";
-
- // allow remote objects to be exported on arbitrary ports.
- permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
};
--- a/jdk/test/java/rmi/activation/Activatable/elucidateNoSuchMethod/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/activation/Activatable/elucidateNoSuchMethod/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -1,12 +1,13 @@
/*
- * security policy used activation groups
+ * security policy used by activation groups
*/
grant {
+ permission java.io.FilePermission "..${/}..${/}test.props", "read";
+ permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
+
// Needed because of bug#: 4182104
permission java.lang.RuntimePermission "modifyThreadGroup";
permission java.lang.RuntimePermission "modifyThread";
-
- // allow remote objects to be exported on arbitrary ports.
- permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
};
--- a/jdk/test/java/rmi/activation/Activatable/extLoadedImpl/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/activation/Activatable/extLoadedImpl/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -1,8 +1,9 @@
/*
- * security policy used exec'ed activation groups
+ * security policy used by activation groups
*/
grant {
- // allow remote objects to be exported on arbitrary ports.
+ permission java.io.FilePermission "..${/}..${/}test.props", "read";
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/forceLogSnapshot/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/activation/Activatable/forceLogSnapshot/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -3,9 +3,7 @@
*/
grant {
- // allow remote objects to be exported on arbitrary ports.
+ permission java.io.FilePermission "..${/}..${/}test.props", "read";
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
-
- // allow exporting object with non-public remote interface
- permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/inactiveGroup/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/activation/Activatable/inactiveGroup/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -4,10 +4,6 @@
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // allow remote objects to be exported on arbitrary ports.
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
-
- // allow exporting object with non-public remote interface
- permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/nestedActivate/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/activation/Activatable/nestedActivate/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -1,13 +1,9 @@
/*
- * security policy used by test activation groups
+ * security policy used by activation groups
*/
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // allow remote objects to be exported on arbitrary ports.
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
-
- // allow exporting of non-public remote interface
- permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/nonExistentActivatable/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/activation/Activatable/nonExistentActivatable/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -4,7 +4,6 @@
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // allow remote objects to be exported on arbitrary ports.
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/restartCrashedService/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/activation/Activatable/restartCrashedService/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -1,8 +1,9 @@
/*
- * security policy used by test activation groups
+ * security policy used by activation groups
*/
grant {
- // test needs to communicate with the activation system
+ permission java.io.FilePermission "..${/}..${/}test.props", "read";
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/restartLatecomer/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/activation/Activatable/restartLatecomer/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -3,6 +3,7 @@
*/
grant {
- // allow remote objects to be exported on arbitrary ports.
+ permission java.io.FilePermission "..${/}..${/}test.props", "read";
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/restartService/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/activation/Activatable/restartService/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -3,6 +3,7 @@
*/
grant {
- // allow remote objects to be exported on arbitrary ports.
+ permission java.io.FilePermission "..${/}..${/}test.props", "read";
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/shutdownGracefully/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/activation/Activatable/shutdownGracefully/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -1,10 +1,9 @@
/*
- * security policy used activation groups
+ * security policy used by activation groups
*/
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // test needs to communicate with the activation system
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/unregisterInactive/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/activation/Activatable/unregisterInactive/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -4,7 +4,6 @@
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // allow remote objects to be exported on arbitrary ports.
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -1,8 +1,9 @@
/*
- * security policy used activation groups
+ * security policy used by activation groups
*/
grant {
- // test needs to communicate with the activation system
+ permission java.io.FilePermission "..${/}..${/}test.props", "read";
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -1,10 +1,11 @@
/*
- * security policy used by downloaded activation group
+ * security policy used by activation groups
*/
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
+ permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.server";
- permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
};
--- a/jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -4,10 +4,6 @@
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // accomodate property used by this test.
- permission java.util.PropertyPermission "test.message", "read";
-
- // test needs to communicate with the activation system
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -1,13 +1,11 @@
/*
- * security policy used by activation groups.
+ * security policy used by activation groups
*/
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // give the group permission to create a class that the main test process can not create
- permission java.lang.RuntimePermission "accessClassInPackage.sun.security.provider";
+ permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
- // test needs to communicate with the activation system
- permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.lang.RuntimePermission "accessClassInPackage.sun.security.provider";
};
--- a/jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -4,8 +4,6 @@
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // test needs to communicate with the activation system
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
- permission java.util.PropertyPermission "unregisterGroup.port", "read";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/CommandEnvironment/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/activation/CommandEnvironment/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -1,8 +1,9 @@
/*
- * security policy used by activation groups.
+ * security policy used by activation groups
*/
grant {
- // test needs to communicate with the activation system
+ permission java.io.FilePermission "..${/}..${/}test.props", "read";
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/group.security.policy Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/group.security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -1,11 +1,9 @@
/*
- * security policy used by the rmid process exec'ed by a running
- * instance of the test.
+ * security policy used by activation groups
*/
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // test needs to communicate with the activation system
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/server/RemoteServer/setLogPermission/SetLogPermission.java Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/server/RemoteServer/setLogPermission/SetLogPermission.java Tue Dec 23 16:58:06 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,7 +27,7 @@
* The RemoteServer.setLog method requires
* java.util.log.LoggingPermission("control").
* @author Ann Wollrath
- * @run main/othervm/policy=java.policy SetLogPermission
+ * @run main/othervm/policy=security.policy SetLogPermission
*/
import java.rmi.server.RemoteServer;
--- a/jdk/test/java/rmi/server/RemoteServer/setLogPermission/java.policy Mon Jan 05 21:52:03 2015 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-grant {
- permission java.util.logging.LoggingPermission "control";
-};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/rmi/server/RemoteServer/setLogPermission/security.policy Tue Dec 23 16:58:06 2014 -0800
@@ -0,0 +1,3 @@
+grant {
+ permission java.util.logging.LoggingPermission "control";
+};
--- a/jdk/test/java/rmi/testlibrary/ActivationLibrary.java Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/testlibrary/ActivationLibrary.java Tue Dec 23 16:58:06 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -40,20 +40,6 @@
* objects.
*/
public class ActivationLibrary {
- /** time safeDestroy should wait before failing on shutdown rmid */
- private static final int SAFE_WAIT_TIME;
- static {
- int slopFactor = 1;
- try {
- slopFactor = Integer.valueOf(
- TestLibrary.getExtraProperty("jcov.sleep.multiplier","1"));
- } catch (NumberFormatException ignore) {}
- SAFE_WAIT_TIME = 60000 * slopFactor;
- }
-
- private static final String SYSTEM_NAME =
- ActivationSystem.class.getName();
-
private static void mesg(Object mesg) {
System.err.println("ACTIVATION_LIBRARY: " + mesg.toString());
}
@@ -63,20 +49,19 @@
*/
public static void deactivate(Remote remote,
ActivationID id) {
- // We do as much as 50 deactivation trials, each separated by
- // at least 100 milliseconds sleep time (max sleep time of 5 secs).
- final long deactivateSleepTime = 100;
- long stopTime = System.currentTimeMillis() + deactivateSleepTime * 50;
- while (System.currentTimeMillis() < stopTime) {
+ final long POLLTIME_MS = 100L;
+ final long DEACTIVATE_TIME_MS = 30_000L;
+
+ long startTime = System.currentTimeMillis();
+ long deadline = TestLibrary.computeDeadline(startTime, DEACTIVATE_TIME_MS);
+
+ while (System.currentTimeMillis() < deadline) {
try {
if (Activatable.inactive(id) == true) {
mesg("inactive successful");
return;
} else {
- mesg("inactive trial failed. Sleeping " +
- deactivateSleepTime +
- " milliseconds before next trial");
- Thread.sleep(deactivateSleepTime);
+ Thread.sleep(POLLTIME_MS);
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
@@ -95,7 +80,8 @@
}
}
- mesg("unable to inactivate after several attempts");
+ mesg("unable to inactivate after " +
+ (System.currentTimeMillis() - startTime) + "ms.");
mesg("unexporting object forcibly instead");
try {
--- a/jdk/test/java/rmi/testlibrary/JavaVM.java Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/testlibrary/JavaVM.java Tue Dec 23 16:58:06 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -194,7 +194,7 @@
throws InterruptedException, TimeoutException {
if (vm == null)
throw new IllegalStateException("can't wait for JavaVM that isn't running");
- long deadline = computeDeadline(System.currentTimeMillis(), timeout);
+ long deadline = TestLibrary.computeDeadline(System.currentTimeMillis(), timeout);
while (true) {
try {
@@ -218,21 +218,4 @@
start();
return waitFor();
}
-
- /**
- * Computes a deadline from a timestamp and a timeout value.
- * Maximum timeout (before multipliers are applied) is one hour.
- */
- public static long computeDeadline(long timestamp, long timeout) {
- final long MAX_TIMEOUT_MS = 3_600_000L;
-
- if (timeout < 0L || timeout > MAX_TIMEOUT_MS) {
- throw new IllegalArgumentException("timeout " + timeout + "ms out of range");
- }
-
- // TODO apply test.timeout.factor (and possibly jcov.sleep.multiplier)
- // here instead of upstream
-
- return timestamp + timeout;
- }
}
--- a/jdk/test/java/rmi/testlibrary/RMID.java Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/testlibrary/RMID.java Tue Dec 23 16:58:06 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -249,15 +249,15 @@
mesg("Starting rmid on port " + port + ".");
super.start();
- int slopFactor = 1;
- try {
- slopFactor = Integer.valueOf(
- TestLibrary.getExtraProperty("jcov.sleep.multiplier","1"));
- } catch (NumberFormatException ignore) {}
- waitTime = waitTime * slopFactor;
+ // int slopFactor = 1;
+ // try {
+ // slopFactor = Integer.valueOf(
+ // TestLibrary.getExtraProperty("jcov.sleep.multiplier","1"));
+ // } catch (NumberFormatException ignore) {}
+ // waitTime = waitTime * slopFactor;
long startTime = System.currentTimeMillis();
- long deadline = computeDeadline(startTime, waitTime);
+ long deadline = TestLibrary.computeDeadline(startTime, waitTime);
while (true) {
try {
--- a/jdk/test/java/rmi/testlibrary/TestLibrary.java Mon Jan 05 21:52:03 2015 +0530
+++ b/jdk/test/java/rmi/testlibrary/TestLibrary.java Tue Dec 23 16:58:06 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -135,7 +135,8 @@
*/
public static boolean checkIfRegistryRunning(int port, int msTimeout) {
- long stopTime = System.currentTimeMillis() + msTimeout;
+ final long POLLTIME_MS = 100L;
+ long stopTime = computeDeadline(System.currentTimeMillis(), msTimeout);
do {
try {
Registry r = LocateRegistry.getRegistry(port);
@@ -145,12 +146,12 @@
} catch (RemoteException e) {
// problem - not ready ? Try again
try {
- Thread.sleep(500);
+ Thread.sleep(POLLTIME_MS);
} catch (InterruptedException ie) {
// not expected
}
}
- } while (stopTime > System.currentTimeMillis());
+ } while (System.currentTimeMillis() < stopTime);
return false;
}
@@ -169,6 +170,31 @@
}
}
+ public static double getTimeoutFactor() {
+ String prop = getProperty("test.timeout.factor", "1.0");
+ double timeoutFactor = 1.0;
+
+ try {
+ timeoutFactor = Double.parseDouble(prop);
+ } catch (NumberFormatException ignore) { }
+
+ return timeoutFactor;
+ }
+
+ /**
+ * Computes a deadline from a timestamp and a timeout value.
+ * Maximum timeout (before multipliers are applied) is one hour.
+ */
+ public static long computeDeadline(long timestamp, long timeout) {
+ final long MAX_TIMEOUT_MS = 3_600_000L;
+
+ if (timeout < 0L || timeout > MAX_TIMEOUT_MS) {
+ throw new IllegalArgumentException("timeout " + timeout + "ms out of range");
+ }
+
+ return timestamp + (long)(timeout * getTimeoutFactor());
+ }
+
/**
* Property mutators
*/