diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/subcluster/capacity/TestYarnFederationWithCapacityScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/subcluster/capacity/TestYarnFederationWithCapacityScheduler.java index e625f257a4a47..e31fcd9cdc217 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/subcluster/capacity/TestYarnFederationWithCapacityScheduler.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/subcluster/capacity/TestYarnFederationWithCapacityScheduler.java @@ -24,6 +24,7 @@ import org.apache.hadoop.test.GenericTestUtils; import org.apache.hadoop.util.Sets; import org.apache.hadoop.yarn.api.records.ApplicationTimeoutType; +import org.apache.hadoop.yarn.api.records.NodeLabel; import org.apache.hadoop.yarn.exceptions.YarnException; import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ClusterInfo; import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ClusterUserInfo; @@ -48,6 +49,8 @@ import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ReservationSubmissionRequestInfo; import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ReservationUpdateRequestInfo; import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ReservationDeleteRequestInfo; +import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.NodeLabelsInfo; +import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.LabelsToNodesInfo; import org.apache.hadoop.yarn.server.router.subcluster.TestFederationSubCluster; import org.apache.hadoop.yarn.server.router.webapp.dao.FederationClusterInfo; import org.apache.hadoop.yarn.server.router.webapp.dao.FederationClusterUserInfo; @@ -65,29 +68,7 @@ import java.util.concurrent.TimeoutException; import static javax.servlet.http.HttpServletResponse.SC_OK; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.RM_WEB_SERVICE_PATH; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.INFO; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.CLUSTER_USER_INFO; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.METRICS; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.SCHEDULER; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.NODES; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.STATES; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.NODES_NODEID; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.SCHEDULER_ACTIVITIES; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.APPS_NEW_APPLICATION; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.APP_STATISTICS; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.APPS; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.APPS_APPID; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.APPS_APPID_APPATTEMPTS; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.APPS_APPID_STATE; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.APPS_APPID_PRIORITY; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.APPS_APPID_QUEUE; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.APPS_TIMEOUTS; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.APPS_TIMEOUT; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.RESERVATION_NEW; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.RESERVATION_SUBMIT; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.RESERVATION_UPDATE; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.RESERVATION_DELETE; +import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.*; import static org.apache.hadoop.yarn.server.router.subcluster.TestFederationSubCluster.format; import static org.apache.hadoop.yarn.server.router.subcluster.TestFederationSubCluster.getNodeId; import static org.apache.hadoop.yarn.server.router.webapp.HTTPMethods.POST; @@ -524,4 +505,48 @@ public void testDeleteReservation() throws Exception { String entity = response.getEntity(String.class); assertNotNull(entity); } + + @Test + public void testGetClusterNodeLabels() throws Exception { + NodeLabelsInfo nodeLabelsInfo = TestFederationSubCluster.performGetCalls(ROUTER_WEB_ADDRESS, + RM_WEB_SERVICE_PATH + GET_NODE_LABELS, NodeLabelsInfo.class, null, null); + assertNotNull(nodeLabelsInfo); + } + + @Test + public void testGetLabelsOnNode() throws Exception { + String rm1NodeId = getNodeId(SC1_RM_WEB_ADDRESS); + NodeLabelsInfo nodeLabelsInfo = TestFederationSubCluster.performGetCalls(ROUTER_WEB_ADDRESS, + RM_WEB_SERVICE_PATH + format(NODES_NODEID_GETLABELS, rm1NodeId), + NodeLabelsInfo.class, null, null); + assertNotNull(nodeLabelsInfo); + } + + @Test + public void testGetLabelsMappingEmpty() throws Exception { + LabelsToNodesInfo labelsToNodesInfo = TestFederationSubCluster.performGetCalls( + ROUTER_WEB_ADDRESS, RM_WEB_SERVICE_PATH + LABEL_MAPPINGS, + LabelsToNodesInfo.class, null, null); + assertNotNull(labelsToNodesInfo); + } + + @Test + public void testGetLabelsMapping() throws Exception { + LabelsToNodesInfo labelsToNodesInfo = TestFederationSubCluster.performGetCalls( + ROUTER_WEB_ADDRESS, RM_WEB_SERVICE_PATH + LABEL_MAPPINGS, + LabelsToNodesInfo.class, LABELS, "label1"); + assertNotNull(labelsToNodesInfo); + } + + @Test + public void testAddToClusterNodeLabels() throws Exception { + List nodeLabels = new ArrayList<>(); + nodeLabels.add(NodeLabel.newInstance("default")); + NodeLabelsInfo context = new NodeLabelsInfo(nodeLabels); + ClientResponse response = TestFederationSubCluster.performCall(ROUTER_WEB_ADDRESS, + RM_WEB_SERVICE_PATH + ADD_NODE_LABELS, null, null, context, POST); + assertEquals(SC_OK, response.getStatus()); + String entity = response.getEntity(String.class); + assertNotNull(entity); + } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/subcluster/fair/TestYarnFederationWithFairScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/subcluster/fair/TestYarnFederationWithFairScheduler.java index dc1184c855be6..f5e71fa4a1c56 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/subcluster/fair/TestYarnFederationWithFairScheduler.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/subcluster/fair/TestYarnFederationWithFairScheduler.java @@ -26,6 +26,7 @@ import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.ResourceOption; import org.apache.hadoop.yarn.api.records.ApplicationTimeoutType; +import org.apache.hadoop.yarn.api.records.NodeLabel; import org.apache.hadoop.yarn.exceptions.YarnException; import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ClusterInfo; import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ClusterUserInfo; @@ -52,6 +53,8 @@ import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ReservationSubmissionRequestInfo; import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ReservationUpdateRequestInfo; import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ReservationDeleteRequestInfo; +import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.NodeLabelsInfo; +import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.LabelsToNodesInfo; import org.apache.hadoop.yarn.server.router.subcluster.TestFederationSubCluster; import org.apache.hadoop.yarn.server.router.webapp.dao.FederationClusterInfo; import org.apache.hadoop.yarn.server.router.webapp.dao.FederationClusterUserInfo; @@ -68,30 +71,7 @@ import java.util.Set; import java.util.concurrent.TimeoutException; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.RM_WEB_SERVICE_PATH; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.INFO; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.CLUSTER_USER_INFO; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.METRICS; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.SCHEDULER; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.NODES; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.STATES; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.NODES_NODEID; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.SCHEDULER_ACTIVITIES; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.APPS_NEW_APPLICATION; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.NODE_RESOURCE; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.APP_STATISTICS; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.APP_ID; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.APPS; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.APPS_APPID_APPATTEMPTS; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.APPS_APPID_STATE; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.APPS_APPID_PRIORITY; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.APPS_APPID_QUEUE; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.APPS_TIMEOUTS; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.APPS_TIMEOUT; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.RESERVATION_NEW; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.RESERVATION_SUBMIT; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.RESERVATION_UPDATE; -import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.RESERVATION_DELETE; +import static org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWSConsts.*; import static org.apache.hadoop.yarn.server.router.subcluster.TestFederationSubCluster.format; import static org.apache.hadoop.yarn.server.router.subcluster.TestFederationSubCluster.getNodeId; import static org.apache.hadoop.yarn.server.router.webapp.HTTPMethods.POST; @@ -534,4 +514,48 @@ public void testDeleteReservation() throws Exception { String entity = response.getEntity(String.class); assertNotNull(entity); } + + @Test + public void testGetClusterNodeLabels() throws Exception { + NodeLabelsInfo nodeLabelsInfo = TestFederationSubCluster.performGetCalls(ROUTER_WEB_ADDRESS, + RM_WEB_SERVICE_PATH + GET_NODE_LABELS, NodeLabelsInfo.class, null, null); + assertNotNull(nodeLabelsInfo); + } + + @Test + public void testGetLabelsOnNode() throws Exception { + String rm1NodeId = getNodeId(SC1_RM_WEB_ADDRESS); + NodeLabelsInfo nodeLabelsInfo = TestFederationSubCluster.performGetCalls(ROUTER_WEB_ADDRESS, + RM_WEB_SERVICE_PATH + format(NODES_NODEID_GETLABELS, rm1NodeId), + NodeLabelsInfo.class, null, null); + assertNotNull(nodeLabelsInfo); + } + + @Test + public void testGetLabelsMappingEmpty() throws Exception { + LabelsToNodesInfo labelsToNodesInfo = + TestFederationSubCluster.performGetCalls(ROUTER_WEB_ADDRESS, + RM_WEB_SERVICE_PATH + LABEL_MAPPINGS, LabelsToNodesInfo.class, null, null); + assertNotNull(labelsToNodesInfo); + } + + @Test + public void testGetLabelsMapping() throws Exception { + LabelsToNodesInfo labelsToNodesInfo = TestFederationSubCluster.performGetCalls( + ROUTER_WEB_ADDRESS, RM_WEB_SERVICE_PATH + LABEL_MAPPINGS, + LabelsToNodesInfo.class, LABELS, "label1"); + assertNotNull(labelsToNodesInfo); + } + + @Test + public void testAddToClusterNodeLabels() throws Exception { + List nodeLabels = new ArrayList<>(); + nodeLabels.add(NodeLabel.newInstance("default")); + NodeLabelsInfo context = new NodeLabelsInfo(nodeLabels); + ClientResponse response = TestFederationSubCluster.performCall(ROUTER_WEB_ADDRESS, + RM_WEB_SERVICE_PATH + ADD_NODE_LABELS, null, null, context, POST); + assertEquals(SC_OK, response.getStatus()); + String entity = response.getEntity(String.class); + assertNotNull(entity); + } }