* Issue #8088 Add STOP.EXIT System property to configure ShutdownMonitor.exitVm (#8089) * Issue #8088 Add STOP.EXIT System property to configure ShutdownMonitor.exitVM * Ensure missing STOP.EXIT doesn't override default exitVm=true * Disable another test * Disable test that might not work, depending on test execution order.
This commit is contained in:
parent
8de55150fe
commit
d725855194
|
@ -30,6 +30,7 @@ import java.util.Set;
|
|||
import java.util.function.Predicate;
|
||||
|
||||
import org.eclipse.jetty.util.IO;
|
||||
import org.eclipse.jetty.util.StringUtil;
|
||||
import org.eclipse.jetty.util.component.Destroyable;
|
||||
import org.eclipse.jetty.util.component.LifeCycle;
|
||||
import org.eclipse.jetty.util.thread.AutoLock;
|
||||
|
@ -87,7 +88,7 @@ public class ShutdownMonitor
|
|||
private final String host;
|
||||
private int port;
|
||||
private String key;
|
||||
private boolean exitVm;
|
||||
private boolean exitVm = true;
|
||||
private boolean alive;
|
||||
|
||||
/**
|
||||
|
@ -104,7 +105,8 @@ public class ShutdownMonitor
|
|||
this.host = System.getProperty("STOP.HOST", "127.0.0.1");
|
||||
this.port = Integer.getInteger("STOP.PORT", -1);
|
||||
this.key = System.getProperty("STOP.KEY", null);
|
||||
this.exitVm = true;
|
||||
//only change the default exitVm setting if STOP.EXIT is explicitly set
|
||||
this.exitVm = Boolean.valueOf(System.getProperty("STOP.EXIT", "true"));
|
||||
}
|
||||
|
||||
private void addLifeCycles(LifeCycle... lifeCycles)
|
||||
|
@ -305,6 +307,8 @@ public class ShutdownMonitor
|
|||
// establish the port and key that are in use
|
||||
debug("STOP.PORT=%d", port);
|
||||
debug("STOP.KEY=%s", key);
|
||||
//also show if we're exiting the jvm or not
|
||||
debug("STOP.EXIT=%b", exitVm);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ import org.junit.jupiter.api.Disabled;
|
|||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
|
@ -132,6 +133,81 @@ public class ShutdownMonitorTest
|
|||
assertTrue(!monitor.isAlive());
|
||||
}
|
||||
|
||||
/*
|
||||
* Disable these config tests because ShutdownMonitor is a
|
||||
* static singleton that cannot be unset, and thus would
|
||||
* need each of these methods executed it its own jvm -
|
||||
* current surefire settings only fork for a single test
|
||||
* class.
|
||||
*
|
||||
* Undisable to test individually as needed.
|
||||
*/
|
||||
@Disabled
|
||||
@Test
|
||||
public void testNoExitSystemProperty() throws Exception
|
||||
{
|
||||
System.setProperty("STOP.EXIT", "false");
|
||||
ShutdownMonitor monitor = ShutdownMonitor.getInstance();
|
||||
monitor.setPort(0);
|
||||
assertFalse(monitor.isExitVm());
|
||||
monitor.start();
|
||||
|
||||
try (CloseableServer server = new CloseableServer())
|
||||
{
|
||||
server.setStopAtShutdown(true);
|
||||
server.start();
|
||||
|
||||
//shouldn't be registered for shutdown on jvm
|
||||
assertTrue(ShutdownThread.isRegistered(server));
|
||||
assertTrue(ShutdownMonitor.isRegistered(server));
|
||||
|
||||
String key = monitor.getKey();
|
||||
int port = monitor.getPort();
|
||||
|
||||
stop("stop", port, key, true);
|
||||
monitor.await();
|
||||
|
||||
assertTrue(!monitor.isAlive());
|
||||
assertTrue(server.stopped);
|
||||
assertTrue(!server.destroyed);
|
||||
assertTrue(!ShutdownThread.isRegistered(server));
|
||||
assertTrue(!ShutdownMonitor.isRegistered(server));
|
||||
}
|
||||
}
|
||||
|
||||
@Disabled
|
||||
@Test
|
||||
public void testExitVmDefault() throws Exception
|
||||
{
|
||||
//Test that the default is to exit
|
||||
ShutdownMonitor monitor = ShutdownMonitor.getInstance();
|
||||
monitor.setPort(0);
|
||||
assertTrue(monitor.isExitVm());
|
||||
}
|
||||
|
||||
@Disabled
|
||||
@Test
|
||||
public void testExitVmTrue() throws Exception
|
||||
{
|
||||
//Test setting exit true
|
||||
System.setProperty("STOP.EXIT", "true");
|
||||
ShutdownMonitor monitor = ShutdownMonitor.getInstance();
|
||||
monitor.setPort(0);
|
||||
assertTrue(monitor.isExitVm());
|
||||
}
|
||||
|
||||
@Disabled
|
||||
@Test
|
||||
public void testExitVmFalse() throws Exception
|
||||
{
|
||||
//Test setting exit false
|
||||
System.setProperty("STOP.EXIT", "false");
|
||||
ShutdownMonitor monitor = ShutdownMonitor.getInstance();
|
||||
monitor.setPort(0);
|
||||
assertFalse(monitor.isExitVm());
|
||||
}
|
||||
|
||||
@Disabled
|
||||
@Test
|
||||
public void testForceStopCommand() throws Exception
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue