|
@@ -3949,7 +3949,7 @@ public class TestFairScheduler extends FairSchedulerTestBase {
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
- public void testDontAllowUndeclaredPools() throws Exception{
|
|
|
+ public void testDontAllowUndeclaredPools() throws Exception {
|
|
|
conf.setBoolean(FairSchedulerConfiguration.ALLOW_UNDECLARED_POOLS, false);
|
|
|
conf.set(FairSchedulerConfiguration.ALLOCATION_FILE, ALLOC_FILE);
|
|
|
|
|
@@ -3965,10 +3965,10 @@ public class TestFairScheduler extends FairSchedulerTestBase {
|
|
|
scheduler.start();
|
|
|
scheduler.reinitialize(conf, resourceManager.getRMContext());
|
|
|
QueueManager queueManager = scheduler.getQueueManager();
|
|
|
-
|
|
|
+
|
|
|
FSLeafQueue jerryQueue = queueManager.getLeafQueue("jerry", false);
|
|
|
FSLeafQueue defaultQueue = queueManager.getLeafQueue("default", false);
|
|
|
-
|
|
|
+
|
|
|
// Should get put into jerry
|
|
|
createSchedulingRequest(1024, "jerry", "someuser");
|
|
|
assertEquals(1, jerryQueue.getNumRunnableApps());
|
|
@@ -3977,19 +3977,63 @@ public class TestFairScheduler extends FairSchedulerTestBase {
|
|
|
createSchedulingRequest(1024, "newqueue", "someuser");
|
|
|
assertEquals(1, jerryQueue.getNumRunnableApps());
|
|
|
assertEquals(1, defaultQueue.getNumRunnableApps());
|
|
|
-
|
|
|
+
|
|
|
// Would get put into someuser because of user-as-default-queue, but should
|
|
|
// be forced into default
|
|
|
createSchedulingRequest(1024, "default", "someuser");
|
|
|
assertEquals(1, jerryQueue.getNumRunnableApps());
|
|
|
assertEquals(2, defaultQueue.getNumRunnableApps());
|
|
|
-
|
|
|
+
|
|
|
// Should get put into jerry because of user-as-default-queue
|
|
|
createSchedulingRequest(1024, "default", "jerry");
|
|
|
assertEquals(2, jerryQueue.getNumRunnableApps());
|
|
|
assertEquals(2, defaultQueue.getNumRunnableApps());
|
|
|
}
|
|
|
|
|
|
+ @Test
|
|
|
+ public void testSchedulingOnRemovedNode() throws Exception {
|
|
|
+ // Disable continuous scheduling, will invoke continuous scheduling manually
|
|
|
+ scheduler.init(conf);
|
|
|
+ scheduler.start();
|
|
|
+ Assert.assertTrue("Continuous scheduling should be disabled.",
|
|
|
+ !scheduler.isContinuousSchedulingEnabled());
|
|
|
+
|
|
|
+ ApplicationAttemptId id11 = createAppAttemptId(1, 1);
|
|
|
+ createMockRMApp(id11);
|
|
|
+
|
|
|
+ scheduler.addApplication(id11.getApplicationId(), "root.queue1", "user1",
|
|
|
+ false);
|
|
|
+ scheduler.addApplicationAttempt(id11, false, false);
|
|
|
+
|
|
|
+ List<ResourceRequest> ask1 = new ArrayList<>();
|
|
|
+ ResourceRequest request1 =
|
|
|
+ createResourceRequest(1024, 8, ResourceRequest.ANY, 1, 1, true);
|
|
|
+
|
|
|
+ ask1.add(request1);
|
|
|
+ scheduler.allocate(id11, ask1, new ArrayList<ContainerId>(), null,
|
|
|
+ null);
|
|
|
+
|
|
|
+ String hostName = "127.0.0.1";
|
|
|
+ RMNode node1 = MockNodes.newNodeInfo(1,
|
|
|
+ Resources.createResource(8 * 1024, 8), 1, hostName);
|
|
|
+ NodeAddedSchedulerEvent nodeEvent1 = new NodeAddedSchedulerEvent(node1);
|
|
|
+ scheduler.handle(nodeEvent1);
|
|
|
+
|
|
|
+ FSSchedulerNode node = (FSSchedulerNode)scheduler.getSchedulerNode(
|
|
|
+ node1.getNodeID());
|
|
|
+
|
|
|
+ NodeRemovedSchedulerEvent removeNode1 =
|
|
|
+ new NodeRemovedSchedulerEvent(node1);
|
|
|
+ scheduler.handle(removeNode1);
|
|
|
+
|
|
|
+ scheduler.attemptScheduling(node);
|
|
|
+
|
|
|
+ AppAttemptRemovedSchedulerEvent appRemovedEvent1 =
|
|
|
+ new AppAttemptRemovedSchedulerEvent(id11,
|
|
|
+ RMAppAttemptState.FINISHED, false);
|
|
|
+ scheduler.handle(appRemovedEvent1);
|
|
|
+ }
|
|
|
+
|
|
|
@Test
|
|
|
public void testDefaultRuleInitializesProperlyWhenPolicyNotConfigured()
|
|
|
throws IOException {
|