Index: hbase-server/src/main/java/org/apache/hadoop/hbase/util/AbstractHBaseTool.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/util/AbstractHBaseTool.java (revision 1559810) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/util/AbstractHBaseTool.java (working copy) @@ -43,9 +43,13 @@ protected static final int EXIT_SUCCESS = 0; protected static final int EXIT_FAILURE = 1; + // exit value indicating the skip of System.exit() + protected static final int EXIT_SKIP = -100; private static final String SHORT_HELP_OPTION = "h"; private static final String LONG_HELP_OPTION = "help"; + + private static final String OPT_SKIP_SYS_EXIT = "skip_sys_exit"; private static final Log LOG = LogFactory.getLog(AbstractHBaseTool.class); @@ -105,6 +109,10 @@ return EXIT_FAILURE; } + boolean skipSystemExit = false; + if (cmd.hasOption(OPT_SKIP_SYS_EXIT)) { + skipSystemExit = true; + } processOptions(cmd); int ret = EXIT_FAILURE; @@ -114,6 +122,7 @@ LOG.error("Error running command-line tool", e); return EXIT_FAILURE; } + if (ret == EXIT_SUCCESS && skipSystemExit) return EXIT_SKIP; return ret; } @@ -130,6 +139,7 @@ protected CommandLine parseArgs(String[] args) throws ParseException { options.addOption(SHORT_HELP_OPTION, LONG_HELP_OPTION, false, "Show usage"); + addOptNoArg(OPT_SKIP_SYS_EXIT, "Skip calling System.exit() at the end of the test"); addOptions(); CommandLineParser parser = new BasicParser(); return parser.parse(options, args); @@ -197,7 +207,9 @@ LOG.error("Error running command-line tool", ex); ret = EXIT_FAILURE; } - System.exit(ret); + if (ret != EXIT_SKIP) { + System.exit(ret); + } } }