test/java/rmi/activation/Activatable/shutdownGracefully/ShutdownGracefully.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 1999, 2013, 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, 2014, 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.
*** 140,233 **** "object via method call"); } catch (ActivationException e) { System.err.println("received exception from registration " + "call that should have failed..."); } ! ! /* ! * no longer needed because the security manager ! * throws an exception during snapshot ! */ ! /* ! try { ! registering.shutdown(); ! ! System.err.println("received exception from remote " + ! "call that should have failed..."); ! } catch (RemoteException e) { ! } ! */ ! ! } catch (Exception e) { ! TestLibrary.bomb("\nfailure: unexpected exception ", e); ! } finally { ! try { ! Thread.sleep(4000); ! } catch (InterruptedException e) { ! } ! ! registering = null; ! ! // Need to make sure that rmid goes away by itself ! JavaVM rmidProcess = rmid; ! if (rmidProcess != null) { ! try { ! Runnable waitThread = ! new ShutdownDetectThread(rmidProcess); ! ! synchronized (waitThread) { ! (new Thread(waitThread)).start(); ! waitThread.wait(SHUTDOWN_TIMEOUT); ! System.err.println("rmid has shutdown"); ! ! if (!rmidDone) { ! // ensure that this rmid does not infect ! // other tests. ! rmidProcess.destroy(); TestLibrary.bomb("rmid did not shutdown " + "gracefully in time"); } - } } catch (Exception e) { ! TestLibrary.bomb("exception waiting for rmid " + ! "to shut down"); ! } ! } ! // else rmid should be down ! } ! ! System.err.println ! ("\nsuccess: ShutdownGracefully test passed "); ! } ! ! private static boolean rmidDone = false; ! ! /** ! * class that waits for rmid to exit ! */ ! private static class ShutdownDetectThread implements Runnable { ! private JavaVM rmidProcess = null; ! ! ShutdownDetectThread(JavaVM rmidProcess) { ! this.rmidProcess = rmidProcess; ! } ! public void run() { ! System.err.println("waiting for rmid to shutdown"); ! ! try { ! rmidProcess.waitFor(); ! } catch (InterruptedException e) { ! // should not happen ! } ! ! synchronized (this) { ! // notify parent thread when rmid has exited ! this.notify(); ! rmidDone = true; ! } ! ! RMID.removeLog(); } } /** * implementation of RegisteringActivatable --- 140,160 ---- "object via method call"); } catch (ActivationException e) { System.err.println("received exception from registration " + "call that should have failed..."); } ! if (rmid.waitFor(SHUTDOWN_TIMEOUT) == 0) { ! System.err.println("rmid has gracefully shutdown in time"); ! } else { TestLibrary.bomb("rmid did not shutdown " + "gracefully in time"); } } catch (Exception e) { ! TestLibrary.bomb("\nfailure: unexpected exception ", e); ! } finally { ! if(rmid != null) ! rmid.destroy(); } } /** * implementation of RegisteringActivatable