You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by vi...@apache.org on 2014/11/07 20:56:47 UTC

hadoop git commit: YARN-2827. Fixed bugs in "yarn queue" CLI. Contributed by Wangda Tan.

Repository: hadoop
Updated Branches:
  refs/heads/trunk 2ac1be7de -> a71e9302a


YARN-2827. Fixed bugs in "yarn queue" CLI. Contributed by Wangda Tan.


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

Branch: refs/heads/trunk
Commit: a71e9302a9dbbb702c8c50a4fdaa508f912561d6
Parents: 2ac1be7
Author: Vinod Kumar Vavilapalli <vi...@apache.org>
Authored: Fri Nov 7 11:56:11 2014 -0800
Committer: Vinod Kumar Vavilapalli <vi...@apache.org>
Committed: Fri Nov 7 11:56:11 2014 -0800

----------------------------------------------------------------------
 hadoop-yarn-project/CHANGES.txt                 |  2 +
 .../apache/hadoop/yarn/client/cli/QueueCLI.java | 40 +++++++++++---------
 .../hadoop/yarn/client/cli/TestYarnCLI.java     | 21 +++++++++-
 3 files changed, 43 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/a71e9302/hadoop-yarn-project/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt
index c48fb4f..a26bfb2 100644
--- a/hadoop-yarn-project/CHANGES.txt
+++ b/hadoop-yarn-project/CHANGES.txt
@@ -898,6 +898,8 @@ Release 2.6.0 - UNRELEASED
     not mapped to queues by making default capacities per label to be zero.
     (Wangda Tan via vinodkv)
 
+    YARN-2827. Fixed bugs in "yarn queue" CLI. (Wangda Tan via vinodkv)
+
 Release 2.5.2 - UNRELEASED
 
   INCOMPATIBLE CHANGES

http://git-wip-us.apache.org/repos/asf/hadoop/blob/a71e9302/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/QueueCLI.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/QueueCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/QueueCLI.java
index 3c74f13..4d50e7f 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/QueueCLI.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/QueueCLI.java
@@ -52,16 +52,11 @@ public class QueueCLI extends YarnCLI {
   @Override
   public int run(String[] args) throws Exception {
     Options opts = new Options();
-    int exitCode = -1;
-    if (args.length > 0) {
-      opts.addOption(STATUS_CMD, true,
-          "List queue information about given queue.");
-      opts.addOption(HELP_CMD, false, "Displays help for all commands.");
-      opts.getOption(STATUS_CMD).setArgName("Queue Name");
-    } else {
-      syserr.println("Invalid Command usage. Command must start with 'queue'");
-      return exitCode;
-    }
+
+    opts.addOption(STATUS_CMD, true,
+        "List queue information about given queue.");
+    opts.addOption(HELP_CMD, false, "Displays help for all commands.");
+    opts.getOption(STATUS_CMD).setArgName("Queue Name");
 
     CommandLine cliParser = null;
     try {
@@ -69,23 +64,23 @@ public class QueueCLI extends YarnCLI {
     } catch (MissingArgumentException ex) {
       sysout.println("Missing argument for options");
       printUsage(opts);
-      return exitCode;
+      return -1;
     }
 
     if (cliParser.hasOption(STATUS_CMD)) {
-      if (args.length != 3) {
+      if (args.length != 2) {
         printUsage(opts);
-        return exitCode;
+        return -1;
       }
-      listQueue(cliParser.getOptionValue(STATUS_CMD));
+      return listQueue(cliParser.getOptionValue(STATUS_CMD));
     } else if (cliParser.hasOption(HELP_CMD)) {
       printUsage(opts);
       return 0;
     } else {
       syserr.println("Invalid Command Usage : ");
       printUsage(opts);
+      return -1;
     }
-    return 0;
   }
 
   /**
@@ -105,13 +100,22 @@ public class QueueCLI extends YarnCLI {
    * @throws YarnException
    * @throws IOException
    */
-  private void listQueue(String queueName) throws YarnException, IOException {
+  private int listQueue(String queueName) throws YarnException, IOException {
+    int rc;
     PrintWriter writer = new PrintWriter(sysout);
 
     QueueInfo queueInfo = client.getQueueInfo(queueName);
-    writer.println("Queue Information : ");
-    printQueueInfo(writer, queueInfo);
+    if (queueInfo != null) {
+      writer.println("Queue Information : ");
+      printQueueInfo(writer, queueInfo);
+      rc = 0;
+    } else {
+      writer.println("Cannot get queue from RM by queueName = " + queueName
+          + ", please check.");
+      rc = -1;
+    }
     writer.flush();
+    return rc;
   }
 
   private void printQueueInfo(PrintWriter writer, QueueInfo queueInfo) {

http://git-wip-us.apache.org/repos/asf/hadoop/blob/a71e9302/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java
index adb58e8..d87277a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java
@@ -1247,7 +1247,7 @@ public class TestYarnCLI {
     QueueInfo queueInfo = QueueInfo.newInstance("queueA", 0.4f, 0.8f, 0.5f,
         null, null, QueueState.RUNNING, nodeLabels, "GPU");
     when(client.getQueueInfo(any(String.class))).thenReturn(queueInfo);
-    int result = cli.run(new String[] { "queue", "-status", "queueA" });
+    int result = cli.run(new String[] { "-status", "queueA" });
     assertEquals(0, result);
     verify(client).getQueueInfo("queueA");
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -1271,7 +1271,7 @@ public class TestYarnCLI {
     QueueInfo queueInfo = QueueInfo.newInstance("queueA", 0.4f, 0.8f, 0.5f,
         null, null, QueueState.RUNNING, null, null);
     when(client.getQueueInfo(any(String.class))).thenReturn(queueInfo);
-    int result = cli.run(new String[] { "queue", "-status", "queueA" });
+    int result = cli.run(new String[] { "-status", "queueA" });
     assertEquals(0, result);
     verify(client).getQueueInfo("queueA");
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -1288,6 +1288,23 @@ public class TestYarnCLI {
     String queueInfoStr = baos.toString("UTF-8");
     Assert.assertEquals(queueInfoStr, sysOutStream.toString());
   }
+  
+  @Test
+  public void testGetQueueInfoWithNonExistedQueue() throws Exception {
+    String queueName = "non-existed-queue";
+    QueueCLI cli = createAndGetQueueCLI();
+    when(client.getQueueInfo(any(String.class))).thenReturn(null);
+    int result = cli.run(new String[] { "-status", queueName });
+    assertEquals(-1, result);;
+    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+    PrintWriter pw = new PrintWriter(baos);
+    pw.println("Cannot get queue from RM by queueName = " + queueName
+        + ", please check.");
+    pw.close();
+    String queueInfoStr = baos.toString("UTF-8");
+    Assert.assertEquals(queueInfoStr, sysOutStream.toString());
+  }
+
 
   private void verifyUsageInfo(YarnCLI cli) throws Exception {
     cli.setSysErrPrintStream(sysErr);