http://git-wip-us.apache.org/repos/asf/hadoop/blob/cf23f2c2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java index afe95cf..91388db 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java @@ -473,8 +473,8 @@ public class TestRMAppTransitions { application = testCreateAppFinishing(submissionContext); } // RUNNING/FINISHING => FINISHED event RMAppEventType.ATTEMPT_FINISHED - RMAppEvent finishedEvent = new RMAppFinishedAttemptEvent( - application.getApplicationId(), diagnostics); + RMAppEvent finishedEvent = new RMAppEvent(application.getApplicationId(), + RMAppEventType.ATTEMPT_FINISHED, diagnostics); application.handle(finishedEvent); assertAppState(RMAppState.FINISHED, application); assertTimesAtFinish(application); @@ -548,8 +548,9 @@ public class TestRMAppTransitions { RMApp application = createNewTestApp(null); // NEW => KILLED event RMAppEventType.KILL - RMAppEvent event = - new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL); + RMAppEvent event = + new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL, + "Application killed by user."); application.handle(event); rmDispatcher.await(); sendAppUpdateSavedEvent(application); @@ -566,8 +567,8 @@ public class TestRMAppTransitions { RMApp application = createNewTestApp(null); // NEW => FAILED event RMAppEventType.APP_REJECTED String rejectedText = "Test Application Rejected"; - RMAppEvent event = - new RMAppRejectedEvent(application.getApplicationId(), rejectedText); + RMAppEvent event = new RMAppEvent(application.getApplicationId(), + RMAppEventType.APP_REJECTED, rejectedText); application.handle(event); rmDispatcher.await(); sendAppUpdateSavedEvent(application); @@ -583,8 +584,8 @@ public class TestRMAppTransitions { RMApp application = createNewTestApp(null); // NEW => FAILED event RMAppEventType.APP_REJECTED String rejectedText = "Test Application Rejected"; - RMAppEvent event = - new RMAppRejectedEvent(application.getApplicationId(), rejectedText); + RMAppEvent event = new RMAppEvent(application.getApplicationId(), + RMAppEventType.APP_REJECTED, rejectedText); application.handle(event); rmDispatcher.await(); sendAppUpdateSavedEvent(application); @@ -601,7 +602,8 @@ public class TestRMAppTransitions { RMApp application = testCreateAppNewSaving(null); // NEW_SAVING => KILLED event RMAppEventType.KILL RMAppEvent event = - new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL); + new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL, + "Application killed by user."); application.handle(event); rmDispatcher.await(); sendAppUpdateSavedEvent(application); @@ -617,8 +619,8 @@ public class TestRMAppTransitions { RMApp application = testCreateAppNewSaving(null); // NEW_SAVING => FAILED event RMAppEventType.APP_REJECTED String rejectedText = "Test Application Rejected"; - RMAppEvent event = - new RMAppRejectedEvent(application.getApplicationId(), rejectedText); + RMAppEvent event = new RMAppEvent(application.getApplicationId(), + RMAppEventType.APP_REJECTED, rejectedText); application.handle(event); rmDispatcher.await(); sendAppUpdateSavedEvent(application); @@ -634,8 +636,8 @@ public class TestRMAppTransitions { RMApp application = testCreateAppSubmittedNoRecovery(null); // SUBMITTED => FAILED event RMAppEventType.APP_REJECTED String rejectedText = "app rejected"; - RMAppEvent event = - new RMAppRejectedEvent(application.getApplicationId(), rejectedText); + RMAppEvent event = new RMAppEvent(application.getApplicationId(), + RMAppEventType.APP_REJECTED, rejectedText); application.handle(event); rmDispatcher.await(); sendAppUpdateSavedEvent(application); @@ -649,8 +651,9 @@ public class TestRMAppTransitions { LOG.info("--- START: testAppSubmittedKill---"); RMApp application = testCreateAppSubmittedNoRecovery(null); // SUBMITTED => KILLED event RMAppEventType.KILL - RMAppEvent event = new RMAppEvent(application.getApplicationId(), - RMAppEventType.KILL); + RMAppEvent event = + new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL, + "Application killed by user."); application.handle(event); rmDispatcher.await(); sendAppUpdateSavedEvent(application); @@ -700,15 +703,16 @@ public class TestRMAppTransitions { LOG.info("--- START: testAppAcceptedKill ---"); RMApp application = testCreateAppAccepted(null); // ACCEPTED => KILLED event RMAppEventType.KILL - RMAppEvent event = new RMAppEvent(application.getApplicationId(), - RMAppEventType.KILL); + RMAppEvent event = + new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL, + "Application killed by user."); application.handle(event); rmDispatcher.await(); assertAppState(RMAppState.KILLING, application); RMAppEvent appAttemptKilled = new RMAppEvent(application.getApplicationId(), - RMAppEventType.ATTEMPT_KILLED); + RMAppEventType.ATTEMPT_KILLED, "Application killed by user."); application.handle(appAttemptKilled); assertAppState(RMAppState.FINAL_SAVING, application); sendAppUpdateSavedEvent(application); @@ -729,7 +733,7 @@ public class TestRMAppTransitions { // RUNNING. RMAppEvent event = new RMAppEvent(application.getApplicationId(), - RMAppEventType.ATTEMPT_KILLED); + RMAppEventType.ATTEMPT_KILLED, "Application killed by user."); application.handle(event); rmDispatcher.await(); @@ -747,8 +751,9 @@ public class TestRMAppTransitions { RMApp application = testCreateAppRunning(null); // RUNNING => KILLED event RMAppEventType.KILL - RMAppEvent event = - new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL); + RMAppEvent event = + new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL, + "Application killed by user."); application.handle(event); rmDispatcher.await(); @@ -806,7 +811,9 @@ public class TestRMAppTransitions { assertAppFinalStateSaved(application); // FAILED => FAILED event RMAppEventType.KILL - event = new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL); + event = + new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL, + "Application killed by user."); application.handle(event); rmDispatcher.await(); assertFailed(application, ".*Failing the application.*"); @@ -821,7 +828,8 @@ public class TestRMAppTransitions { RMApp application = testCreateAppFinishing(null); // FINISHING => FINISHED event RMAppEventType.KILL RMAppEvent event = - new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL); + new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL, + "Application killed by user."); application.handle(event); rmDispatcher.await(); assertAppState(RMAppState.FINISHING, application); @@ -838,8 +846,8 @@ public class TestRMAppTransitions { RMApp application = testCreateAppFinalSaving(null); final String diagMsg = "some diagnostics"; // attempt_finished event comes before attempt_saved event - RMAppEvent event = - new RMAppFinishedAttemptEvent(application.getApplicationId(), diagMsg); + RMAppEvent event = new RMAppEvent(application.getApplicationId(), + RMAppEventType.ATTEMPT_FINISHED, diagMsg); application.handle(event); assertAppState(RMAppState.FINAL_SAVING, application); RMAppEvent appUpdated = @@ -860,8 +868,9 @@ public class TestRMAppTransitions { RMApp application = testCreateAppFinished(null, ""); // FINISHED => FINISHED event RMAppEventType.KILL - RMAppEvent event = - new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL); + RMAppEvent event = + new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL, + "Application killed by user."); application.handle(event); rmDispatcher.await(); assertTimesAtFinish(application); @@ -879,8 +888,8 @@ public class TestRMAppTransitions { RMApp application = testCreateAppNewSaving(null); // NEW_SAVING => FAILED event RMAppEventType.APP_REJECTED - RMAppEvent event = - new RMAppRejectedEvent(application.getApplicationId(), ""); + RMAppEvent event = new RMAppEvent(application.getApplicationId(), + RMAppEventType.APP_REJECTED, ""); application.handle(event); rmDispatcher.await(); sendAppUpdateSavedEvent(application); @@ -889,7 +898,8 @@ public class TestRMAppTransitions { // FAILED => FAILED event RMAppEventType.KILL event = - new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL); + new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL, + "Application killed by user."); application.handle(event); rmDispatcher.await(); assertTimesAtFinish(application); @@ -907,8 +917,9 @@ public class TestRMAppTransitions { RMApp application = testCreateAppRunning(null); // RUNNING => KILLED event RMAppEventType.KILL - RMAppEvent event = - new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL); + RMAppEvent event = + new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL, + "Application killed by user."); application.handle(event); rmDispatcher.await(); sendAttemptUpdateSavedEvent(application); @@ -917,8 +928,8 @@ public class TestRMAppTransitions { assertAppState(RMAppState.KILLED, application); // KILLED => KILLED event RMAppEventType.ATTEMPT_FINISHED - event = new RMAppFinishedAttemptEvent( - application.getApplicationId(), ""); + event = new RMAppEvent(application.getApplicationId(), + RMAppEventType.ATTEMPT_FINISHED, ""); application.handle(event); rmDispatcher.await(); assertTimesAtFinish(application); @@ -935,7 +946,9 @@ public class TestRMAppTransitions { // KILLED => KILLED event RMAppEventType.KILL - event = new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL); + event = + new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL, + "Application killed by user."); application.handle(event); rmDispatcher.await(); assertTimesAtFinish(application);
http://git-wip-us.apache.org/repos/asf/hadoop/blob/cf23f2c2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/TestRMAppAttemptTransitions.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/TestRMAppAttemptTransitions.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/TestRMAppAttemptTransitions.java index 9cc6a23..7f9610f 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/TestRMAppAttemptTransitions.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/TestRMAppAttemptTransitions.java @@ -26,6 +26,7 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assume.assumeTrue; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyLong; +import static org.mockito.Matchers.argThat; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; @@ -86,12 +87,8 @@ import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppEventType; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppFailedAttemptEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppImpl; -import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppRejectedEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppRunningOnNodeEvent; -import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.event.RMAppAttemptContainerAllocatedEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.event.RMAppAttemptContainerFinishedEvent; -import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.event.RMAppAttemptFailedEvent; -import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.event.RMAppAttemptLaunchFailedEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.event.RMAppAttemptRegistrationEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.event.RMAppAttemptUnregistrationEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.ContainerAllocationExpirer; @@ -124,6 +121,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.mockito.ArgumentCaptor; +import org.mockito.ArgumentMatcher; import org.mockito.Matchers; import org.mockito.Mockito; import org.mockito.invocation.InvocationOnMock; @@ -416,10 +414,16 @@ public class TestRMAppAttemptTransitions { // Check events verify(masterService). unregisterAttempt(applicationAttempt.getAppAttemptId()); - - // this works for unmanaged and managed AM's because this is actually doing - // verify(application).handle(anyObject()); - verify(application).handle(any(RMAppRejectedEvent.class)); + // ATTEMPT_FAILED should be notified to app if app attempt is submitted to + // failed state. + ArgumentMatcher<RMAppEvent> matcher = new ArgumentMatcher<RMAppEvent>() { + @Override + public boolean matches(Object o) { + RMAppEvent event = (RMAppEvent) o; + return event.getType() == RMAppEventType.ATTEMPT_FAILED; + } + }; + verify(application).handle(argThat(matcher)); verifyTokenCount(applicationAttempt.getAppAttemptId(), 1); verifyApplicationAttemptFinished(RMAppAttemptState.FAILED); } @@ -649,8 +653,8 @@ public class TestRMAppAttemptTransitions { thenReturn(rmContainer); applicationAttempt.handle( - new RMAppAttemptContainerAllocatedEvent( - applicationAttempt.getAppAttemptId())); + new RMAppAttemptEvent(applicationAttempt.getAppAttemptId(), + RMAppAttemptEventType.CONTAINER_ALLOCATED)); assertEquals(RMAppAttemptState.ALLOCATED_SAVING, applicationAttempt.getAppAttemptState()); @@ -906,9 +910,8 @@ public class TestRMAppAttemptTransitions { Container amContainer = allocateApplicationAttempt(); String diagnostics = "Launch Failed"; applicationAttempt.handle( - new RMAppAttemptLaunchFailedEvent( - applicationAttempt.getAppAttemptId(), - diagnostics)); + new RMAppAttemptEvent(applicationAttempt.getAppAttemptId(), + RMAppAttemptEventType.LAUNCH_FAILED, diagnostics)); assertEquals(YarnApplicationAttemptState.ALLOCATED, applicationAttempt.createApplicationAttemptState()); testAppAttemptFailedState(amContainer, diagnostics); @@ -927,8 +930,9 @@ public class TestRMAppAttemptTransitions { // verify for both launched and launch_failed transitions in final_saving applicationAttempt.handle(new RMAppAttemptEvent(applicationAttempt .getAppAttemptId(), RMAppAttemptEventType.LAUNCHED)); - applicationAttempt.handle(new RMAppAttemptLaunchFailedEvent( - applicationAttempt.getAppAttemptId(), "Launch Failed")); + applicationAttempt.handle( + new RMAppAttemptEvent(applicationAttempt.getAppAttemptId(), + RMAppAttemptEventType.LAUNCH_FAILED, "Launch Failed")); assertEquals(RMAppAttemptState.FINAL_SAVING, applicationAttempt.getAppAttemptState()); @@ -938,8 +942,9 @@ public class TestRMAppAttemptTransitions { // verify for both launched and launch_failed transitions in killed applicationAttempt.handle(new RMAppAttemptEvent(applicationAttempt .getAppAttemptId(), RMAppAttemptEventType.LAUNCHED)); - applicationAttempt.handle(new RMAppAttemptLaunchFailedEvent( - applicationAttempt.getAppAttemptId(), "Launch Failed")); + applicationAttempt.handle(new RMAppAttemptEvent( + applicationAttempt.getAppAttemptId(), + RMAppAttemptEventType.LAUNCH_FAILED, "Launch Failed")); assertEquals(RMAppAttemptState.KILLED, applicationAttempt.getAppAttemptState()); } @@ -1546,8 +1551,8 @@ public class TestRMAppAttemptTransitions { @Test(timeout = 30000) public void testNewToFailed() { - applicationAttempt.handle(new RMAppAttemptFailedEvent(applicationAttempt - .getAppAttemptId(), FAILED_DIAGNOSTICS)); + applicationAttempt.handle(new RMAppAttemptEvent(applicationAttempt + .getAppAttemptId(), RMAppAttemptEventType.FAIL, FAILED_DIAGNOSTICS)); assertEquals(YarnApplicationAttemptState.NEW, applicationAttempt.createApplicationAttemptState()); testAppAttemptFailedState(null, FAILED_DIAGNOSTICS); @@ -1557,8 +1562,8 @@ public class TestRMAppAttemptTransitions { @Test(timeout = 30000) public void testSubmittedToFailed() { submitApplicationAttempt(); - applicationAttempt.handle(new RMAppAttemptFailedEvent(applicationAttempt - .getAppAttemptId(), FAILED_DIAGNOSTICS)); + applicationAttempt.handle(new RMAppAttemptEvent(applicationAttempt + .getAppAttemptId(), RMAppAttemptEventType.FAIL, FAILED_DIAGNOSTICS)); assertEquals(YarnApplicationAttemptState.SUBMITTED, applicationAttempt.createApplicationAttemptState()); testAppAttemptFailedState(null, FAILED_DIAGNOSTICS); @@ -1567,8 +1572,8 @@ public class TestRMAppAttemptTransitions { @Test(timeout = 30000) public void testScheduledToFailed() { scheduleApplicationAttempt(); - applicationAttempt.handle(new RMAppAttemptFailedEvent(applicationAttempt - .getAppAttemptId(), FAILED_DIAGNOSTICS)); + applicationAttempt.handle(new RMAppAttemptEvent(applicationAttempt + .getAppAttemptId(), RMAppAttemptEventType.FAIL, FAILED_DIAGNOSTICS)); assertEquals(YarnApplicationAttemptState.SCHEDULED, applicationAttempt.createApplicationAttemptState()); testAppAttemptFailedState(null, FAILED_DIAGNOSTICS); @@ -1579,8 +1584,8 @@ public class TestRMAppAttemptTransitions { Container amContainer = allocateApplicationAttempt(); assertEquals(YarnApplicationAttemptState.ALLOCATED, applicationAttempt.createApplicationAttemptState()); - applicationAttempt.handle(new RMAppAttemptFailedEvent(applicationAttempt - .getAppAttemptId(), FAILED_DIAGNOSTICS)); + applicationAttempt.handle(new RMAppAttemptEvent(applicationAttempt + .getAppAttemptId(), RMAppAttemptEventType.FAIL, FAILED_DIAGNOSTICS)); testAppAttemptFailedState(amContainer, FAILED_DIAGNOSTICS); } @@ -1589,8 +1594,8 @@ public class TestRMAppAttemptTransitions { Container amContainer = allocateApplicationAttempt(); launchApplicationAttempt(amContainer); runApplicationAttempt(amContainer, "host", 8042, "oldtrackingurl", false); - applicationAttempt.handle(new RMAppAttemptFailedEvent(applicationAttempt - .getAppAttemptId(), FAILED_DIAGNOSTICS)); + applicationAttempt.handle(new RMAppAttemptEvent(applicationAttempt + .getAppAttemptId(), RMAppAttemptEventType.FAIL, FAILED_DIAGNOSTICS)); assertEquals(RMAppAttemptState.FINAL_SAVING, applicationAttempt.getAppAttemptState());
