test/java/rmi/registry/altSecurityManager/AltSecurityManager.java

Print this page

        

*** 25,35 **** * @bug 4183202 * @summary rmid and rmiregistry could allow alternate security manager * @author Laird Dornin * * @library ../../testlibrary ! * @build StreamPipe TestParams TestLibrary JavaVM * @build AltSecurityManager TestSecurityManager * @run main/othervm AltSecurityManager */ /** --- 25,35 ---- * @bug 4183202 * @summary rmid and rmiregistry could allow alternate security manager * @author Laird Dornin * * @library ../../testlibrary ! * @build StreamPipe TestParams TestLibrary JavaVM RMID * @build AltSecurityManager TestSecurityManager * @run main/othervm AltSecurityManager */ /**
*** 39,49 **** * will cause rmiregistry and rmid to exit early because those * utilities will be unable to export any remote objects; test fails * if registry and rmid take too long to exit. */ public class AltSecurityManager implements Runnable { ! // variable to hold registry and rmid children static JavaVM vm = null; // names of utilities static String utilityToStart = null; --- 39,49 ---- * will cause rmiregistry and rmid to exit early because those * utilities will be unable to export any remote objects; test fails * if registry and rmid take too long to exit. */ public class AltSecurityManager implements Runnable { ! private int port = -1; // variable to hold registry and rmid children static JavaVM vm = null; // names of utilities static String utilityToStart = null;
*** 51,65 **** static String rmid = "sun.rmi.server.Activation"; // children should exit in at least this time. static long TIME_OUT = 15000; public void run() { try { vm = new JavaVM(utilityToStart, " -Djava.security.manager=TestSecurityManager", ! ""); System.err.println("starting " + utilityToStart); vm.start(); vm.getVM().waitFor(); } catch (Exception e) { --- 51,75 ---- static String rmid = "sun.rmi.server.Activation"; // children should exit in at least this time. static long TIME_OUT = 15000; + public AltSecurityManager(int port) { + this.port = port; + } + public void run() { try { + if (utilityToStart.equals(registry)) { vm = new JavaVM(utilityToStart, " -Djava.security.manager=TestSecurityManager", ! Integer.toString(port)); ! } else { ! vm = new JavaVM(utilityToStart, ! " -Djava.security.manager=TestSecurityManager", ! "-port " + Integer.toString(port)); ! } System.err.println("starting " + utilityToStart); vm.start(); vm.getVM().waitFor(); } catch (Exception e) {
*** 73,83 **** */ public static void ensureExit(String utility) throws Exception { utilityToStart = utility; try { ! Thread thread = new Thread(new AltSecurityManager()); System.err.println("expecting RuntimeException for " + "checkListen in child process"); long start = System.currentTimeMillis(); thread.start(); thread.join(TIME_OUT); --- 83,94 ---- */ public static void ensureExit(String utility) throws Exception { utilityToStart = utility; try { ! int port = TestLibrary.getUnusedRandomPort(); ! Thread thread = new Thread(new AltSecurityManager(port)); System.err.println("expecting RuntimeException for " + "checkListen in child process"); long start = System.currentTimeMillis(); thread.start(); thread.join(TIME_OUT);
*** 89,99 **** if (time >= TIME_OUT) { // dont pollute other tests; increase the likelihood // that rmid will go away if it did not exit already. if (utility.equals(rmid)) { ! RMID.shutdown(); } TestLibrary.bomb(utilityToStart + " took too long to die..."); } else { --- 100,110 ---- if (time >= TIME_OUT) { // dont pollute other tests; increase the likelihood // that rmid will go away if it did not exit already. if (utility.equals(rmid)) { ! RMID.shutdown(port); } TestLibrary.bomb(utilityToStart + " took too long to die..."); } else {