diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/MockRM.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/MockRM.java index 2443214..0ff7022 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/MockRM.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/MockRM.java @@ -603,9 +603,16 @@ public SubmitApplicationResponse run() { } public MockNM registerNode(String nodeIdStr, int memory) throws Exception { + return registerNode(nodeIdStr, memory, false); + } + + public MockNM registerNode(String nodeIdStr, int memory, boolean skipDrain) + throws Exception { MockNM nm = new MockNM(nodeIdStr, memory, getResourceTrackerService()); nm.registerNode(); - drainEvents(); + if (!skipDrain) { + drainEvents(); + } return nm; } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesNodes.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesNodes.java index 3fd1fd5..a7a8081 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesNodes.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesNodes.java @@ -51,6 +51,7 @@ import org.codehaus.jettison.json.JSONArray; import org.codehaus.jettison.json.JSONException; import org.codehaus.jettison.json.JSONObject; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.w3c.dom.Document; @@ -100,6 +101,15 @@ protected Injector getInjector() { @Override public void setUp() throws Exception { super.setUp(); + // Most of the testcases require RM to be started to dispatchEvents + rm.start(); + } + + @After + @Override + public void tearDown() throws Exception { + super.tearDown(); + rm.stop(); } public TestRMWebServicesNodes() { @@ -128,15 +138,16 @@ public void testNodesDefault() throws JSONException, Exception { @Test public void testNodesDefaultWithUnHealthyNode() throws JSONException, Exception { - + // For NM to be in NEW state stopping RM dispatcher + rm.stop(); WebResource r = resource(); - MockNM nm1 = rm.registerNode("h1:1234", 5120); - MockNM nm2 = rm.registerNode("h2:1235", 5121); + MockNM nm1 = rm.registerNode("h1:1234", 5120, true); + MockNM nm2 = rm.registerNode("h2:1235", 5121, true); rm.sendNodeStarted(nm1); rm.NMwaitForState(nm1.getNodeId(), NodeState.RUNNING); rm.NMwaitForState(nm2.getNodeId(), NodeState.NEW); - MockNM nm3 = rm.registerNode("h3:1236", 5122); + MockNM nm3 = rm.registerNode("h3:1236", 5122, true); rm.NMwaitForState(nm3.getNodeId(), NodeState.NEW); rm.sendNodeStarted(nm3); rm.NMwaitForState(nm3.getNodeId(), NodeState.RUNNING); @@ -165,9 +176,11 @@ public void testNodesDefaultWithUnHealthyNode() throws JSONException, @Test public void testNodesQueryNew() throws JSONException, Exception { + // For NM to be in NEW state stopping RM dispatcher + rm.stop(); WebResource r = resource(); - MockNM nm1 = rm.registerNode("h1:1234", 5120); - MockNM nm2 = rm.registerNode("h2:1235", 5121); + MockNM nm1 = rm.registerNode("h1:1234", 5120, true); + MockNM nm2 = rm.registerNode("h2:1235", 5121, true); rm.sendNodeStarted(nm1); rm.NMwaitForState(nm1.getNodeId(), NodeState.RUNNING); rm.NMwaitForState(nm2.getNodeId(), NodeState.NEW); @@ -310,9 +323,11 @@ public void testSingleNodeQueryStateLost() throws JSONException, Exception { @Test public void testNodesQueryRunning() throws JSONException, Exception { + // For NM to be in NEW state stopping RM dispatcher + rm.stop(); WebResource r = resource(); - MockNM nm1 = rm.registerNode("h1:1234", 5120); - MockNM nm2 = rm.registerNode("h2:1235", 5121); + MockNM nm1 = rm.registerNode("h1:1234", 5120, true); + MockNM nm2 = rm.registerNode("h2:1235", 5121, true); rm.sendNodeStarted(nm1); rm.NMwaitForState(nm1.getNodeId(), NodeState.RUNNING); rm.NMwaitForState(nm2.getNodeId(), NodeState.NEW); @@ -330,9 +345,11 @@ public void testNodesQueryRunning() throws JSONException, Exception { @Test public void testNodesQueryHealthyFalse() throws JSONException, Exception { + // For NM to be in NEW state stopping RM dispatcher + rm.stop(); WebResource r = resource(); - MockNM nm1 = rm.registerNode("h1:1234", 5120); - MockNM nm2 = rm.registerNode("h2:1235", 5121); + MockNM nm1 = rm.registerNode("h1:1234", 5120, true); + MockNM nm2 = rm.registerNode("h2:1235", 5121, true); rm.sendNodeStarted(nm1); rm.NMwaitForState(nm1.getNodeId(), NodeState.RUNNING); rm.NMwaitForState(nm2.getNodeId(), NodeState.NEW); @@ -545,7 +562,6 @@ public void testInvalidNode() throws JSONException, Exception { @Test public void testNodesXML() throws JSONException, Exception { - rm.start(); WebResource r = resource(); MockNM nm1 = rm.registerNode("h1:1234", 5120); // MockNM nm2 = rm.registerNode("h2:1235", 5121); @@ -564,12 +580,10 @@ public void testNodesXML() throws JSONException, Exception { NodeList nodes = dom.getElementsByTagName("node"); assertEquals("incorrect number of elements", 1, nodes.getLength()); verifyNodesXML(nodes, nm1); - rm.stop(); } @Test public void testSingleNodesXML() throws JSONException, Exception { - rm.start(); WebResource r = resource(); MockNM nm1 = rm.registerNode("h1:1234", 5120); // MockNM nm2 = rm.registerNode("h2:1235", 5121); @@ -588,12 +602,10 @@ public void testSingleNodesXML() throws JSONException, Exception { NodeList nodes = dom.getElementsByTagName("node"); assertEquals("incorrect number of elements", 1, nodes.getLength()); verifyNodesXML(nodes, nm1); - rm.stop(); } @Test public void testNodes2XML() throws JSONException, Exception { - rm.start(); WebResource r = resource(); rm.registerNode("h1:1234", 5120); rm.registerNode("h2:1235", 5121); @@ -612,15 +624,16 @@ public void testNodes2XML() throws JSONException, Exception { assertEquals("incorrect number of elements", 1, nodesApps.getLength()); NodeList nodes = dom.getElementsByTagName("node"); assertEquals("incorrect number of elements", 2, nodes.getLength()); - rm.stop(); } @Test public void testQueryAll() throws Exception { + // For NM to be in NEW state stopping RM dispatcher + rm.stop(); WebResource r = resource(); - MockNM nm1 = rm.registerNode("h1:1234", 5120); - MockNM nm2 = rm.registerNode("h2:1235", 5121); - MockNM nm3 = rm.registerNode("h3:1236", 5122); + MockNM nm1 = rm.registerNode("h1:1234", 5120, true); + MockNM nm2 = rm.registerNode("h2:1235", 5121, true); + MockNM nm3 = rm.registerNode("h3:1236", 5122, true); rm.sendNodeStarted(nm1); rm.sendNodeStarted(nm3); rm.NMwaitForState(nm1.getNodeId(), NodeState.RUNNING);