You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ka...@apache.org on 2014/07/26 04:03:19 UTC

svn commit: r1613552 - in /hadoop/common/trunk/hadoop-tools/hadoop-sls/src/test/java/org/apache/hadoop/yarn/sls: appmaster/ appmaster/TestAMSimulator.java nodemanager/ nodemanager/TestNMSimulator.java

Author: kasha
Date: Sat Jul 26 02:03:18 2014
New Revision: 1613552

URL: http://svn.apache.org/r1613552
Log:
YARN-1726. Add missing files. ResourceSchedulerWrapper broken due to AbstractYarnScheduler. (Wei Yan via kasha)

Added:
    hadoop/common/trunk/hadoop-tools/hadoop-sls/src/test/java/org/apache/hadoop/yarn/sls/appmaster/
    hadoop/common/trunk/hadoop-tools/hadoop-sls/src/test/java/org/apache/hadoop/yarn/sls/appmaster/TestAMSimulator.java
    hadoop/common/trunk/hadoop-tools/hadoop-sls/src/test/java/org/apache/hadoop/yarn/sls/nodemanager/
    hadoop/common/trunk/hadoop-tools/hadoop-sls/src/test/java/org/apache/hadoop/yarn/sls/nodemanager/TestNMSimulator.java

Added: hadoop/common/trunk/hadoop-tools/hadoop-sls/src/test/java/org/apache/hadoop/yarn/sls/appmaster/TestAMSimulator.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-tools/hadoop-sls/src/test/java/org/apache/hadoop/yarn/sls/appmaster/TestAMSimulator.java?rev=1613552&view=auto
==============================================================================
--- hadoop/common/trunk/hadoop-tools/hadoop-sls/src/test/java/org/apache/hadoop/yarn/sls/appmaster/TestAMSimulator.java (added)
+++ hadoop/common/trunk/hadoop-tools/hadoop-sls/src/test/java/org/apache/hadoop/yarn/sls/appmaster/TestAMSimulator.java Sat Jul 26 02:03:18 2014
@@ -0,0 +1,86 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.yarn.sls.appmaster;
+
+import org.apache.hadoop.yarn.conf.YarnConfiguration;
+import org.apache.hadoop.yarn.exceptions.YarnException;
+import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager;
+import org.apache.hadoop.yarn.sls.conf.SLSConfiguration;
+import org.apache.hadoop.yarn.sls.scheduler.ContainerSimulator;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+public class TestAMSimulator {
+  private ResourceManager rm;
+  private YarnConfiguration conf;
+
+  @Before
+  public void setup() {
+    conf = new YarnConfiguration();
+    conf.set(YarnConfiguration.RM_SCHEDULER,
+        "org.apache.hadoop.yarn.sls.scheduler.ResourceSchedulerWrapper");
+    conf.set(SLSConfiguration.RM_SCHEDULER,
+        "org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler");
+    conf.setBoolean(SLSConfiguration.METRICS_SWITCH, false);
+    rm = new ResourceManager();
+    rm.init(conf);
+    rm.start();
+  }
+
+  class MockAMSimulator extends AMSimulator {
+    @Override
+    protected void processResponseQueue()
+        throws InterruptedException, YarnException, IOException {
+    }
+
+    @Override
+    protected void sendContainerRequest()
+        throws YarnException, IOException, InterruptedException {
+    }
+
+    @Override
+    protected void checkStop() {
+    }
+  }
+
+  @Test
+  public void testAMSimulator() throws Exception {
+    // Register one app
+    MockAMSimulator app = new MockAMSimulator();
+    List<ContainerSimulator> containers = new ArrayList<ContainerSimulator>();
+    app.init(1, 1000, containers, rm, null, 0, 1000000l, "user1", "default",
+        false, "app1");
+    app.firstStep();
+    Assert.assertEquals(1, rm.getRMContext().getRMApps().size());
+    Assert.assertNotNull(rm.getRMContext().getRMApps().get(app.appId));
+
+    // Finish this app
+    app.lastStep();
+  }
+
+  @After
+  public void tearDown() {
+    rm.stop();
+  }
+}
\ No newline at end of file

Added: hadoop/common/trunk/hadoop-tools/hadoop-sls/src/test/java/org/apache/hadoop/yarn/sls/nodemanager/TestNMSimulator.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-tools/hadoop-sls/src/test/java/org/apache/hadoop/yarn/sls/nodemanager/TestNMSimulator.java?rev=1613552&view=auto
==============================================================================
--- hadoop/common/trunk/hadoop-tools/hadoop-sls/src/test/java/org/apache/hadoop/yarn/sls/nodemanager/TestNMSimulator.java (added)
+++ hadoop/common/trunk/hadoop-tools/hadoop-sls/src/test/java/org/apache/hadoop/yarn/sls/nodemanager/TestNMSimulator.java Sat Jul 26 02:03:18 2014
@@ -0,0 +1,100 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.yarn.sls.nodemanager;
+
+import org.apache.hadoop.yarn.api.records.Container;
+import org.apache.hadoop.yarn.api.records.ContainerId;
+import org.apache.hadoop.yarn.conf.YarnConfiguration;
+import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager;
+import org.apache.hadoop.yarn.server.utils.BuilderUtils;
+import org.apache.hadoop.yarn.sls.conf.SLSConfiguration;
+import org.apache.hadoop.yarn.util.resource.Resources;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class TestNMSimulator {
+  private final int GB = 1024;
+  private ResourceManager rm;
+  private YarnConfiguration conf;
+
+  @Before
+  public void setup() {
+    conf = new YarnConfiguration();
+    conf.set(YarnConfiguration.RM_SCHEDULER,
+        "org.apache.hadoop.yarn.sls.scheduler.ResourceSchedulerWrapper");
+    conf.set(SLSConfiguration.RM_SCHEDULER,
+        "org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler");
+    conf.setBoolean(SLSConfiguration.METRICS_SWITCH, false);
+    rm = new ResourceManager();
+    rm.init(conf);
+    rm.start();
+  }
+
+  @Test
+  public void testNMSimulator() throws Exception {
+    // Register one node
+    NMSimulator node1 = new NMSimulator();
+    node1.init("rack1/node1", GB * 10, 10, 0, 1000, rm);
+    node1.middleStep();
+
+    Assert.assertEquals(1, rm.getResourceScheduler().getNumClusterNodes());
+    Assert.assertEquals(GB * 10,
+        rm.getResourceScheduler().getRootQueueMetrics().getAvailableMB());
+    Assert.assertEquals(10,
+        rm.getResourceScheduler().getRootQueueMetrics()
+            .getAvailableVirtualCores());
+
+    // Allocate one container on node1
+    ContainerId cId1 = newContainerId(1, 1, 1);
+    Container container1 = Container.newInstance(cId1, null, null,
+        Resources.createResource(GB, 1), null, null);
+    node1.addNewContainer(container1, 100000l);
+    Assert.assertTrue("Node1 should have one running container.",
+        node1.getRunningContainers().containsKey(cId1));
+
+    // Allocate one AM container on node1
+    ContainerId cId2 = newContainerId(2, 1, 1);
+    Container container2 = Container.newInstance(cId2, null, null,
+        Resources.createResource(GB, 1), null, null);
+    node1.addNewContainer(container2, -1l);
+    Assert.assertTrue("Node1 should have one running AM container",
+        node1.getAMContainers().contains(cId2));
+
+    // Remove containers
+    node1.cleanupContainer(cId1);
+    Assert.assertTrue("Container1 should be removed from Node1.",
+        node1.getCompletedContainers().contains(cId1));
+    node1.cleanupContainer(cId2);
+    Assert.assertFalse("Container2 should be removed from Node1.",
+        node1.getAMContainers().contains(cId2));
+  }
+
+  private ContainerId newContainerId(int appId, int appAttemptId, int cId) {
+    return BuilderUtils.newContainerId(
+        BuilderUtils.newApplicationAttemptId(
+            BuilderUtils.newApplicationId(System.currentTimeMillis(), appId),
+            appAttemptId), cId);
+  }
+
+  @After
+  public void tearDown() throws Exception {
+    rm.stop();
+  }
+}