hadoop-yarn-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jeag...@apache.org
Subject svn commit: r1528528 - 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/scheduler/fair/TestFairScheduler.java
Date Wed, 02 Oct 2013 15:52:23 GMT
Author: jeagles
Date: Wed Oct  2 15:52:22 2013
New Revision: 1528528

URL: http://svn.apache.org/r1528528
Log:
YARN-677. Increase coverage to FairScheduler (Vadim Bondarev and Dennis Y via jeagles)

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/scheduler/fair/TestFairScheduler.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=1528528&r1=1528527&r2=1528528&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-yarn-project/CHANGES.txt (original)
+++ hadoop/common/branches/branch-2/hadoop-yarn-project/CHANGES.txt Wed Oct  2 15:52:22 2013
@@ -29,6 +29,9 @@ Release 2.3.0 - UNRELEASED
     YARN-819. ResourceManager and NodeManager should check for a minimum allowed
     version (Robert Parker via jeagles)
 
+    YARN-677. Increase coverage to FairScheduler (Vadim Bondarev and Dennis Y
+    via jeagles)
+
   OPTIMIZATIONS
 
   BUG FIXES

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/scheduler/fair/TestFairScheduler.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/scheduler/fair/TestFairScheduler.java?rev=1528528&r1=1528527&r2=1528528&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/scheduler/fair/TestFairScheduler.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/scheduler/fair/TestFairScheduler.java
Wed Oct  2 15:52:22 2013
@@ -39,6 +39,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.TimeUnit;
 
 import javax.xml.parsers.ParserConfigurationException;
 
@@ -86,6 +87,8 @@ import org.apache.hadoop.yarn.server.res
 import org.apache.hadoop.yarn.server.resourcemanager.scheduler.event.NodeAddedSchedulerEvent;
 import org.apache.hadoop.yarn.server.resourcemanager.scheduler.event.NodeRemovedSchedulerEvent;
 import org.apache.hadoop.yarn.server.resourcemanager.scheduler.event.NodeUpdateSchedulerEvent;
+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.scheduler.fair.policies.DominantResourceFairnessPolicy;
 import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.policies.FifoPolicy;
 import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fifo.FifoScheduler;
@@ -100,6 +103,9 @@ import org.mockito.invocation.Invocation
 import org.mockito.stubbing.Answer;
 import org.xml.sax.SAXException;
 
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.UnmodifiableIterator;
+
 public class TestFairScheduler {
 
   private class MockClock implements Clock {
@@ -2312,4 +2318,91 @@ public class TestFairScheduler {
     Assert.assertEquals(1, consumption.getVirtualCores());
   }
 
+
+  @Test
+  public void testAggregateCapacityTrackingWithPreemptionEnabled() throws Exception {
+    int KB = 1024;
+    int iterationNumber = 10;
+    Configuration conf = createConfiguration();
+    conf.setBoolean("yarn.scheduler.fair.preemption", true);
+    scheduler.reinitialize(conf, resourceManager.getRMContext());
+    RMNode node = MockNodes.newNodeInfo(1, Resources.createResource(KB * iterationNumber));
+    NodeAddedSchedulerEvent nodeAddEvent = new NodeAddedSchedulerEvent(node);
+    scheduler.handle(nodeAddEvent);
+
+    for (int i = 0; i < iterationNumber; i++) {
+      createSchedulingRequest(KB, "queue1", "user1", 1);
+      scheduler.update();
+      NodeUpdateSchedulerEvent updateEvent = new NodeUpdateSchedulerEvent(node);
+      scheduler.handle(updateEvent);
+
+      assertEquals(KB,
+          scheduler.getQueueManager().getQueue("queue1").getResourceUsage().getMemory());
+      TimeUnit.SECONDS.sleep(1);
+    }
+  }
+
+  private static final class ExternalAppAddedSchedulerEvent extends SchedulerEvent {
+    public ExternalAppAddedSchedulerEvent() {
+      super(SchedulerEventType.APP_ADDED);
+    }
+  }
+
+  private static final class ExternalNodeRemovedSchedulerEvent extends SchedulerEvent {
+    public ExternalNodeRemovedSchedulerEvent() {
+      super(SchedulerEventType.NODE_REMOVED);
+    }
+  }
+
+  private static final class ExternalNodeUpdateSchedulerEvent extends SchedulerEvent {
+    public ExternalNodeUpdateSchedulerEvent() {
+      super(SchedulerEventType.NODE_UPDATE);
+    }
+  }
+
+  private static final class ExternalNodeAddedSchedulerEvent extends SchedulerEvent {
+    public ExternalNodeAddedSchedulerEvent() {
+      super(SchedulerEventType.NODE_ADDED);
+    }
+  }
+
+  private static final class ExternalAppRemovedSchedulerEvent extends SchedulerEvent {
+    public ExternalAppRemovedSchedulerEvent() {
+      super(SchedulerEventType.APP_REMOVED);
+    }
+  }
+
+  private static final class ExternalContainerExpiredSchedulerEvent extends SchedulerEvent
{
+    public ExternalContainerExpiredSchedulerEvent() {
+      super(SchedulerEventType.CONTAINER_EXPIRED);
+    }
+  }
+
+  /**
+   * try to handle external events type
+   * and get {@code RuntimeException}
+   *
+   * @throws Exception
+   */
+  @Test
+  public void testSchedulerHandleFailWithExternalEvents() throws Exception {
+    Configuration conf = createConfiguration();
+    scheduler.reinitialize(conf, resourceManager.getRMContext());
+    ImmutableSet<? extends SchedulerEvent> externalEvents = ImmutableSet.of(new ExternalAppAddedSchedulerEvent(),
+        new ExternalNodeRemovedSchedulerEvent(), new ExternalNodeUpdateSchedulerEvent(),
+        new ExternalNodeAddedSchedulerEvent(), new ExternalAppRemovedSchedulerEvent(),
+          new ExternalContainerExpiredSchedulerEvent());
+
+    UnmodifiableIterator<? extends SchedulerEvent> iter = externalEvents.iterator();
+    while(iter.hasNext())
+      handleExternalEvent(iter.next());
+  }
+
+  private void handleExternalEvent(SchedulerEvent event) throws Exception {
+    try {
+      scheduler.handle(event);
+    } catch(RuntimeException ex) {
+      //expected
+    }
+  }
 }



Mime
View raw message