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();
+ }
+}