diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupCommands.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupCommands.java index 1884788..2358ec5 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupCommands.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupCommands.java @@ -326,13 +326,18 @@ public final class BackupCommands { try (final Connection conn = ConnectionFactory.createConnection(conf); final BackupAdmin admin = conn.getAdmin().getBackupAdmin();) { BackupInfo info = admin.getBackupInfo(backupId); + if (info == null) { + System.err.println("ERROR: " + backupId + " does not exist"); + printUsage(); + throw new IOException(INCORRECT_USAGE); + } System.out.println(info.getShortDescription()); } } @Override protected void printUsage() { - System.err.println(DESCRIBE_CMD_USAGE); + System.err.println(DESCRIBE_CMD_USAGE); } } @@ -353,13 +358,12 @@ public final class BackupCommands { + "will retrieve the most recent (ongoing) sessions"); } String[] args = cmdline.getArgs(); - if (args.length > 2) { + if (args.length != 2) { System.err.println("ERROR: wrong number of arguments: " + args.length); printUsage(); throw new IOException(INCORRECT_USAGE); } - - + String backupId = args == null ? null : args[1]; Configuration conf = getConf() != null? getConf(): HBaseConfiguration.create(); try(final Connection conn = ConnectionFactory.createConnection(conf); 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 8330ecb..6516c8b 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 @@ -53,10 +53,10 @@ public class TestBackupCommandLineTool { System.setErr(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 ") >= 0); + assertTrue(output.indexOf("Usage: hbase backup decsribe ") >= 0); } @Test @@ -123,7 +123,7 @@ public class TestBackupCommandLineTool { } @Test - public void testBackupDriverProgressHelp () throws Exception { + public void testBackupDriverProgressHelp() throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); System.setErr(new PrintStream(baos)); String[] args = new String[]{"progress", "-help" }; @@ -141,6 +141,16 @@ public class TestBackupCommandLineTool { output = baos.toString(); System.out.println(baos.toString()); assertTrue(output.indexOf("Usage: hbase backup progress") >= 0); + + baos = new ByteArrayOutputStream(); + System.setErr(new PrintStream(baos)); + args = new String[]{"progress" }; + ToolRunner.run(conf, new BackupDriver(), args); + + output = baos.toString(); + System.out.println(baos.toString()); + assertTrue(output.indexOf("Usage: hbase backup progress") >= 0); + } @Test 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 af377c3..8d8e0d3 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 @@ -43,8 +43,7 @@ public class TestBackupDescribe extends TestBackupBase { private static final Log LOG = LogFactory.getLog(TestBackupDescribe.class); /** - * Verify that full backup is created on a single table with data correctly. Verify that describe - * works as expected + * Verify that describe works as expected if incorrect backup Id is supplied * @throws Exception */ @Test @@ -52,16 +51,9 @@ public class TestBackupDescribe extends TestBackupBase { LOG.info("test backup describe on a single table with data"); - List tableList = Lists.newArrayList(table1); - String backupId = fullTableBackup(tableList); - - LOG.info("backup complete"); - assertTrue(checkSucceeded(backupId)); - - - BackupInfo info = getBackupAdmin().getBackupInfo(backupId); - assertTrue(info.getState() == BackupState.COMPLETE); - + String[] args = new String[]{"describe", "backup_2" }; + int ret = ToolRunner.run(conf1, new BackupDriver(), args); + assertTrue(ret < 0); } @Test @@ -83,13 +75,16 @@ public class TestBackupDescribe extends TestBackupBase { LOG.info("backup complete"); assertTrue(checkSucceeded(backupId)); + BackupInfo info = getBackupAdmin().getBackupInfo(backupId); + assertTrue(info.getState() == BackupState.COMPLETE); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); System.setOut(new PrintStream(baos)); String[] args = new String[]{"describe", backupId }; // Run backup int ret = ToolRunner.run(conf1, new BackupDriver(), args); - assertTrue(ret == 0); + assertTrue(ret == 0); String response = baos.toString(); assertTrue(response.indexOf(backupId) > 0); assertTrue(response.indexOf("COMPLETE") > 0);