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

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 1999, 2008, 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 * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 1999, 2012, 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 * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 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,65 **** * 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; ! static String registry = "sun.rmi.registry.RegistryImpl"; ! 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) { --- 39,83 ---- * 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 final int regPort; // variable to hold registry and rmid children static JavaVM vm = null; // names of utilities static String utilityToStart = null; ! static final String REGISTRY_IMPL = "sun.rmi.registry.RegistryImpl"; ! static final String ACTIVATION = "sun.rmi.server.Activation"; // children should exit in at least this time. static long TIME_OUT = 15000; + public AltSecurityManager(int port) { + if (port <= 0) { + TestLibrary.bomb("Port must be greater then 0."); + } + + this.regPort = port; + } + public void run() { try { + if (utilityToStart.equals(REGISTRY_IMPL)) { vm = new JavaVM(utilityToStart, " -Djava.security.manager=TestSecurityManager", ! Integer.toString(regPort)); ! } else if (utilityToStart.contains(ACTIVATION)) { ! vm = new JavaVM(utilityToStart, ! " -Djava.security.manager=TestSecurityManager", ! "-port " + Integer.toString(regPort)); ! } else { ! TestLibrary.bomb("Utility to start must be " + REGISTRY_IMPL + ! " or " + ACTIVATION); ! } ! 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); --- 91,102 ---- */ 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);
*** 88,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 { --- 107,118 ---- 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(ACTIVATION)) { ! RMID.shutdown(port); } TestLibrary.bomb(utilityToStart + " took too long to die..."); } else {
*** 109,122 **** public static void main(String[] args) { try { System.err.println("\nRegression test for bug 4183202\n"); // make sure the registry exits early. ! ensureExit(registry); // make sure rmid exits early ! ensureExit(rmid); System.err.println("test passed"); } catch (Exception e) { TestLibrary.bomb(e); --- 128,141 ---- public static void main(String[] args) { try { System.err.println("\nRegression test for bug 4183202\n"); // make sure the registry exits early. ! ensureExit(REGISTRY_IMPL); // make sure rmid exits early ! ensureExit(ACTIVATION); System.err.println("test passed"); } catch (Exception e) { TestLibrary.bomb(e);