Lines 821-826
Link Here
|
821 |
log.info("Remote engines have been started"); |
821 |
log.info("Remote engines have been started"); |
822 |
} |
822 |
} |
823 |
startUdpDdaemon(engines); |
823 |
startUdpDdaemon(engines); |
|
|
824 |
Runtime.getRuntime().addShutdownHook(new Thread(new JMeterShutdownHook(engines))); |
824 |
} catch (Exception e) { |
825 |
} catch (Exception e) { |
825 |
System.out.println("Error in NonGUIDriver " + e.toString()); |
826 |
System.out.println("Error in NonGUIDriver " + e.toString()); |
826 |
log.error("Error in NonGUIDriver", e); |
827 |
log.error("Error in NonGUIDriver", e); |
Lines 828-833
Link Here
|
828 |
JOrphanUtils.closeQuietly(reader); |
829 |
JOrphanUtils.closeQuietly(reader); |
829 |
} |
830 |
} |
830 |
} |
831 |
} |
|
|
832 |
|
833 |
private static final class JMeterShutdownHook implements Runnable { |
834 |
private static final Logger log = LoggingManager.getLoggerFor(JMeterShutdownHook.class.getName()); |
835 |
private List<JMeterEngine> engines; |
836 |
|
837 |
public JMeterShutdownHook(List<JMeterEngine> engines) { |
838 |
this.engines = engines; |
839 |
} |
840 |
|
841 |
@Override |
842 |
public void run() { |
843 |
log.warn("Shutdown hook started"); |
844 |
for(JMeterEngine engine : engines) { |
845 |
if(engine.isActive()) { |
846 |
log.warn("Shutdown hook is stopping engine:"+engine); |
847 |
engine.stopTest(true); |
848 |
log.warn("Shutdown hook has stopped engine:"+engine); |
849 |
} |
850 |
} |
851 |
log.warn("Shutdown hook ended"); |
852 |
} |
853 |
} |
831 |
|
854 |
|
832 |
/** |
855 |
/** |
833 |
* Refactored from AbstractAction.java |
856 |
* Refactored from AbstractAction.java |