|
@@ -67,6 +67,7 @@ import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppState;
|
|
|
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptState;
|
|
|
import org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainer;
|
|
|
import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNode;
|
|
|
+import org.apache.hadoop.yarn.server.resourcemanager.scheduler.QueueMetrics;
|
|
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ResourceScheduler;
|
|
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.event.AppAddedSchedulerEvent;
|
|
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.event.AppRemovedSchedulerEvent;
|
|
@@ -127,6 +128,7 @@ public class TestFairScheduler {
|
|
|
public void tearDown() {
|
|
|
scheduler = null;
|
|
|
resourceManager = null;
|
|
|
+ QueueMetrics.clearQueueMetrics();
|
|
|
}
|
|
|
|
|
|
private Configuration createConfiguration() {
|
|
@@ -336,6 +338,13 @@ public class TestFairScheduler {
|
|
|
|
|
|
assertEquals(1024, scheduler.getQueueManager().getQueue("queue1").
|
|
|
getResourceUsage().getMemory());
|
|
|
+
|
|
|
+ // verify metrics
|
|
|
+ QueueMetrics queue1Metrics = scheduler.getQueueManager().getQueue("queue1")
|
|
|
+ .getMetrics();
|
|
|
+ assertEquals(1024, queue1Metrics.getAllocatedMB());
|
|
|
+ assertEquals(1024, scheduler.getRootQueueMetrics().getAllocatedMB());
|
|
|
+ assertEquals(512, scheduler.getRootQueueMetrics().getAvailableMB());
|
|
|
}
|
|
|
|
|
|
@Test (timeout = 5000)
|
|
@@ -1245,6 +1254,7 @@ public class TestFairScheduler {
|
|
|
scheduler.handle(updateEvent);
|
|
|
|
|
|
assertEquals(1, app.getLiveContainers().size());
|
|
|
+ assertEquals(0, scheduler.getRootQueueMetrics().getAvailableMB());
|
|
|
|
|
|
// Create request at higher priority
|
|
|
createSchedulingRequestExistingApplication(1024, 1, attId);
|
|
@@ -1260,6 +1270,7 @@ public class TestFairScheduler {
|
|
|
// Complete container
|
|
|
scheduler.allocate(attId, new ArrayList<ResourceRequest>(),
|
|
|
Arrays.asList(containerId));
|
|
|
+ assertEquals(1024, scheduler.getRootQueueMetrics().getAvailableMB());
|
|
|
|
|
|
// Schedule at opening
|
|
|
scheduler.update();
|
|
@@ -1271,6 +1282,7 @@ public class TestFairScheduler {
|
|
|
for (RMContainer liveContainer : liveContainers) {
|
|
|
Assert.assertEquals(2, liveContainer.getContainer().getPriority().getPriority());
|
|
|
}
|
|
|
+ assertEquals(0, scheduler.getRootQueueMetrics().getAvailableMB());
|
|
|
}
|
|
|
|
|
|
@Test
|
|
@@ -1575,4 +1587,24 @@ public class TestFairScheduler {
|
|
|
assertEquals(1, app.getLiveContainers().size());
|
|
|
assertEquals(0, app.getReservedContainers().size());
|
|
|
}
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testRemoveNodeUpdatesRootQueueMetrics() {
|
|
|
+ assertEquals(0, scheduler.getRootQueueMetrics().getAvailableMB());
|
|
|
+
|
|
|
+ RMNode node1 = MockNodes.newNodeInfo(1, Resources.createResource(1024));
|
|
|
+ NodeAddedSchedulerEvent addEvent = new NodeAddedSchedulerEvent(node1);
|
|
|
+ scheduler.handle(addEvent);
|
|
|
+
|
|
|
+ assertEquals(1024, scheduler.getRootQueueMetrics().getAvailableMB());
|
|
|
+ scheduler.update(); // update shouldn't change things
|
|
|
+ assertEquals(1024, scheduler.getRootQueueMetrics().getAvailableMB());
|
|
|
+
|
|
|
+ NodeRemovedSchedulerEvent removeEvent = new NodeRemovedSchedulerEvent(node1);
|
|
|
+ scheduler.handle(removeEvent);
|
|
|
+
|
|
|
+ assertEquals(0, scheduler.getRootQueueMetrics().getAvailableMB());
|
|
|
+ scheduler.update(); // update shouldn't change things
|
|
|
+ assertEquals(0, scheduler.getRootQueueMetrics().getAvailableMB());
|
|
|
+ }
|
|
|
}
|