You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yarn-commits@hadoop.apache.org by ss...@apache.org on 2012/08/27 21:38:24 UTC
svn commit: r1377805 - in
/hadoop/common/branches/branch-2/hadoop-yarn-project: CHANGES.txt
hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java
Author: sseth
Date: Mon Aug 27 19:38:24 2012
New Revision: 1377805
URL: http://svn.apache.org/viewvc?rev=1377805&view=rev
Log:
merge YARN-37 from trunk. Change TestRMAppTransitions to use the DrainDispatcher. (Contributed by Mayank Bansal)
Modified:
hadoop/common/branches/branch-2/hadoop-yarn-project/CHANGES.txt
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java
Modified: hadoop/common/branches/branch-2/hadoop-yarn-project/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-yarn-project/CHANGES.txt?rev=1377805&r1=1377804&r2=1377805&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-yarn-project/CHANGES.txt (original)
+++ hadoop/common/branches/branch-2/hadoop-yarn-project/CHANGES.txt Mon Aug 27 19:38:24 2012
@@ -44,6 +44,9 @@ Release 2.1.0-alpha - Unreleased
YARN-22. Fix ContainerLogs to work if the log-dir is specified as a URI.
(Mayank Bansal via sseth)
+ YARN-37. Change TestRMAppTransitions to use the DrainDispatcher.
+ (Mayank Bansal via sseth)
+
Release 0.23.3 - Unreleased
INCOMPATIBLE CHANGES
Modified: hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java?rev=1377805&r1=1377804&r2=1377805&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java (original)
+++ hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java Mon Aug 27 19:38:24 2012
@@ -33,14 +33,15 @@ import org.apache.hadoop.yarn.api.record
import org.apache.hadoop.yarn.api.records.FinalApplicationStatus;
import org.apache.hadoop.yarn.api.records.impl.pb.ApplicationSubmissionContextPBImpl;
import org.apache.hadoop.yarn.conf.YarnConfiguration;
-import org.apache.hadoop.yarn.event.AsyncDispatcher;
+import org.apache.hadoop.yarn.event.DrainDispatcher;
import org.apache.hadoop.yarn.event.EventHandler;
import org.apache.hadoop.yarn.server.resourcemanager.ApplicationMasterService;
+import org.apache.hadoop.yarn.server.resourcemanager.RMAppManagerEvent;
+import org.apache.hadoop.yarn.server.resourcemanager.RMAppManagerEventType;
import org.apache.hadoop.yarn.server.resourcemanager.RMContext;
import org.apache.hadoop.yarn.server.resourcemanager.RMContextImpl;
import org.apache.hadoop.yarn.server.resourcemanager.recovery.ApplicationsStore.ApplicationStore;
import org.apache.hadoop.yarn.server.resourcemanager.recovery.MemStore;
-import org.apache.hadoop.yarn.server.resourcemanager.resourcetracker.InlineDispatcher;
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.AMLivelinessMonitor;
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttempt;
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptEvent;
@@ -48,6 +49,8 @@ import org.apache.hadoop.yarn.server.res
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptState;
import org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.ContainerAllocationExpirer;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.YarnScheduler;
+import org.apache.hadoop.yarn.server.resourcemanager.scheduler.event.SchedulerEvent;
+import org.apache.hadoop.yarn.server.resourcemanager.scheduler.event.SchedulerEventType;
import org.apache.hadoop.yarn.server.resourcemanager.security.ApplicationTokenSecretManager;
import org.apache.hadoop.yarn.server.resourcemanager.security.RMContainerTokenSecretManager;
import org.junit.Before;
@@ -60,7 +63,7 @@ public class TestRMAppTransitions {
private RMContext rmContext;
private static int maxRetries = 4;
private static int appId = 1;
-// private AsyncDispatcher rmDispatcher;
+ private DrainDispatcher rmDispatcher;
// ignore all the RM application attempt events
private static final class TestApplicationAttemptEventDispatcher implements
@@ -110,12 +113,27 @@ public class TestRMAppTransitions {
}
}
+ // handle all the RM application manager events - same as in
+ // ResourceManager.java
+ private static final class TestApplicationManagerEventDispatcher implements
+ EventHandler<RMAppManagerEvent> {
+ @Override
+ public void handle(RMAppManagerEvent event) {
+ }
+ }
+
+ // handle all the scheduler events - same as in ResourceManager.java
+ private static final class TestSchedulerEventDispatcher implements
+ EventHandler<SchedulerEvent> {
+ @Override
+ public void handle(SchedulerEvent event) {
+ }
+ }
+
@Before
public void setUp() throws Exception {
- AsyncDispatcher rmDispatcher = new AsyncDispatcher();
Configuration conf = new Configuration();
- rmDispatcher = new InlineDispatcher();
-
+ rmDispatcher = new DrainDispatcher();
ContainerAllocationExpirer containerAllocationExpirer =
mock(ContainerAllocationExpirer.class);
AMLivelinessMonitor amLivelinessMonitor = mock(AMLivelinessMonitor.class);
@@ -131,6 +149,13 @@ public class TestRMAppTransitions {
rmDispatcher.register(RMAppEventType.class,
new TestApplicationEventDispatcher(rmContext));
+
+ rmDispatcher.register(RMAppManagerEventType.class,
+ new TestApplicationManagerEventDispatcher());
+
+ rmDispatcher.register(SchedulerEventType.class,
+ new TestSchedulerEventDispatcher());
+
rmDispatcher.init(conf);
rmDispatcher.start();
}
@@ -225,9 +250,8 @@ public class TestRMAppTransitions {
"Application killed by user.", diag.toString());
}
- private static void assertAppAndAttemptKilled(RMApp application) {
+ private static void assertAppAndAttemptKilled(RMApp application) throws InterruptedException {
assertKilled(application);
- /* also check if the attempt is killed */
Assert.assertEquals( RMAppAttemptState.KILLED,
application.getCurrentAppAttempt().getAppAttemptState()
);
@@ -332,6 +356,7 @@ public class TestRMAppTransitions {
RMAppEvent event = new RMAppFailedAttemptEvent(
application.getApplicationId(), RMAppEventType.ATTEMPT_FAILED, "");
application.handle(event);
+ rmDispatcher.await();
RMAppAttempt appAttempt = application.getCurrentAppAttempt();
Assert.assertEquals(1, appAttempt.getAppAttemptId().getAttemptId());
assertFailed(application,
@@ -353,6 +378,7 @@ public class TestRMAppTransitions {
RMAppEvent event =
new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL);
application.handle(event);
+ rmDispatcher.await();
assertKilled(application);
}
@@ -366,6 +392,7 @@ public class TestRMAppTransitions {
RMAppEvent event =
new RMAppRejectedEvent(application.getApplicationId(), rejectedText);
application.handle(event);
+ rmDispatcher.await();
assertFailed(application, rejectedText);
}
@@ -379,18 +406,22 @@ public class TestRMAppTransitions {
RMAppEvent event =
new RMAppRejectedEvent(application.getApplicationId(), rejectedText);
application.handle(event);
+ rmDispatcher.await();
assertFailed(application, rejectedText);
}
@Test
- public void testAppSubmittedKill() throws IOException {
+ public void testAppSubmittedKill() throws IOException, InterruptedException {
LOG.info("--- START: testAppSubmittedKill---");
-
- RMApp application = testCreateAppAccepted(null);
- // SUBMITTED => KILLED event RMAppEventType.KILL
- RMAppEvent event = new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL);
- this.rmContext.getRMApps().putIfAbsent(application.getApplicationId(), application);
+ RMApp application = testCreateAppSubmitted(null);
+ // SUBMITTED => KILLED event RMAppEventType.KILL
+ RMAppEvent event = new RMAppEvent(application.getApplicationId(),
+ RMAppEventType.KILL);
+ this.rmContext.getRMApps().putIfAbsent(application.getApplicationId(),
+ application);
application.handle(event);
+ rmDispatcher.await();
+ assertKilled(application);
assertAppAndAttemptKilled(application);
}
@@ -410,6 +441,7 @@ public class TestRMAppTransitions {
new RMAppEvent(application.getApplicationId(),
RMAppEventType.APP_ACCEPTED);
application.handle(event);
+ rmDispatcher.await();
assertAppState(RMAppState.ACCEPTED, application);
}
@@ -420,19 +452,23 @@ public class TestRMAppTransitions {
new RMAppFailedAttemptEvent(application.getApplicationId(),
RMAppEventType.ATTEMPT_FAILED, message);
application.handle(event);
+ rmDispatcher.await();
assertFailed(application, ".*" + message + ".*Failing the application.*");
}
@Test
- public void testAppAcceptedKill() throws IOException {
+ public void testAppAcceptedKill() throws IOException, InterruptedException {
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);
+ this.rmContext.getRMApps().putIfAbsent(application.getApplicationId(),
+ application);
application.handle(event);
+ rmDispatcher.await();
assertKilled(application);
+ assertAppAndAttemptKilled(application);
}
@Test
@@ -444,6 +480,7 @@ public class TestRMAppTransitions {
RMAppEvent event =
new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL);
application.handle(event);
+ rmDispatcher.await();
assertKilled(application);
}
@@ -462,6 +499,7 @@ public class TestRMAppTransitions {
new RMAppFailedAttemptEvent(application.getApplicationId(),
RMAppEventType.ATTEMPT_FAILED, "");
application.handle(event);
+ rmDispatcher.await();
assertAppState(RMAppState.SUBMITTED, application);
appAttempt = application.getCurrentAppAttempt();
Assert.assertEquals(++expectedAttemptId,
@@ -470,11 +508,13 @@ public class TestRMAppTransitions {
new RMAppEvent(application.getApplicationId(),
RMAppEventType.APP_ACCEPTED);
application.handle(event);
+ rmDispatcher.await();
assertAppState(RMAppState.ACCEPTED, application);
event =
new RMAppEvent(application.getApplicationId(),
RMAppEventType.ATTEMPT_REGISTERED);
application.handle(event);
+ rmDispatcher.await();
assertAppState(RMAppState.RUNNING, application);
}
@@ -484,11 +524,13 @@ public class TestRMAppTransitions {
new RMAppFailedAttemptEvent(application.getApplicationId(),
RMAppEventType.ATTEMPT_FAILED, "");
application.handle(event);
+ rmDispatcher.await();
assertFailed(application, ".*Failing the application.*");
// FAILED => FAILED event RMAppEventType.KILL
event = new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL);
application.handle(event);
+ rmDispatcher.await();
assertFailed(application, ".*Failing the application.*");
}
@@ -501,6 +543,7 @@ public class TestRMAppTransitions {
RMAppEvent event =
new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL);
application.handle(event);
+ rmDispatcher.await();
assertAppState(RMAppState.FINISHED, application);
}
@@ -513,6 +556,7 @@ public class TestRMAppTransitions {
RMAppEvent event =
new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL);
application.handle(event);
+ rmDispatcher.await();
assertTimesAtFinish(application);
assertAppState(RMAppState.FINISHED, application);
StringBuilder diag = application.getDiagnostics();
@@ -530,6 +574,7 @@ public class TestRMAppTransitions {
RMAppEvent event =
new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL);
application.handle(event);
+ rmDispatcher.await();
assertTimesAtFinish(application);
assertAppState(RMAppState.KILLED, application);
@@ -538,6 +583,7 @@ public class TestRMAppTransitions {
new RMAppEvent(application.getApplicationId(),
RMAppEventType.ATTEMPT_FINISHED);
application.handle(event);
+ rmDispatcher.await();
assertTimesAtFinish(application);
assertAppState(RMAppState.KILLED, application);
@@ -546,6 +592,7 @@ public class TestRMAppTransitions {
new RMAppFailedAttemptEvent(application.getApplicationId(),
RMAppEventType.ATTEMPT_FAILED, "");
application.handle(event);
+ rmDispatcher.await();
assertTimesAtFinish(application);
assertAppState(RMAppState.KILLED, application);
@@ -554,12 +601,14 @@ public class TestRMAppTransitions {
new RMAppEvent(application.getApplicationId(),
RMAppEventType.ATTEMPT_KILLED);
application.handle(event);
+ rmDispatcher.await();
assertTimesAtFinish(application);
assertAppState(RMAppState.KILLED, application);
// KILLED => KILLED event RMAppEventType.KILL
event = new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL);
application.handle(event);
+ rmDispatcher.await();
assertTimesAtFinish(application);
assertAppState(RMAppState.KILLED, application);
}