--- old/test/java/rmi/activation/Activatable/checkActivateRef/group.security.policy 2014-12-23 17:00:43.000000000 -0800 +++ new/test/java/rmi/activation/Activatable/checkActivateRef/group.security.policy 2014-12-23 17:00:42.000000000 -0800 @@ -4,8 +4,8 @@ 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"; + permission java.lang.RuntimePermission "getClassLoader"; }; --- old/test/java/rmi/activation/Activatable/checkAnnotations/group.security.policy 2014-12-23 17:00:44.000000000 -0800 +++ new/test/java/rmi/activation/Activatable/checkAnnotations/group.security.policy 2014-12-23 17:00:44.000000000 -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"; }; --- old/test/java/rmi/activation/Activatable/checkRegisterInLog/group.security.policy 2014-12-23 17:00:47.000000000 -0800 +++ new/test/java/rmi/activation/Activatable/checkRegisterInLog/group.security.policy 2014-12-23 17:00:46.000000000 -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"; }; --- old/test/java/rmi/activation/Activatable/createPrivateActivable/group.security.policy 2014-12-23 17:00:48.000000000 -0800 +++ new/test/java/rmi/activation/Activatable/createPrivateActivable/group.security.policy 2014-12-23 17:00:48.000000000 -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"; }; --- old/test/java/rmi/activation/Activatable/downloadParameterClass/group.security.policy 2014-12-23 17:00:50.000000000 -0800 +++ new/test/java/rmi/activation/Activatable/downloadParameterClass/group.security.policy 2014-12-23 17:00:50.000000000 -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"; }; --- old/test/java/rmi/activation/Activatable/elucidateNoSuchMethod/group.security.policy 2014-12-23 17:00:51.000000000 -0800 +++ new/test/java/rmi/activation/Activatable/elucidateNoSuchMethod/group.security.policy 2014-12-23 17:00:51.000000000 -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"; }; --- old/test/java/rmi/activation/Activatable/extLoadedImpl/group.security.policy 2014-12-23 17:00:53.000000000 -0800 +++ new/test/java/rmi/activation/Activatable/extLoadedImpl/group.security.policy 2014-12-23 17:00:53.000000000 -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"; }; --- old/test/java/rmi/activation/Activatable/forceLogSnapshot/group.security.policy 2014-12-23 17:00:55.000000000 -0800 +++ new/test/java/rmi/activation/Activatable/forceLogSnapshot/group.security.policy 2014-12-23 17:00:55.000000000 -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"; }; --- old/test/java/rmi/activation/Activatable/inactiveGroup/group.security.policy 2014-12-23 17:00:56.000000000 -0800 +++ new/test/java/rmi/activation/Activatable/inactiveGroup/group.security.policy 2014-12-23 17:00:56.000000000 -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"; }; --- old/test/java/rmi/activation/Activatable/nestedActivate/group.security.policy 2014-12-23 17:00:58.000000000 -0800 +++ new/test/java/rmi/activation/Activatable/nestedActivate/group.security.policy 2014-12-23 17:00:58.000000000 -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"; }; --- old/test/java/rmi/activation/Activatable/nonExistentActivatable/group.security.policy 2014-12-23 17:01:00.000000000 -0800 +++ new/test/java/rmi/activation/Activatable/nonExistentActivatable/group.security.policy 2014-12-23 17:01:00.000000000 -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"; }; --- old/test/java/rmi/activation/Activatable/restartCrashedService/group.security.policy 2014-12-23 17:01:01.000000000 -0800 +++ new/test/java/rmi/activation/Activatable/restartCrashedService/group.security.policy 2014-12-23 17:01:01.000000000 -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"; }; --- old/test/java/rmi/activation/Activatable/restartLatecomer/group.security.policy 2014-12-23 17:01:03.000000000 -0800 +++ new/test/java/rmi/activation/Activatable/restartLatecomer/group.security.policy 2014-12-23 17:01:03.000000000 -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"; }; --- old/test/java/rmi/activation/Activatable/restartService/group.security.policy 2014-12-23 17:01:05.000000000 -0800 +++ new/test/java/rmi/activation/Activatable/restartService/group.security.policy 2014-12-23 17:01:05.000000000 -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"; }; --- old/test/java/rmi/activation/Activatable/shutdownGracefully/group.security.policy 2014-12-23 17:01:07.000000000 -0800 +++ new/test/java/rmi/activation/Activatable/shutdownGracefully/group.security.policy 2014-12-23 17:01:07.000000000 -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"; }; --- old/test/java/rmi/activation/Activatable/unregisterInactive/group.security.policy 2014-12-23 17:01:09.000000000 -0800 +++ new/test/java/rmi/activation/Activatable/unregisterInactive/group.security.policy 2014-12-23 17:01:08.000000000 -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"; }; --- old/test/java/rmi/activation/ActivateFailedException/activateFails/group.security.policy 2014-12-23 17:01:10.000000000 -0800 +++ new/test/java/rmi/activation/ActivateFailedException/activateFails/group.security.policy 2014-12-23 17:01:10.000000000 -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"; }; --- old/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/group.security.policy 2014-12-23 17:01:12.000000000 -0800 +++ new/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/group.security.policy 2014-12-23 17:01:12.000000000 -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"; }; --- old/test/java/rmi/activation/ActivationSystem/modifyDescriptor/group.security.policy 2014-12-23 17:01:15.000000000 -0800 +++ new/test/java/rmi/activation/ActivationSystem/modifyDescriptor/group.security.policy 2014-12-23 17:01:14.000000000 -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"; }; --- old/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/group.security.policy 2014-12-23 17:01:17.000000000 -0800 +++ new/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/group.security.policy 2014-12-23 17:01:16.000000000 -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"; + permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + permission java.util.PropertyPermission "test.*", "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"; - - // test needs to communicate with the activation system - permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; }; --- old/test/java/rmi/activation/ActivationSystem/unregisterGroup/group.security.policy 2014-12-23 17:01:18.000000000 -0800 +++ new/test/java/rmi/activation/ActivationSystem/unregisterGroup/group.security.policy 2014-12-23 17:01:18.000000000 -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"; }; --- old/test/java/rmi/activation/CommandEnvironment/group.security.policy 2014-12-23 17:01:20.000000000 -0800 +++ new/test/java/rmi/activation/CommandEnvironment/group.security.policy 2014-12-23 17:01:20.000000000 -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"; }; --- old/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/group.security.policy 2014-12-23 17:01:22.000000000 -0800 +++ new/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/group.security.policy 2014-12-23 17:01:21.000000000 -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"; }; --- old/test/java/rmi/server/RemoteServer/setLogPermission/SetLogPermission.java 2014-12-23 17:01:23.000000000 -0800 +++ new/test/java/rmi/server/RemoteServer/setLogPermission/SetLogPermission.java 2014-12-23 17:01:23.000000000 -0800 @@ -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; --- old/test/java/rmi/testlibrary/ActivationLibrary.java 2014-12-23 17:01:25.000000000 -0800 +++ new/test/java/rmi/testlibrary/ActivationLibrary.java 2014-12-23 17:01:25.000000000 -0800 @@ -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 { --- old/test/java/rmi/testlibrary/JavaVM.java 2014-12-23 17:01:27.000000000 -0800 +++ new/test/java/rmi/testlibrary/JavaVM.java 2014-12-23 17:01:27.000000000 -0800 @@ -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; - } } --- old/test/java/rmi/testlibrary/RMID.java 2014-12-23 17:01:28.000000000 -0800 +++ new/test/java/rmi/testlibrary/RMID.java 2014-12-23 17:01:28.000000000 -0800 @@ -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 { --- old/test/java/rmi/testlibrary/TestLibrary.java 2014-12-23 17:01:30.000000000 -0800 +++ new/test/java/rmi/testlibrary/TestLibrary.java 2014-12-23 17:01:30.000000000 -0800 @@ -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 */ --- old/test/java/rmi/server/RemoteServer/setLogPermission/java.policy 2014-12-23 17:01:32.000000000 -0800 +++ /dev/null 2014-12-23 17:01:32.000000000 -0800 @@ -1,3 +0,0 @@ -grant { - permission java.util.logging.LoggingPermission "control"; -}; --- /dev/null 2014-12-23 17:01:32.000000000 -0800 +++ new/test/java/rmi/server/RemoteServer/setLogPermission/security.policy 2014-12-23 17:01:32.000000000 -0800 @@ -0,0 +1,3 @@ +grant { + permission java.util.logging.LoggingPermission "control"; +};