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