|
@@ -1211,6 +1211,59 @@ public class TestYarnCLI {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Test
|
|
|
+ public void testMoveApplicationAcrossQueuesWithNewCommand() throws Exception {
|
|
|
+ ApplicationCLI cli = createAndGetAppCLI();
|
|
|
+ ApplicationId applicationId = ApplicationId.newInstance(1234, 5);
|
|
|
+
|
|
|
+ ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
|
|
|
+ applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
|
|
+ "user", "queue", "appname", "host", 124, null,
|
|
|
+ YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0,
|
|
|
+ FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
|
|
+ when(client.getApplicationReport(any(ApplicationId.class)))
|
|
|
+ .thenReturn(newApplicationReport2);
|
|
|
+ int result = cli.run(new String[]{"application", "-appId",
|
|
|
+ applicationId.toString(), "-changeQueue", "targetqueue"});
|
|
|
+ assertEquals(0, result);
|
|
|
+ verify(client, times(0)).moveApplicationAcrossQueues(
|
|
|
+ any(ApplicationId.class), any(String.class));
|
|
|
+ verify(sysOut)
|
|
|
+ .println("Application " + applicationId + " has already finished ");
|
|
|
+
|
|
|
+ ApplicationReport newApplicationReport = ApplicationReport.newInstance(
|
|
|
+ applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
|
|
|
+ "user", "queue", "appname", "host", 124, null,
|
|
|
+ YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
|
|
|
+ FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
|
|
|
+ when(client.getApplicationReport(any(ApplicationId.class)))
|
|
|
+ .thenReturn(newApplicationReport);
|
|
|
+ result = cli.run(new String[]{"application", "-appId",
|
|
|
+ applicationId.toString(), "-changeQueue", "targetqueue"});
|
|
|
+ assertEquals(0, result);
|
|
|
+ verify(client).moveApplicationAcrossQueues(any(ApplicationId.class),
|
|
|
+ any(String.class));
|
|
|
+ verify(sysOut).println(
|
|
|
+ "Moving application application_1234_0005 to queue targetqueue");
|
|
|
+ verify(sysOut).println("Successfully completed move.");
|
|
|
+
|
|
|
+ doThrow(new ApplicationNotFoundException(
|
|
|
+ "Application with id '" + applicationId + "' doesn't exist in RM."))
|
|
|
+ .when(client)
|
|
|
+ .moveApplicationAcrossQueues(applicationId, "targetqueue");
|
|
|
+ cli = createAndGetAppCLI();
|
|
|
+ try {
|
|
|
+ result = cli.run(new String[]{"application", "-appId",
|
|
|
+ applicationId.toString(), "-changeQueue", "targetqueue"});
|
|
|
+ Assert.fail();
|
|
|
+ } catch (Exception ex) {
|
|
|
+ Assert.assertTrue(ex instanceof ApplicationNotFoundException);
|
|
|
+ Assert.assertEquals(
|
|
|
+ "Application with id '" + applicationId + "' doesn't exist in RM.",
|
|
|
+ ex.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Test
|
|
|
public void testListClusterNodes() throws Exception {
|
|
|
List<NodeReport> nodeReports = new ArrayList<NodeReport>();
|
|
@@ -1972,6 +2025,12 @@ public class TestYarnCLI {
|
|
|
pw.println(" -appTypes <Types> Works with -list to filter applications");
|
|
|
pw.println(" based on input comma-separated list of");
|
|
|
pw.println(" application types.");
|
|
|
+ pw.println(" -changeQueue <Queue Name> Moves application to a new queue.");
|
|
|
+ pw.println(" ApplicationId can be passed using 'appId'");
|
|
|
+ pw.println(" option. 'movetoqueue' command is");
|
|
|
+ pw.println(" deprecated, this new command");
|
|
|
+ pw.println(" 'changeQueue' performs same");
|
|
|
+ pw.println(" functionality.");
|
|
|
pw.println(" -help Displays help for all commands.");
|
|
|
pw.println(" -kill <Application ID> Kills the application. Set of");
|
|
|
pw.println(" applications can be provided separated");
|
|
@@ -1983,7 +2042,8 @@ public class TestYarnCLI {
|
|
|
pw.println(" and -appTags to filter applications based");
|
|
|
pw.println(" on application tag.");
|
|
|
pw.println(" -movetoqueue <Application ID> Moves the application to a different");
|
|
|
- pw.println(" queue.");
|
|
|
+ pw.println(" queue. Deprecated command. Use");
|
|
|
+ pw.println(" 'changeQueue' instead.");
|
|
|
pw.println(" -queue <Queue Name> Works with the movetoqueue command to");
|
|
|
pw.println(" specify which queue to move an");
|
|
|
pw.println(" application to.");
|