Repository: hbase
Updated Branches:
  refs/heads/HBASE-7912 8c7dc1737 -> 33d76f13f


HBASE-16828 Make backup command-line tool interface consistent (Vladimir 
Rodionov)


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/33d76f13
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/33d76f13
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/33d76f13

Branch: refs/heads/HBASE-7912
Commit: 33d76f13f8b9d595507f90caa57641e04fe206bc
Parents: 8c7dc17
Author: tedyu <yuzhih...@gmail.com>
Authored: Mon Oct 24 12:55:03 2016 -0700
Committer: tedyu <yuzhih...@gmail.com>
Committed: Mon Oct 24 12:55:03 2016 -0700

----------------------------------------------------------------------
 .../hadoop/hbase/backup/BackupDriver.java       |  50 +++---
 .../hbase/backup/BackupRestoreConstants.java    |  44 ++++-
 .../hadoop/hbase/backup/RestoreDriver.java      |  77 ++++-----
 .../hbase/backup/impl/BackupCommands.java       | 162 +++++++++++--------
 .../hadoop/hbase/util/AbstractHBaseTool.java    |   2 +-
 .../hbase/backup/TestBackupCommandLineTool.java | 158 ++++++++++--------
 .../hadoop/hbase/backup/TestBackupDelete.java   |   1 -
 .../hadoop/hbase/backup/TestBackupDescribe.java |   2 +-
 .../hbase/backup/TestBackupShowHistory.java     |   6 +-
 .../hadoop/hbase/backup/TestFullBackup.java     |   4 -
 .../hadoop/hbase/backup/TestFullBackupSet.java  |   6 +-
 .../backup/TestFullBackupSetRestoreSet.java     |  10 +-
 .../hadoop/hbase/backup/TestFullRestore.java    |  37 +----
 .../hbase/backup/TestIncrementalBackup.java     |   3 -
 .../hadoop/hbase/backup/TestRemoteBackup.java   |   1 -
 .../hbase/backup/TestSystemTableSnapshot.java   |   7 -
 16 files changed, 308 insertions(+), 262 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/33d76f13/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/BackupDriver.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/BackupDriver.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/BackupDriver.java
index 99b7460..4f17abf 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/BackupDriver.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/BackupDriver.java
@@ -26,7 +26,6 @@ import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.HBaseConfiguration;
-import org.apache.hadoop.hbase.backup.BackupRestoreConstants.BackupCommand;
 import org.apache.hadoop.hbase.backup.impl.BackupCommands;
 import org.apache.hadoop.hbase.classification.InterfaceAudience;
 import org.apache.hadoop.hbase.classification.InterfaceStability;
@@ -39,27 +38,24 @@ import org.apache.log4j.Logger;
 
 @InterfaceAudience.Private
 @InterfaceStability.Evolving
-public class BackupDriver extends AbstractHBaseTool {
+public class BackupDriver extends AbstractHBaseTool implements 
BackupRestoreConstants {
 
   private static final Log LOG = LogFactory.getLog(BackupDriver.class);
   private CommandLine cmd;
-    
-  public BackupDriver() throws IOException
-  {
+
+  public BackupDriver() throws IOException {
     init();
   }
-  
+
   protected void init() throws IOException {
     // define supported options
-    addOptNoArg("debug", "Enable debug loggings");
-    addOptNoArg("all", "All tables");
-    addOptWithArg("t", "Table name");
-    addOptWithArg("b", "Bandwidth per worker (M/R task) in MB/s");
-    addOptWithArg("w", "Number of workers (M/R tasks)");
-    addOptWithArg("n", "History of backup length");
-    addOptWithArg("set", "Backup set name");
-    addOptWithArg("path", "Backup destination root directory path");
-    
+    addOptNoArg(OPTION_DEBUG, OPTION_DEBUG_DESC);
+    addOptWithArg(OPTION_TABLE, OPTION_TABLE_DESC);
+    addOptWithArg(OPTION_BANDWIDTH, OPTION_BANDWIDTH_DESC);
+    addOptWithArg(OPTION_WORKERS, OPTION_WORKERS_DESC);
+    addOptWithArg(OPTION_RECORD_NUMBER, OPTION_RECORD_NUMBER_DESC);
+    addOptWithArg(OPTION_SET, OPTION_SET_DESC);
+    addOptWithArg(OPTION_PATH, OPTION_PATH_DESC);
 
     // disable irrelevant loggers to avoid it mess up command output
     LogUtils.disableUselessLoggers(LOG);
@@ -95,7 +91,7 @@ public class BackupDriver extends AbstractHBaseTool {
     } else if (BackupCommand.SET.name().equalsIgnoreCase(cmd)) {
       type = BackupCommand.SET;
     } else {
-      System.err.println("Unsupported command for backup: " + cmd);
+      System.out.println("Unsupported command for backup: " + cmd);
       printToolUsage();
       return -1;
     }
@@ -110,13 +106,13 @@ public class BackupDriver extends AbstractHBaseTool {
 
     // TODO: get rid of Command altogether?
     BackupCommands.Command command = BackupCommands.createCommand(getConf(), 
type, this.cmd);
-    if( type == BackupCommand.CREATE && conf != null) {
+    if (type == BackupCommand.CREATE && conf != null) {
       ((BackupCommands.CreateCommand) command).setConf(conf);
-    }   
+    }
     try {
       command.execute();
     } catch (IOException e) {
-      if (e.getMessage().equals(BackupCommands.INCORRECT_USAGE)){
+      if (e.getMessage().equals(BackupCommands.INCORRECT_USAGE)) {
         return -1;
       }
       throw e;
@@ -143,10 +139,10 @@ public class BackupDriver extends AbstractHBaseTool {
     Path hbasedir = FSUtils.getRootDir(conf);
     URI defaultFs = hbasedir.getFileSystem(conf).getUri();
     FSUtils.setFsDefault(conf, new Path(defaultFs));
-    int ret = ToolRunner.run(conf, new BackupDriver(), args);    
-    System.exit(ret);    
+    int ret = ToolRunner.run(conf, new BackupDriver(), args);
+    System.exit(ret);
   }
-  
+
   @Override
   public int run(String[] args) throws IOException {
     if (conf == null) {
@@ -160,7 +156,7 @@ public class BackupDriver extends AbstractHBaseTool {
       cmd = parseArgs(args);
       cmdLineArgs = args;
     } catch (Exception e) {
-      System.err.println("Error when parsing command-line arguments: 
"+e.getMessage());
+      System.out.println("Error when parsing command-line arguments: " + 
e.getMessage());
       printToolUsage();
       return EXIT_FAILURE;
     }
@@ -181,19 +177,19 @@ public class BackupDriver extends AbstractHBaseTool {
     }
     return ret;
   }
-  
+
   protected boolean sanityCheckOptions(CommandLine cmd) {
     boolean success = true;
     for (String reqOpt : requiredOptions) {
       if (!cmd.hasOption(reqOpt)) {
-        System.err.println("Required option -" + reqOpt + " is missing");
+        System.out.println("Required option -" + reqOpt + " is missing");
         success = false;
       }
     }
     return success;
   }
-  
+
   protected void printToolUsage() throws IOException {
-    System.err.println(BackupCommands.USAGE); 
+    System.out.println(BackupCommands.USAGE);
   }
 }

http://git-wip-us.apache.org/repos/asf/hbase/blob/33d76f13/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/BackupRestoreConstants.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/BackupRestoreConstants.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/BackupRestoreConstants.java
index 76f0e75..1c82bbe 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/BackupRestoreConstants.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/BackupRestoreConstants.java
@@ -27,9 +27,47 @@ import 
org.apache.hadoop.hbase.classification.InterfaceStability;
  */
 @InterfaceAudience.Private
 @InterfaceStability.Stable
-public final class BackupRestoreConstants {
+public interface BackupRestoreConstants {
 
+  // Drivers option list
+  public static final String OPTION_OVERWRITE = "o";
+  public static final String OPTION_OVERWRITE_DESC = 
+      "Overwrite data if any of the restore target tables exists";
+  
+  public static final String OPTION_CHECK = "c";
+  public static final String OPTION_CHECK_DESC = 
+      "Check restore sequence and dependencies only (does not execute the 
command)";
+  
+  public static final String OPTION_SET = "s";
+  public static final String OPTION_SET_DESC = "Backup set name";
+  public static final String OPTION_SET_RESTORE_DESC = 
+      "Backup set to restore, mutually exclusive with table list <table(s)>";
+  
+  public static final String OPTION_DEBUG = "d";
+  public static final String OPTION_DEBUG_DESC = "Enable debug loggings";
+  
+  public static final String OPTION_TABLE = "t";
+  public static final String OPTION_TABLE_DESC = "Table name. If specified, 
only backup images,"+
+  " which contain this table will be listed.";
+  
+  public static final String OPTION_BANDWIDTH = "b";
+  public static final String OPTION_BANDWIDTH_DESC = "Bandwidth per task 
(MapReduce task) in MB/s";
+  
+  public static final String OPTION_WORKERS = "w";
+  public static final String OPTION_WORKERS_DESC = "Number of parallel 
MapReduce tasks to execute";
 
+  public static final String OPTION_RECORD_NUMBER = "n";
+  public static final String OPTION_RECORD_NUMBER_DESC = "Number of records of 
backup history. Default: 10";
+  
+  public static final String OPTION_PATH = "p";
+  public static final String OPTION_PATH_DESC = "Backup destination root 
directory path";
+
+  public static final String OPTION_TABLE_MAPPING = "m";
+  public static final String OPTION_TABLE_MAPPING_DESC = 
+      "A comma separated list of target tables. "+
+      "If specified, each table in <tables> must have a mapping";
+
+  
   // delimiter in tablename list in restore command
   public static final String TABLENAME_DELIMITER_IN_COMMAND = ",";
 
@@ -50,7 +88,5 @@ public final class BackupRestoreConstants {
     SET_ADD, SET_REMOVE, SET_DELETE, SET_DESCRIBE, SET_LIST
   }
 
-  private BackupRestoreConstants() {
-    // Can't be instantiated with this ctor.
-  }
+
 }

http://git-wip-us.apache.org/repos/asf/hbase/blob/33d76f13/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/RestoreDriver.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/RestoreDriver.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/RestoreDriver.java
index 67b5472..9043dcc 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/RestoreDriver.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/RestoreDriver.java
@@ -22,6 +22,7 @@ import java.net.URI;
 import java.util.List;
 
 import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.HelpFormatter;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -42,33 +43,19 @@ import org.apache.hadoop.util.ToolRunner;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 
-public class RestoreDriver extends AbstractHBaseTool {
+public class RestoreDriver extends AbstractHBaseTool implements 
BackupRestoreConstants{
 
   private static final Log LOG = LogFactory.getLog(RestoreDriver.class);
   private CommandLine cmd;
 
-  private static final String OPTION_OVERWRITE = "overwrite";
-  private static final String OPTION_CHECK = "check";
-  private static final String OPTION_SET = "set";
-  private static final String OPTION_DEBUG = "debug";
-
-
-  private static final String USAGE =
-      "Usage: hbase restore [-set set_name] <backup_root_path> <backup_id> 
<tables> [tableMapping] \n"
-          + "       [-overwrite] [-check]\n"
-          + " backup_root_path  The parent location where the backup images 
are stored\n"
-          + " backup_id         The id identifying the backup image\n"
-          + " table(s)          Table(s) from the backup image to be 
restored.\n"
-          + "                   Tables are separated by comma.\n"
-          + " Options:\n"
-          + "   tableMapping    A comma separated list of target tables.\n"
-          + "                   If specified, each table in <tables> must have 
a mapping.\n"
-          + "   -overwrite      With this option, restore overwrites to the 
existing table "
-          + "if there's any in\n"
-          + "                   restore target. The existing table must be 
online before restore.\n"
-          + "   -check          With this option, sequence and dependencies 
are checked\n"
-          + "                   and verified without executing the restore 
command\n"
-          + "   -set set_name   Backup set to restore, mutually exclusive with 
table list <tables>.";
+  private static final String USAGE_STRING =
+      "Usage: bin/hbase restore <backup_path> <backup_id> <table(s)> 
[options]\n"+
+      "  backup_path     Path to a backup destination root\n"+
+      "  backup_id       Backup image ID to restore" +
+      "  table(s)        Comma-separated list of tables to restore";
+  
+  
+  private static final String USAGE_FOOTER = "";
 
     
   protected RestoreDriver() throws IOException
@@ -78,11 +65,13 @@ public class RestoreDriver extends AbstractHBaseTool {
   
   protected void init() throws IOException {
     // define supported options
-    addOptNoArg(OPTION_OVERWRITE,
-        "Overwrite the data if any of the restore target tables exists");
-    addOptNoArg(OPTION_CHECK, "Check restore sequence and dependencies");
-    addOptNoArg(OPTION_DEBUG,  "Enable debug logging");
-    addOptWithArg(OPTION_SET, "Backup set name");
+    addOptNoArg(OPTION_OVERWRITE, OPTION_OVERWRITE_DESC);
+    addOptNoArg(OPTION_CHECK, OPTION_CHECK_DESC);
+    addOptNoArg(OPTION_DEBUG,  OPTION_DEBUG_DESC);
+    addOptWithArg(OPTION_SET, OPTION_SET_RESTORE_DESC);
+    addOptWithArg(OPTION_TABLE_MAPPING, OPTION_TABLE_MAPPING_DESC);
+    
+    
 
     // disable irrelevant loggers to avoid it mess up command output
     LogUtils.disableUselessLoggers(LOG);
@@ -97,8 +86,8 @@ public class RestoreDriver extends AbstractHBaseTool {
     }
 
     // whether to overwrite to existing table if any, false by default
-    boolean isOverwrite = cmd.hasOption(OPTION_OVERWRITE);
-    if (isOverwrite) {
+    boolean overwrite = cmd.hasOption(OPTION_OVERWRITE);
+    if (overwrite) {
       LOG.debug("Found -overwrite option in restore command, "
           + "will overwrite to existing table if any in the restore target");
     }
@@ -116,7 +105,6 @@ public class RestoreDriver extends AbstractHBaseTool {
     String[] remainArgs = cmd.getArgs();
     if (remainArgs.length < 3 && !cmd.hasOption(OPTION_SET) ||
         (cmd.hasOption(OPTION_SET) && remainArgs.length < 2)) {
-      System.err.println("ERROR: remain args length="+ remainArgs.length);
       printToolUsage();
       return -1;
     } 
@@ -124,7 +112,8 @@ public class RestoreDriver extends AbstractHBaseTool {
     String backupRootDir = remainArgs[0];
     String backupId = remainArgs[1];
     String tables = null;
-    String tableMapping = null;
+    String tableMapping =  cmd.hasOption(OPTION_TABLE_MAPPING)? 
+        cmd.getOptionValue(OPTION_TABLE_MAPPING): null;
     try (final Connection conn = ConnectionFactory.createConnection(conf);
         BackupAdmin client = new HBaseBackupAdmin(conn);) {
       // Check backup set
@@ -133,33 +122,31 @@ public class RestoreDriver extends AbstractHBaseTool {
         try{
           tables = getTablesForSet(conn, setName, conf);
         } catch(IOException e){
-          System.err.println("ERROR: "+ e.getMessage()+" for 
setName="+setName);
+          System.out.println("ERROR: "+ e.getMessage()+" for 
setName="+setName);
           printToolUsage();
           return -2;
         }
         if (tables == null) {
-          System.err.println("ERROR: Backup set '" + setName
+          System.out.println("ERROR: Backup set '" + setName
               + "' is either empty or does not exist");
           printToolUsage();
           return -3;
         }
-        tableMapping = (remainArgs.length > 2) ? remainArgs[2] : null;
       } else {
         tables = remainArgs[2];    
-        tableMapping = (remainArgs.length > 3) ? remainArgs[3] : null;
       }    
 
       TableName[] sTableArray = BackupServerUtil.parseTableNames(tables);
       TableName[] tTableArray = BackupServerUtil.parseTableNames(tableMapping);
 
       if (sTableArray != null && tTableArray != null && (sTableArray.length != 
tTableArray.length)){
-        System.err.println("ERROR: table mapping mismatch: " + tables + " : " 
+ tableMapping);
+        System.out.println("ERROR: table mapping mismatch: " + tables + " : " 
+ tableMapping);
         printToolUsage();
         return -4;
       }
 
       client.restore(RestoreServerUtil.createRestoreRequest(backupRootDir, 
backupId, check,
-          sTableArray, tTableArray, isOverwrite));
+          sTableArray, tTableArray, overwrite));
     } catch (Exception e){
       e.printStackTrace();
       return -5;
@@ -212,7 +199,7 @@ public class RestoreDriver extends AbstractHBaseTool {
       cmd = parseArgs(args);
       cmdLineArgs = args;
     } catch (Exception e) {
-      System.err.println("Error when parsing command-line arguments: " + 
e.getMessage());
+      System.out.println("Error when parsing command-line arguments: " + 
e.getMessage());
       printToolUsage();
       return EXIT_FAILURE;
     }
@@ -239,7 +226,7 @@ public class RestoreDriver extends AbstractHBaseTool {
     boolean success = true;
     for (String reqOpt : requiredOptions) {
       if (!cmd.hasOption(reqOpt)) {
-        System.err.println("Required option -" + reqOpt + " is missing");
+        System.out.println("Required option -" + reqOpt + " is missing");
         success = false;
       }
     }
@@ -247,6 +234,12 @@ public class RestoreDriver extends AbstractHBaseTool {
   }
   
   protected void printToolUsage() throws IOException {
-    System.err.println(USAGE);
-  }
+    System.out.println(USAGE_STRING);
+    HelpFormatter helpFormatter = new HelpFormatter();
+    helpFormatter.setLeftPadding(2);
+    helpFormatter.setDescPadding(8);
+    helpFormatter.setWidth(100);
+    helpFormatter.setSyntaxPrefix("Options:");
+    helpFormatter.printHelp(" ", null, options, USAGE_FOOTER);  
+ }
 }

http://git-wip-us.apache.org/repos/asf/hbase/blob/33d76f13/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupCommands.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupCommands.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupCommands.java
index b2b4e78..62f2281 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupCommands.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupCommands.java
@@ -19,12 +19,16 @@
 package org.apache.hadoop.hbase.backup.impl;
 
 import java.io.IOException;
+import java.net.URI;
 import java.util.List;
 
 import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.HelpFormatter;
+import org.apache.commons.cli.Options;
 import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.conf.Configured;
+import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.hadoop.hbase.TableName;
@@ -47,11 +51,11 @@ import com.google.common.collect.Lists;
  */
 @InterfaceAudience.Private
 @InterfaceStability.Evolving
-public final class BackupCommands {
+public final class BackupCommands implements BackupRestoreConstants {
   
   public final static String INCORRECT_USAGE = "Incorrect usage";
 
-  public static final String USAGE = "Usage: hbase backup COMMAND 
[command-specific arguments]\n"
+  public static final String USAGE = "Usage: bin/hbase backup COMMAND 
[command-specific arguments]\n"
       + "where COMMAND is one of:\n" 
       + "  create          Create a new backup image\n"
       + "  delete          Delete an existing backup image\n"
@@ -59,43 +63,36 @@ public final class BackupCommands {
       + "  history         Show history of all successful backups\n"
       + "  progress        Show the progress of the latest backup request\n"
       + "  set             Backup set management\n"
-      + "Run \'hbase backup COMMAND -h\' to see help message for each 
command\n";
+      + "Run \'bin/hbase backup COMMAND -h\' to see help message for each 
command\n";
 
   public static final String CREATE_CMD_USAGE =
-      "Usage: hbase backup create <type> <backup_root> [tables] [-set name] "
-      + "[-w workers][-b bandwith]\n" 
-      + "  type           \"full\" to create a full backup image\n"
-      + "                 \"incremental\" to create an incremental backup 
image\n"
+      "Usage: bin/hbase backup create <type> <backup_root> [tables] 
[options]\n"     
+      + "  type            \"full\" to create a full backup image\n"
+      + "                  \"incremental\" to create an incremental backup 
image\n"
       + "  backup_root     Full path to store the backup image\n" 
-      + "Options:\n"
       + "  tables          If no tables (\"\") are specified, all tables are 
backed up.\n"
-      + "                  otherwise it is a comma separated list of tables.\n"
-      + "  -w              Number of parallel workers (MapReduce tasks).\n" 
-      + "  -b              Bandwith per one worker (MapReduce task) in MBs per 
sec\n" 
-      + "  -set            Name of backup set to use (mutually exclusive with 
[tables])" ;
+      + "                  otherwise it is a comma separated list of tables."; 
     
 
-  public static final String PROGRESS_CMD_USAGE = "Usage: hbase backup 
progress <backupId>\n"
+
+  public static final String PROGRESS_CMD_USAGE = "Usage: bin/hbase backup 
progress <backupId>\n"
       + "  backupId        Backup image id\n";
   public static final String NO_INFO_FOUND = "No info was found for backup id: 
";
 
-  public static final String DESCRIBE_CMD_USAGE = "Usage: hbase backup 
decsribe <backupId>\n"
+  public static final String DESCRIBE_CMD_USAGE = "Usage: bin/hbase backup 
describe <backupId>\n"
       + "  backupId        Backup image id\n";
 
   public static final String HISTORY_CMD_USAGE = 
-      "Usage: hbase backup history [-path BACKUP_ROOT] [-n N] [-t table]\n"
-      + "  -n N            Show up to N last backup sessions, default - 10\n"
-      + "  -path           Backup root path\n"
-      + "  -t table        Table name. If specified, only backup images which 
contain this table\n"
-      + "                  will be listed."  ;
+      "Usage: bin/hbase backup history [options]";
+
   
 
-  public static final String DELETE_CMD_USAGE = "Usage: hbase backup delete 
<backupId>\n"
+  public static final String DELETE_CMD_USAGE = "Usage: bin/hbase backup 
delete <backupId>\n"
       + "  backupId        Backup image id\n";
 
-  public static final String CANCEL_CMD_USAGE = "Usage: hbase backup cancel 
<backupId>\n"
+  public static final String CANCEL_CMD_USAGE = "Usage: bin/hbase backup 
cancel <backupId>\n"
       + "  backupId        Backup image id\n";
 
-  public static final String SET_CMD_USAGE = "Usage: hbase backup set COMMAND 
[name] [tables]\n"
+  public static final String SET_CMD_USAGE = "Usage: bin/hbase backup set 
COMMAND [name] [tables]\n"
       + "  name            Backup set name\n"
       + "  tables          If no tables (\"\") are specified, all tables will 
belong to the set.\n"
       + "                  Otherwise it is a comma separated list of tables.\n"
@@ -106,6 +103,8 @@ public final class BackupCommands {
       + "  describe        Describe backup set\n"
       + "  delete          Delete backup set\n";
 
+  public static final String USAGE_FOOTER = "";
+    
   public static abstract class Command extends Configured {
     CommandLine cmdline;
     
@@ -176,43 +175,56 @@ public final class BackupCommands {
     public void execute() throws IOException {
       super.execute();
       if (cmdline == null || cmdline.getArgs() == null) {
-        System.err.println("ERROR: missing arguments");
         printUsage();
         throw new IOException(INCORRECT_USAGE);
       }
       String[] args = cmdline.getArgs();
       if (args.length < 3 || args.length > 4) {
-        System.err.println("ERROR: wrong number of arguments: "+ args.length);
         printUsage();
         throw new IOException(INCORRECT_USAGE);
       }
 
       if (!BackupType.FULL.toString().equalsIgnoreCase(args[1])
           && !BackupType.INCREMENTAL.toString().equalsIgnoreCase(args[1])) {
-        System.err.println("ERROR: invalid backup type: "+ args[1]);
+        System.out.println("ERROR: invalid backup type: "+ args[1]);
         printUsage();
         throw new IOException(INCORRECT_USAGE);
       }
-            
+      if(!verifyPath(args[2])) {
+        System.out.println("ERROR: invalid backup destination: "+ args[2]);
+        printUsage();
+        throw new IOException(INCORRECT_USAGE);
+      }
+      
       String tables = null;
       Configuration conf = getConf() != null? getConf(): 
HBaseConfiguration.create();
 
+      // Check if we have both: backup set and list of tables
+      if(args.length == 4 && cmdline.hasOption(OPTION_SET)) {
+        System.out.println("ERROR: You can specify either backup set or list"+
+            " of tables, but not both");
+        printUsage();
+        throw new IOException(INCORRECT_USAGE);
+      }
+      
       // Check backup set
       String setName = null;
-      if (cmdline.hasOption("set")) {
-        setName = cmdline.getOptionValue("set");
+      if (cmdline.hasOption(OPTION_SET)) {
+        setName = cmdline.getOptionValue(OPTION_SET);
         tables = getTablesForSet(setName, conf);
 
         if (tables == null) {
-          System.err.println("ERROR: Backup set '" + setName+ "' is either 
empty or does not exist");
+          System.out.println("ERROR: Backup set '" + setName+ "' is either 
empty or does not exist");
           printUsage();
           throw new IOException(INCORRECT_USAGE);
         }
       } else {
         tables = (args.length == 4) ? args[3] : null;
       }
-      int bandwidth = cmdline.hasOption('b') ? 
Integer.parseInt(cmdline.getOptionValue('b')) : -1;
-      int workers = cmdline.hasOption('w') ? 
Integer.parseInt(cmdline.getOptionValue('w')) : -1;
+      int bandwidth = cmdline.hasOption(OPTION_BANDWIDTH) ? 
+          Integer.parseInt(cmdline.getOptionValue(OPTION_BANDWIDTH)) : -1;
+      int workers = cmdline.hasOption(OPTION_WORKERS) ? 
+          Integer.parseInt(cmdline.getOptionValue(OPTION_WORKERS)) : -1;
 
       try (Connection conn = ConnectionFactory.createConnection(getConf());
           HBaseBackupAdmin admin = new HBaseBackupAdmin(conn);) {
@@ -225,12 +237,24 @@ public final class BackupCommands {
         String backupId = admin.backupTables(request);
         System.out.println("Backup session "+ backupId+" finished. Status: 
SUCCESS");
       } catch (IOException e) {
-        System.err.println("Backup session finished. Status: FAILURE");
+        System.out.println("Backup session finished. Status: FAILURE");
         throw e;
       }
     }
     
-
+    private boolean verifyPath(String path) {
+      try{
+        Path p = new Path(path);
+        Configuration conf = getConf() != null? getConf(): 
+            HBaseConfiguration.create();
+        URI uri = p.toUri();
+        if(uri.getScheme() == null) return false;
+        FileSystem fs = FileSystem.get(uri, conf);
+        return true;
+      } catch(Exception e){
+        return false;
+      }
+    }
 
     private String getTablesForSet(String name, Configuration conf)
         throws IOException {
@@ -244,7 +268,19 @@ public final class BackupCommands {
 
     @Override
     protected void printUsage() {
-      System.err.println(CREATE_CMD_USAGE);      
+      System.out.println(CREATE_CMD_USAGE);
+      Options options = new Options();
+      options.addOption(OPTION_WORKERS, true, OPTION_WORKERS_DESC);
+      options.addOption(OPTION_BANDWIDTH, true, OPTION_BANDWIDTH_DESC);
+      options.addOption(OPTION_SET, true, OPTION_SET_RESTORE_DESC);
+
+      HelpFormatter helpFormatter = new HelpFormatter();
+      helpFormatter.setLeftPadding(2);
+      helpFormatter.setDescPadding(8);
+      helpFormatter.setWidth(100);
+      helpFormatter.setSyntaxPrefix("Options:");
+      helpFormatter.printHelp(" ", null, options, USAGE_FOOTER);  
+   
     }
   }
 
@@ -270,7 +306,7 @@ public final class BackupCommands {
       }
 
       if (args.length != 2) {
-        System.err.println("Only supports help message of a single command 
type");
+        System.out.println("ERROR: Only supports help message of a single 
command type");
         printUsage();
         throw new IOException(INCORRECT_USAGE);
       }
@@ -299,7 +335,7 @@ public final class BackupCommands {
 
     @Override
     protected void printUsage() {
-      System.err.println(USAGE);      
+      System.out.println(USAGE);           
     }
   }
 
@@ -314,13 +350,11 @@ public final class BackupCommands {
     public void execute() throws IOException {
       super.execute();
       if (cmdline == null || cmdline.getArgs() == null) {
-        System.err.println("ERROR: missing arguments");
         printUsage();
         throw new IOException(INCORRECT_USAGE);
       }
       String[] args = cmdline.getArgs();
       if (args.length != 2) {
-        System.err.println("ERROR: wrong number of arguments");
         printUsage();
         throw new IOException(INCORRECT_USAGE);
       }
@@ -331,7 +365,7 @@ public final class BackupCommands {
           final BackupSystemTable sysTable = new BackupSystemTable(conn);) {
         BackupInfo info = sysTable.readBackupInfo(backupId);
         if (info == null) {
-          System.err.println("ERROR: " + backupId + " does not exist");
+          System.out.println("ERROR: " + backupId + " does not exist");
           printUsage();
           throw new IOException(INCORRECT_USAGE);
         }
@@ -341,7 +375,7 @@ public final class BackupCommands {
 
     @Override
     protected void printUsage() {
-      System.err.println(DESCRIBE_CMD_USAGE);
+      System.out.println(DESCRIBE_CMD_USAGE);
     }
   }
 
@@ -375,7 +409,7 @@ public final class BackupCommands {
         BackupInfo info = sysTable.readBackupInfo(backupId);
         int progress = info == null? -1: info.getProgress();
         if(progress < 0){
-          System.err.println(NO_INFO_FOUND + backupId);
+          System.out.println(NO_INFO_FOUND + backupId);
         } else{
           System.out.println(backupId+" progress=" + progress+"%");
         }
@@ -384,7 +418,7 @@ public final class BackupCommands {
 
     @Override
     protected void printUsage() {
-      System.err.println(PROGRESS_CMD_USAGE);      
+      System.out.println(PROGRESS_CMD_USAGE);      
     }
   }
 
@@ -399,7 +433,6 @@ public final class BackupCommands {
     public void execute() throws IOException {
       super.execute();
       if (cmdline == null || cmdline.getArgs() == null || 
cmdline.getArgs().length < 2) {
-        System.err.println("No backup id(s) was specified");
         printUsage();
         throw new IOException(INCORRECT_USAGE);
       }
@@ -419,7 +452,7 @@ public final class BackupCommands {
 
     @Override
     protected void printUsage() {
-      System.err.println(DELETE_CMD_USAGE);      
+      System.out.println(DELETE_CMD_USAGE);      
     }
   }
 
@@ -506,40 +539,40 @@ public final class BackupCommands {
     private Path getBackupRootPath() throws IOException {
       String value = null;
       try{
-        value = cmdline.getOptionValue("path");
+        value = cmdline.getOptionValue(OPTION_PATH);
         if (value == null) return null;
         return new Path(value);
       } catch (IllegalArgumentException e) {
-        System.err.println("ERROR: Illegal argument for backup root path: "+ 
value);
+        System.out.println("ERROR: Illegal argument for backup root path: "+ 
value);
         printUsage();
         throw new IOException(INCORRECT_USAGE);
       }
     }
 
     private TableName getTableName() throws IOException {
-      String value = cmdline.getOptionValue("t"); 
+      String value = cmdline.getOptionValue(OPTION_TABLE); 
       if (value == null) return null;
       try{
         return TableName.valueOf(value);
       } catch (IllegalArgumentException e){
-        System.err.println("Illegal argument for table name: "+ value);
+        System.out.println("Illegal argument for table name: "+ value);
         printUsage();
         throw new IOException(INCORRECT_USAGE);
       }
     }
 
     private String getTableSetName() throws IOException {
-      String value = cmdline.getOptionValue("set"); 
+      String value = cmdline.getOptionValue(OPTION_SET); 
       return value;
     }
     
     private int parseHistoryLength() throws IOException {
-      String value = cmdline.getOptionValue("n");
+      String value = cmdline.getOptionValue(OPTION_RECORD_NUMBER);
       try{
         if (value == null) return DEFAULT_HISTORY_LENGTH;
         return Integer.parseInt(value);
       } catch(NumberFormatException e) {
-        System.err.println("Illegal argument for history length: "+ value);
+        System.out.println("Illegal argument for history length: "+ value);
         printUsage();
         throw new IOException(INCORRECT_USAGE);
       }
@@ -547,7 +580,19 @@ public final class BackupCommands {
 
     @Override
     protected void printUsage() {
-      System.err.println(HISTORY_CMD_USAGE);      
+      System.out.println(HISTORY_CMD_USAGE);
+      Options options = new Options();
+      options.addOption(OPTION_RECORD_NUMBER, true, OPTION_RECORD_NUMBER_DESC);
+      options.addOption(OPTION_PATH, true, OPTION_PATH_DESC);
+      options.addOption(OPTION_TABLE, true, OPTION_TABLE_DESC);
+      options.addOption(OPTION_SET, true, OPTION_SET_DESC);
+
+      HelpFormatter helpFormatter = new HelpFormatter();
+      helpFormatter.setLeftPadding(2);
+      helpFormatter.setDescPadding(8);
+      helpFormatter.setWidth(100);
+      helpFormatter.setSyntaxPrefix("Options:");
+      helpFormatter.printHelp(" ", null, options, USAGE_FOOTER);       
     }
   }
 
@@ -568,7 +613,6 @@ public final class BackupCommands {
       super.execute();      
       // Command-line must have at least one element
       if (cmdline == null || cmdline.getArgs() == null || 
cmdline.getArgs().length < 2) {
-        System.err.println("ERROR: Command line format");
         printUsage();
         throw new IOException(INCORRECT_USAGE);
       }
@@ -614,8 +658,6 @@ public final class BackupCommands {
 
     private void processSetDescribe(String[] args) throws IOException {
       if (args == null || args.length != 3) {
-        System.err.println("ERROR: Wrong number of args for 'set describe' 
command: "
-            + numOfArgs(args));
         printUsage();
         throw new IOException(INCORRECT_USAGE);
       }
@@ -635,8 +677,6 @@ public final class BackupCommands {
 
     private void processSetDelete(String[] args) throws IOException {
       if (args == null || args.length != 3) {
-        System.err.println("ERROR: Wrong number of args for 'set delete' 
command: "
-            + numOfArgs(args));
         printUsage();
         throw new IOException(INCORRECT_USAGE);
       }
@@ -655,8 +695,6 @@ public final class BackupCommands {
 
     private void processSetRemove(String[] args) throws IOException {
       if (args == null || args.length != 4) {
-        System.err.println("ERROR: Wrong number of args for 'set remove' 
command: "
-            + numOfArgs(args));
         printUsage();
         throw new IOException(INCORRECT_USAGE);
       }
@@ -672,8 +710,6 @@ public final class BackupCommands {
 
     private void processSetAdd(String[] args) throws IOException {
       if (args == null || args.length != 4) {
-        System.err.println("ERROR: Wrong number of args for 'set add' command: 
"
-            + numOfArgs(args));
         printUsage();
         throw new IOException(INCORRECT_USAGE);
       }
@@ -703,7 +739,7 @@ public final class BackupCommands {
       } else if (cmdStr.equals(SET_LIST_CMD)) {
         return BackupCommand.SET_LIST;
       } else {
-        System.err.println("ERROR: Unknown command for 'set' :" + cmdStr);
+        System.out.println("ERROR: Unknown command for 'set' :" + cmdStr);
         printUsage();
         throw new IOException(INCORRECT_USAGE);
       }
@@ -711,7 +747,7 @@ public final class BackupCommands {
 
     @Override
     protected void printUsage() {
-      System.err.println(SET_CMD_USAGE);
+      System.out.println(SET_CMD_USAGE);
     }
 
   }  

http://git-wip-us.apache.org/repos/asf/hbase/blob/33d76f13/hbase-server/src/main/java/org/apache/hadoop/hbase/util/AbstractHBaseTool.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/AbstractHBaseTool.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/AbstractHBaseTool.java
index 485eef7..2e4c167 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/AbstractHBaseTool.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/AbstractHBaseTool.java
@@ -49,7 +49,7 @@ public abstract class AbstractHBaseTool implements Tool {
 
   private static final Log LOG = LogFactory.getLog(AbstractHBaseTool.class);
 
-  private final Options options = new Options();
+  protected final Options options = new Options();
 
   protected Configuration conf = null;
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/33d76f13/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestBackupCommandLineTool.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestBackupCommandLineTool.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestBackupCommandLineTool.java
index 1e267d2..89e5da6 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestBackupCommandLineTool.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestBackupCommandLineTool.java
@@ -41,228 +41,228 @@ public class TestBackupCommandLineTool {
   @Test
   public void testBackupDriverDescribeHelp() throws Exception {
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     String[] args = new String[]{"describe", "-help" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
 
     String output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup decsribe <backupId>") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup describe <backupId>") 
>= 0);
 
     baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     args = new String[]{"describe", "-h" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
     
     output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup decsribe <backupId>") >= 
0);     
+    assertTrue(output.indexOf("Usage: bin/hbase backup describe <backupId>") 
>= 0);     
     
     baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     args = new String[]{"describe" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
 
     output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup decsribe <backupId>") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup describe <backupId>") 
>= 0);
   }
 
   @Test
   public void testBackupDriverCreateHelp() throws Exception {
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     String[] args = new String[]{"create", "-help" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
     
     String output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup create") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup create") >= 0);
     
     baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     args = new String[]{"create", "-h" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
     
     output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup create") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup create") >= 0);
     
     baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     args = new String[]{"create"}; 
     ToolRunner.run(conf, new BackupDriver(), args);
     
     output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup create") >= 0);    
+    assertTrue(output.indexOf("Usage: bin/hbase backup create") >= 0);    
   }
 
   @Test
   public void testBackupDriverHistoryHelp () throws Exception {
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     String[] args = new String[]{"history", "-help" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
 
     String output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup history") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup history") >= 0);
 
     baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     args = new String[]{"history", "-h" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
 
     output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup history") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup history") >= 0);
     
   }
 
   @Test
   public void testBackupDriverDeleteHelp () throws Exception {
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     String[] args = new String[]{"delete", "-help" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
 
     String output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup delete") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup delete") >= 0);
 
     baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     args = new String[]{"delete", "-h" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
 
     output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup delete") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup delete") >= 0);
     
     baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     args = new String[]{"delete" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
 
     output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup delete") >= 0);    
+    assertTrue(output.indexOf("Usage: bin/hbase backup delete") >= 0);    
   }
 
   @Test
   public void testBackupDriverProgressHelp() throws Exception {
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     String[] args = new String[]{"progress", "-help" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
     
     String output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup progress") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup progress") >= 0);
     
     baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     args = new String[]{"progress", "-h" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
     
     output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup progress") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup progress") >= 0);
   }
 
   @Test
   public void testBackupDriverSetHelp () throws Exception {
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     String[] args = new String[]{"set", "-help" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
 
     String output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup set") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup set") >= 0);
     
     baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     args = new String[]{"set", "-h" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
     
     output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup set") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup set") >= 0);
 
     baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     args = new String[]{"set"}; 
     ToolRunner.run(conf, new BackupDriver(), args);
     
     output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup set") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup set") >= 0);
     
   }
   
   @Test
   public void testBackupDriverHelp () throws Exception {
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     String[] args = new String[]{"-help" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
 
     String output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup") >= 0);
     
     baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     args = new String[]{"-h" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
     
     output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup") >= 0);
   }
   
   @Test
   public void testRestoreDriverHelp () throws Exception {
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     String[] args = new String[]{"-help" }; 
     ToolRunner.run(conf, new RestoreDriver(), args);
 
     String output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase restore") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase restore") >= 0);
     
     baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     args = new String[]{"-h" }; 
     ToolRunner.run(conf, new RestoreDriver(), args);
     
     output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase restore") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase restore") >= 0);
   }
   
   @Test
   public void testBackupDriverUnrecognizedCommand () throws Exception {
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     String[] args = new String[]{"command" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
 
     String output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup") >= 0);
     
     baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     args = new String[]{"command" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
     
     output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup") >= 0);
   }
   
   
@@ -270,117 +270,143 @@ public class TestBackupCommandLineTool {
   @Test
   public void testBackupDriverUnrecognizedOption () throws Exception {
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     String[] args = new String[]{"create", "-xx" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
 
     String output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup") >= 0);
     
     baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     args = new String[]{"describe", "-xx" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
     
     output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup") >= 0);
     
     baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     args = new String[]{"history", "-xx" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
     
     output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup") >= 0);
     
     baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     args = new String[]{"delete", "-xx" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
     
     output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup") >= 0);
     
     baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     args = new String[]{"set", "-xx" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
     
     output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup") >= 0);
   }
   
   @Test
   public void testRestoreDriverUnrecognizedOption () throws Exception {
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     String[] args = new String[]{"-xx" }; 
     ToolRunner.run(conf, new RestoreDriver(), args);
 
     String output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase restore") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase restore") >= 0);
      
   }
   
   @Test
   public void testBackupDriverCreateWrongArgNumber () throws Exception {
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     String[] args = new String[]{"create" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
 
     String output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup create") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup create") >= 0);
     
     baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     args = new String[]{"create", "22" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
     
     output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup create") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup create") >= 0);
     
     baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     args = new String[]{"create", "22", "22", "22", "22", "22" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
     
     output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup create") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup create") >= 0);
   }
   
   @Test
   public void testBackupDriverDeleteWrongArgNumber () throws Exception {
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     String[] args = new String[]{"delete" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
 
     String output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup delete") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup delete") >= 0);
     
   }
     
   @Test
   public void testBackupDriverHistoryWrongArgs () throws Exception {
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     String[] args = new String[]{"history", "-n", "xx" }; 
     ToolRunner.run(conf, new BackupDriver(), args);
 
     String output = baos.toString();
     System.out.println(baos.toString());
-    assertTrue(output.indexOf("Usage: hbase backup history") >= 0);
+    assertTrue(output.indexOf("Usage: bin/hbase backup history") >= 0);
+    
+  }
+  
+  @Test
+  public void testBackupDriverWrongBackupDestination () throws Exception {
+    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+    System.setOut(new PrintStream(baos));
+    String[] args = new String[]{"create", "full", "clicks" }; 
+    ToolRunner.run(conf, new BackupDriver(), args);
+
+    String output = baos.toString();
+    System.out.println(baos.toString());
+    assertTrue(output.indexOf("ERROR: invalid backup destination") >= 0);
+    
+  }
+  
+  @Test
+  public void testBackupDriverBackupSetAndList () throws Exception {
+    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+    System.setOut(new PrintStream(baos));
+    String[] args = new String[]{"create", "full", "file:/", "clicks", "-s", 
"s" }; 
+    ToolRunner.run(conf, new BackupDriver(), args);
+
+    String output = baos.toString();
+    System.out.println(baos.toString());
+    assertTrue(output.indexOf("ERROR: You can specify either backup set or 
list") >= 0);
     
   }
 }

http://git-wip-us.apache.org/repos/asf/hbase/blob/33d76f13/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDelete.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDelete.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDelete.java
index d3c451d..a09dd0c 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDelete.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDelete.java
@@ -28,7 +28,6 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.impl.BackupSystemTable;
 import org.apache.hadoop.hbase.testclassification.LargeTests;

http://git-wip-us.apache.org/repos/asf/hbase/blob/33d76f13/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDescribe.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDescribe.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDescribe.java
index 0a2f2e1..b7d41e0 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDescribe.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestBackupDescribe.java
@@ -57,7 +57,7 @@ public class TestBackupDescribe extends TestBackupBase {
     assertTrue(ret < 0);
 
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(baos));
+    System.setOut(new PrintStream(baos));
     args = new String[]{"progress" };
     ToolRunner.run(TEST_UTIL.getConfiguration(), new BackupDriver(), args);
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/33d76f13/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestBackupShowHistory.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestBackupShowHistory.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestBackupShowHistory.java
index 4594338..d023406 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestBackupShowHistory.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestBackupShowHistory.java
@@ -82,7 +82,7 @@ public class TestBackupShowHistory extends TestBackupBase {
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
     System.setOut(new PrintStream(baos));
 
-    String[] args = new String[]{"history",  "-n", "10", "-path", 
BACKUP_ROOT_DIR }; 
+    String[] args = new String[]{"history",  "-n", "10", "-p", BACKUP_ROOT_DIR 
}; 
     // Run backup
     int ret = ToolRunner.run(conf1, new BackupDriver(), args);
     assertTrue(ret == 0);
@@ -135,8 +135,8 @@ public class TestBackupShowHistory extends TestBackupBase {
     }
     assertTrue(success);
     
-    args = new String[]{"history",  "-n", "10", "-path", BACKUP_ROOT_DIR,
-        "-t", "table1", "-set", "backup"}; 
+    args = new String[]{"history",  "-n", "10", "-p", BACKUP_ROOT_DIR,
+        "-t", "table1", "-s", "backup"}; 
     // Run backup
     ret = ToolRunner.run(conf1, new BackupDriver(), args);
     assertTrue(ret == 0);

http://git-wip-us.apache.org/repos/asf/hbase/blob/33d76f13/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackup.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackup.java 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackup.java
index e9aa478..94b5bc2 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackup.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackup.java
@@ -19,20 +19,16 @@ package org.apache.hadoop.hbase.backup;
 
 import static org.junit.Assert.assertTrue;
 
-import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.backup.impl.BackupSystemTable;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.util.ToolRunner;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
-import com.google.common.collect.Lists;
-
 @Category(LargeTests.class)
 public class TestFullBackup extends TestBackupBase {
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/33d76f13/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackupSet.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackupSet.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackupSet.java
index db9da3b..1c67aeb 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackupSet.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackupSet.java
@@ -59,7 +59,7 @@ public class TestFullBackupSet extends TestBackupBase {
       assertTrue(names.size() == 1);
       assertTrue(names.get(0).equals(table1));
 
-      String[] args = new String[] { "create", "full", BACKUP_ROOT_DIR, 
"-set", name };
+      String[] args = new String[] { "create", "full", BACKUP_ROOT_DIR, "-s", 
name };
       // Run backup
       int ret = ToolRunner.run(conf1, new BackupDriver(), args);
       assertTrue(ret == 0);
@@ -73,7 +73,7 @@ public class TestFullBackupSet extends TestBackupBase {
       
       // Restore from set into other table
       args = new String[]{BACKUP_ROOT_DIR, backupId, 
-          "-set", name, table1_restore.getNameAsString(), "-overwrite" }; 
+          "-s", name, "-m", table1_restore.getNameAsString(), "-o" }; 
       // Run backup
       ret = ToolRunner.run(conf1, new RestoreDriver(), args);
       assertTrue(ret == 0);
@@ -95,7 +95,7 @@ public class TestFullBackupSet extends TestBackupBase {
 
     LOG.info("test full backup, backup set does not exist");    
     String name = "name1";    
-    String[] args = new String[]{"create", "full", BACKUP_ROOT_DIR, "-set", 
name }; 
+    String[] args = new String[]{"create", "full", BACKUP_ROOT_DIR, "-s", name 
}; 
     // Run backup
     int ret = ToolRunner.run(conf1, new BackupDriver(), args);
     assertTrue(ret != 0);

http://git-wip-us.apache.org/repos/asf/hbase/blob/33d76f13/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackupSetRestoreSet.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackupSetRestoreSet.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackupSetRestoreSet.java
index 4a14061..c533b0d 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackupSetRestoreSet.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestFullBackupSetRestoreSet.java
@@ -54,7 +54,7 @@ public class TestFullBackupSetRestoreSet extends 
TestBackupBase {
       assertTrue(names.size() == 1);
       assertTrue(names.get(0).equals(table1));
 
-      String[] args = new String[] { "create", "full", BACKUP_ROOT_DIR, 
"-set", name };
+      String[] args = new String[] { "create", "full", BACKUP_ROOT_DIR, "-s", 
name };
       // Run backup
       int ret = ToolRunner.run(conf1, new BackupDriver(), args);
       assertTrue(ret == 0);
@@ -68,8 +68,8 @@ public class TestFullBackupSetRestoreSet extends 
TestBackupBase {
 
       // Restore from set into other table
       args =
-          new String[] { BACKUP_ROOT_DIR, backupId, "-set", name, 
table1_restore.getNameAsString(),
-              "-overwrite" };
+          new String[] { BACKUP_ROOT_DIR, backupId, "-s", name, "-m", 
table1_restore.getNameAsString(),
+              "-o" };
       // Run backup
       ret = ToolRunner.run(conf1, new RestoreDriver(), args);
       assertTrue(ret == 0);
@@ -98,7 +98,7 @@ public class TestFullBackupSetRestoreSet extends 
TestBackupBase {
       assertTrue(names.size() == 1);
       assertTrue(names.get(0).equals(table1));
 
-      String[] args = new String[] { "create", "full", BACKUP_ROOT_DIR, 
"-set", name };
+      String[] args = new String[] { "create", "full", BACKUP_ROOT_DIR, "-s", 
name };
       // Run backup
       int ret = ToolRunner.run(conf1, new BackupDriver(), args);
       assertTrue(ret == 0);
@@ -111,7 +111,7 @@ public class TestFullBackupSetRestoreSet extends 
TestBackupBase {
       TEST_UTIL.deleteTable(table1);
 
       // Restore from set into other table
-      args = new String[] { BACKUP_ROOT_DIR, backupId, "-set", name, 
"-overwrite" };
+      args = new String[] { BACKUP_ROOT_DIR, backupId, "-s", name, "-o" };
       // Run backup
       ret = ToolRunner.run(conf1, new RestoreDriver(), args);
       assertTrue(ret == 0);

http://git-wip-us.apache.org/repos/asf/hbase/blob/33d76f13/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestFullRestore.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestFullRestore.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestFullRestore.java
index a01801d..bd2bfff 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestFullRestore.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestFullRestore.java
@@ -34,31 +34,6 @@ public class TestFullRestore extends TestBackupBase {
 
   private static final Log LOG = LogFactory.getLog(TestFullRestore.class);
 
-  /*
-  void restoreTables(String backupRootDir,
-      String backupId, boolean check, boolean autoRestore, List<TableName> 
sTable,
-      List<TableName> tTable, boolean isOverwrite) throws IOException {
-    Connection conn = null;
-    HBaseAdmin admin = null;
-    RestoreRequest request = new RestoreRequest();
-    
request.setAutoRestore(autoRestore).setDependencyCheckOnly(check).setOverwrite(isOverwrite);
-    request.setBackupId(backupId).setBackupRootDir(backupRootDir);
-    request.setTableList(sTable).setTargetTableList(tTable);
-    try {
-      conn = ConnectionFactory.createConnection(conf1);
-      admin = (HBaseAdmin) conn.getAdmin();
-      admin.restoreTablesSync(request);
-    } finally {
-      if (admin != null) {
-        admin.close();
-      }
-      if (conn != null) {
-        conn.close();
-      }
-    }
-  }
-  */
-
   /**
    * Verify that a single table is restored to a new table
    * @throws Exception
@@ -97,7 +72,7 @@ public class TestFullRestore extends TestBackupBase {
     assertTrue(checkSucceeded(backupId));
     //restore <backup_root_path> <backup_id> <tables> [tableMapping]
     String[] args = new String[]{BACKUP_ROOT_DIR, backupId, 
-        table1.getNameAsString(), table1_restore.getNameAsString() }; 
+        table1.getNameAsString(), "-m", table1_restore.getNameAsString() }; 
     // Run backup
     int ret = ToolRunner.run(conf1, new RestoreDriver(), args);
 
@@ -150,7 +125,7 @@ public class TestFullRestore extends TestBackupBase {
     //restore <backup_root_path> <backup_id> <tables> [tableMapping]
     String[] args = new String[]{BACKUP_ROOT_DIR, backupId, 
         StringUtils.join(restore_tableset, ","), 
-        StringUtils.join(tablemap, ",") }; 
+        "-m", StringUtils.join(tablemap, ",") }; 
     // Run backup
     int ret = ToolRunner.run(conf1, new RestoreDriver(), args);
 
@@ -199,7 +174,7 @@ public class TestFullRestore extends TestBackupBase {
     TableName[] tableset = new TableName[] { table1 };
     //restore <backup_root_path> <backup_id> <tables> [tableMapping]
     String[] args = new String[]{BACKUP_ROOT_DIR, backupId, 
-        StringUtils.join(tableset, ","), "-overwrite" }; 
+        StringUtils.join(tableset, ","), "-o" }; 
     // Run restore
     int ret = ToolRunner.run(conf1, new RestoreDriver(), args);
     assertTrue(ret==0);   
@@ -243,7 +218,7 @@ public class TestFullRestore extends TestBackupBase {
     TableName[] restore_tableset = new TableName[] { table2, table3 };
     //restore <backup_root_path> <backup_id> <tables> [tableMapping]
     String[] args = new String[]{BACKUP_ROOT_DIR, backupId, 
-        StringUtils.join(restore_tableset, ","), "-overwrite" }; 
+        StringUtils.join(restore_tableset, ","), "-o" }; 
     // Run backup
     int ret = ToolRunner.run(conf1, new RestoreDriver(), args);
 
@@ -294,7 +269,7 @@ public class TestFullRestore extends TestBackupBase {
     TableName[] tablemap = new TableName[] { table1_restore };
     String[] args = new String[]{BACKUP_ROOT_DIR, backupId, 
         StringUtils.join(tableset, ","), 
-        StringUtils.join(tablemap, ",") }; 
+        "-m", StringUtils.join(tablemap, ",") }; 
     // Run restore
     int ret = ToolRunner.run(conf1, new RestoreDriver(), args);
     assertTrue(ret != 0);    
@@ -339,7 +314,7 @@ public class TestFullRestore extends TestBackupBase {
     TableName[] tablemap = new TableName[] { table2_restore, table3_restore };
     String[] args = new String[]{BACKUP_ROOT_DIR, backupId, 
         StringUtils.join(restore_tableset, ","), 
-        StringUtils.join(tablemap, ",") }; 
+        "-m", StringUtils.join(tablemap, ",") }; 
     // Run restore
     int ret = ToolRunner.run(conf1, new RestoreDriver(), args);
     assertTrue(ret != 0); 

http://git-wip-us.apache.org/repos/asf/hbase/blob/33d76f13/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackup.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackup.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackup.java
index 705a066..9a845ba 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackup.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackup.java
@@ -22,13 +22,10 @@ import static org.junit.Assert.assertTrue;
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.List;
-import java.util.Map.Entry;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.MiniHBaseCluster;

http://git-wip-us.apache.org/repos/asf/hbase/blob/33d76f13/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestRemoteBackup.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestRemoteBackup.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestRemoteBackup.java
index 42f0ee7..2bc9aa0 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestRemoteBackup.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestRemoteBackup.java
@@ -31,7 +31,6 @@ import 
org.apache.hadoop.hbase.snapshot.MobSnapshotTestingUtils;
 import org.apache.hadoop.hbase.snapshot.SnapshotTestingUtils;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.hadoop.hbase.util.Threads;
 import org.hamcrest.CoreMatchers;
 import org.junit.Assert;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/hbase/blob/33d76f13/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestSystemTableSnapshot.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestSystemTableSnapshot.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestSystemTableSnapshot.java
index 0c035db..0979ef8 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestSystemTableSnapshot.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/TestSystemTableSnapshot.java
@@ -18,11 +18,6 @@
 
 package org.apache.hadoop.hbase.backup;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.util.List;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hbase.TableName;
@@ -32,8 +27,6 @@ import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
-import com.google.common.collect.Lists;
-
 @Category(LargeTests.class)
 public class TestSystemTableSnapshot extends TestBackupBase {
 

Reply via email to