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 bh...@apache.org on 2018/07/09 20:19:42 UTC

[06/50] [abbrv] hadoop git commit: Revert "Merge branch 'trunk' of https://git-wip-us.apache.org/repos/asf/hadoop into trunk"

http://git-wip-us.apache.org/repos/asf/hadoop/blob/39ad9890/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/fairscheduler/FairSchedulerJsonVerifications.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/fairscheduler/FairSchedulerJsonVerifications.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/fairscheduler/FairSchedulerJsonVerifications.java
deleted file mode 100644
index 924411a..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/fairscheduler/FairSchedulerJsonVerifications.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * 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.server.resourcemanager.webapp.fairscheduler;
-
-import com.google.common.collect.Sets;
-import org.apache.hadoop.yarn.api.protocolrecords.ResourceTypes;
-import org.apache.hadoop.yarn.api.records.ResourceInformation;
-import org.codehaus.jettison.json.JSONArray;
-import org.codehaus.jettison.json.JSONException;
-import org.codehaus.jettison.json.JSONObject;
-
-import java.util.List;
-import java.util.Set;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-/**
- * This test helper class is primarily used by
- * {@link TestRMWebServicesFairSchedulerCustomResourceTypes}.
- */
-public class FairSchedulerJsonVerifications {
-
-  private static final Set<String> RESOURCE_FIELDS =
-      Sets.newHashSet("minResources", "amUsedResources", "amMaxResources",
-          "fairResources", "clusterResources", "reservedResources",
-              "maxResources", "usedResources", "steadyFairResources",
-              "demandResources");
-  private final Set<String> customResourceTypes;
-
-  FairSchedulerJsonVerifications(List<String> customResourceTypes) {
-    this.customResourceTypes = Sets.newHashSet(customResourceTypes);
-  }
-
-  public void verify(JSONObject jsonObject) {
-    try {
-      verifyResourcesContainDefaultResourceTypes(jsonObject, RESOURCE_FIELDS);
-      verifyResourcesContainCustomResourceTypes(jsonObject, RESOURCE_FIELDS);
-    } catch (JSONException e) {
-      throw new RuntimeException(e);
-    }
-  }
-
-  private void verifyResourcesContainDefaultResourceTypes(JSONObject queue,
-      Set<String> resourceCategories) throws JSONException {
-    for (String resourceCategory : resourceCategories) {
-      boolean hasResourceCategory = queue.has(resourceCategory);
-      assertTrue("Queue " + queue + " does not have resource category key: "
-          + resourceCategory, hasResourceCategory);
-      verifyResourceContainsDefaultResourceTypes(
-          queue.getJSONObject(resourceCategory));
-    }
-  }
-
-  private void verifyResourceContainsDefaultResourceTypes(
-      JSONObject jsonObject) {
-    Object memory = jsonObject.opt("memory");
-    Object vCores = jsonObject.opt("vCores");
-
-    assertNotNull("Key 'memory' not found in: " + jsonObject, memory);
-    assertNotNull("Key 'vCores' not found in: " + jsonObject, vCores);
-  }
-
-  private void verifyResourcesContainCustomResourceTypes(JSONObject queue,
-      Set<String> resourceCategories) throws JSONException {
-    for (String resourceCategory : resourceCategories) {
-      assertTrue("Queue " + queue + " does not have resource category key: "
-          + resourceCategory, queue.has(resourceCategory));
-      verifyResourceContainsAllCustomResourceTypes(
-          queue.getJSONObject(resourceCategory));
-    }
-  }
-
-  private void verifyResourceContainsAllCustomResourceTypes(
-      JSONObject resourceCategory) throws JSONException {
-    assertTrue("resourceCategory does not have resourceInformations: "
-        + resourceCategory, resourceCategory.has("resourceInformations"));
-
-    JSONObject resourceInformations =
-        resourceCategory.getJSONObject("resourceInformations");
-    assertTrue(
-        "resourceInformations does not have resourceInformation object: "
-            + resourceInformations,
-        resourceInformations.has("resourceInformation"));
-    JSONArray customResources =
-        resourceInformations.getJSONArray("resourceInformation");
-
-    // customResources will include vcores / memory as well
-    assertEquals(
-        "Different number of custom resource types found than expected",
-        customResourceTypes.size(), customResources.length() - 2);
-
-    for (int i = 0; i < customResources.length(); i++) {
-      JSONObject customResource = customResources.getJSONObject(i);
-      assertTrue("Resource type does not have name field: " + customResource,
-          customResource.has("name"));
-      assertTrue("Resource type does not have name resourceType field: "
-          + customResource, customResource.has("resourceType"));
-      assertTrue(
-          "Resource type does not have name units field: " + customResource,
-          customResource.has("units"));
-      assertTrue(
-          "Resource type does not have name value field: " + customResource,
-          customResource.has("value"));
-
-      String name = customResource.getString("name");
-      String unit = customResource.getString("units");
-      String resourceType = customResource.getString("resourceType");
-      Long value = customResource.getLong("value");
-
-      if (ResourceInformation.MEMORY_URI.equals(name)
-          || ResourceInformation.VCORES_URI.equals(name)) {
-        continue;
-      }
-
-      assertTrue("Custom resource type " + name + " not found",
-          customResourceTypes.contains(name));
-      assertEquals("k", unit);
-      assertEquals(ResourceTypes.COUNTABLE,
-          ResourceTypes.valueOf(resourceType));
-      assertNotNull("Custom resource value " + value + " is null!", value);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/39ad9890/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/fairscheduler/FairSchedulerXmlVerifications.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/fairscheduler/FairSchedulerXmlVerifications.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/fairscheduler/FairSchedulerXmlVerifications.java
deleted file mode 100644
index 63ae7b7..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/fairscheduler/FairSchedulerXmlVerifications.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * 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.server.resourcemanager.webapp.fairscheduler;
-
-
-import com.google.common.collect.Sets;
-import org.apache.hadoop.yarn.api.protocolrecords.ResourceTypes;
-import org.apache.hadoop.yarn.api.records.ResourceInformation;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-import java.util.List;
-import java.util.Set;
-
-import static org.apache.hadoop.yarn.server.resourcemanager.webapp.helper.XmlCustomResourceTypeTestCase.toXml;
-import static org.apache.hadoop.yarn.webapp.WebServicesTestUtils.getXmlLong;
-import static org.apache.hadoop.yarn.webapp.WebServicesTestUtils.getXmlString;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-/**
- * This test helper class is primarily used by
- * {@link TestRMWebServicesFairSchedulerCustomResourceTypes}.
- */
-public class FairSchedulerXmlVerifications {
-
-  private static final Set<String> RESOURCE_FIELDS = Sets.newHashSet(
-      "minResources", "amUsedResources", "amMaxResources", "fairResources",
-      "clusterResources", "reservedResources", "maxResources", "usedResources",
-      "steadyFairResources", "demandResources");
-  private final Set<String> customResourceTypes;
-
-  FairSchedulerXmlVerifications(List<String> customResourceTypes) {
-    this.customResourceTypes = Sets.newHashSet(customResourceTypes);
-  }
-
-  public void verify(Element element) {
-    verifyResourcesContainDefaultResourceTypes(element, RESOURCE_FIELDS);
-    verifyResourcesContainCustomResourceTypes(element, RESOURCE_FIELDS);
-  }
-
-  private void verifyResourcesContainDefaultResourceTypes(Element queue,
-      Set<String> resourceCategories) {
-    for (String resourceCategory : resourceCategories) {
-      boolean hasResourceCategory = hasChild(queue, resourceCategory);
-      assertTrue("Queue " + queue + " does not have resource category key: "
-          + resourceCategory, hasResourceCategory);
-      verifyResourceContainsDefaultResourceTypes(
-              (Element) queue.getElementsByTagName(resourceCategory).item(0));
-    }
-  }
-
-  private void verifyResourceContainsDefaultResourceTypes(
-      Element element) {
-    Object memory = opt(element, "memory");
-    Object vCores = opt(element, "vCores");
-
-    assertNotNull("Key 'memory' not found in: " + element, memory);
-    assertNotNull("Key 'vCores' not found in: " + element, vCores);
-  }
-
-  private void verifyResourcesContainCustomResourceTypes(Element queue,
-      Set<String> resourceCategories) {
-    for (String resourceCategory : resourceCategories) {
-      assertTrue("Queue " + queue + " does not have key for resourceCategory: "
-          + resourceCategory, hasChild(queue, resourceCategory));
-      verifyResourceContainsCustomResourceTypes(
-              (Element) queue.getElementsByTagName(resourceCategory).item(0));
-    }
-  }
-
-  private void verifyResourceContainsCustomResourceTypes(
-      Element resourceCategory) {
-    assertEquals(
-        toXml(resourceCategory)
-            + " should have only one resourceInformations child!",
-        1, resourceCategory.getElementsByTagName("resourceInformations")
-            .getLength());
-    Element resourceInformations = (Element) resourceCategory
-        .getElementsByTagName("resourceInformations").item(0);
-
-    NodeList customResources =
-        resourceInformations.getElementsByTagName("resourceInformation");
-
-    // customResources will include vcores / memory as well
-    assertEquals(
-        "Different number of custom resource types found than expected",
-        customResourceTypes.size(), customResources.getLength() - 2);
-
-    for (int i = 0; i < customResources.getLength(); i++) {
-      Element customResource = (Element) customResources.item(i);
-      String name = getXmlString(customResource, "name");
-      String unit = getXmlString(customResource, "units");
-      String resourceType = getXmlString(customResource, "resourceType");
-      Long value = getXmlLong(customResource, "value");
-
-      if (ResourceInformation.MEMORY_URI.equals(name)
-          || ResourceInformation.VCORES_URI.equals(name)) {
-        continue;
-      }
-
-      assertTrue("Custom resource type " + name + " not found",
-          customResourceTypes.contains(name));
-      assertEquals("k", unit);
-      assertEquals(ResourceTypes.COUNTABLE,
-          ResourceTypes.valueOf(resourceType));
-      assertNotNull("Resource value should not be null for resource type "
-          + resourceType + ", listing xml contents: " + toXml(customResource),
-          value);
-    }
-  }
-
-  private Object opt(Node node, String child) {
-    NodeList nodes = getElementsByTagNameInternal(node, child);
-    if (nodes.getLength() > 0) {
-      return nodes.item(0);
-    }
-
-    return null;
-  }
-
-  private boolean hasChild(Node node, String child) {
-    return getElementsByTagNameInternal(node, child).getLength() > 0;
-  }
-
-  private NodeList getElementsByTagNameInternal(Node node, String child) {
-    if (node instanceof Element) {
-      return ((Element) node).getElementsByTagName(child);
-    } else if (node instanceof Document) {
-      return ((Document) node).getElementsByTagName(child);
-    } else {
-      throw new IllegalStateException("Unknown type of wrappedObject: " + node
-          + ", type: " + node.getClass());
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/39ad9890/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/fairscheduler/TestRMWebServicesFairSchedulerCustomResourceTypes.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/fairscheduler/TestRMWebServicesFairSchedulerCustomResourceTypes.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/fairscheduler/TestRMWebServicesFairSchedulerCustomResourceTypes.java
deleted file mode 100644
index de4d5a1..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/fairscheduler/TestRMWebServicesFairSchedulerCustomResourceTypes.java
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
- * 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.server.resourcemanager.webapp.fairscheduler;
-
-import com.google.inject.Guice;
-import com.google.inject.servlet.ServletModule;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.guice.spi.container.servlet.GuiceContainer;
-import com.sun.jersey.test.framework.WebAppDescriptor;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.yarn.api.records.Resource;
-import org.apache.hadoop.yarn.conf.YarnConfiguration;
-import org.apache.hadoop.yarn.server.resourcemanager.MockRM;
-import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager;
-import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ResourceScheduler;
-import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FSLeafQueue;
-import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler;
-import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.QueueManager;
-import org.apache.hadoop.yarn.server.resourcemanager.webapp.JAXBContextResolver;
-import org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWebServices;
-import org.apache.hadoop.yarn.server.resourcemanager.webapp.helper.*;
-import org.apache.hadoop.yarn.util.resource.ResourceUtils;
-import org.apache.hadoop.yarn.webapp.GenericExceptionHandler;
-import org.apache.hadoop.yarn.webapp.GuiceServletConfig;
-import org.apache.hadoop.yarn.webapp.JerseyTestBase;
-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.Element;
-import javax.ws.rs.core.MediaType;
-import java.lang.reflect.Method;
-import java.util.List;
-import java.util.Map;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * This class is to test response representations of queue resources,
- * explicitly setting custom resource types. with the help of
- * {@link CustomResourceTypesConfigurationProvider}
- */
-public class TestRMWebServicesFairSchedulerCustomResourceTypes
-    extends JerseyTestBase {
-  private static MockRM rm;
-  private static YarnConfiguration conf;
-
-  private static class WebServletModule extends ServletModule {
-    @Override
-    protected void configureServlets() {
-      bind(JAXBContextResolver.class);
-      bind(RMWebServices.class);
-      bind(GenericExceptionHandler.class);
-      conf = new YarnConfiguration();
-      conf.setClass(YarnConfiguration.RM_SCHEDULER, FairScheduler.class,
-          ResourceScheduler.class);
-      initResourceTypes(conf);
-      rm = new MockRM(conf);
-      bind(ResourceManager.class).toInstance(rm);
-      serve("/*").with(GuiceContainer.class);
-    }
-
-    private void initResourceTypes(YarnConfiguration conf) {
-      conf.set(YarnConfiguration.RM_CONFIGURATION_PROVIDER_CLASS,
-          CustomResourceTypesConfigurationProvider.class.getName());
-      ResourceUtils.resetResourceTypes(conf);
-    }
-  }
-
-  @Before
-  @Override
-  public void setUp() throws Exception {
-    super.setUp();
-    createInjectorForWebServletModule();
-  }
-
-  @After
-  public void tearDown() {
-    ResourceUtils.resetResourceTypes(new Configuration());
-  }
-
-  private void createInjectorForWebServletModule() {
-    GuiceServletConfig
-        .setInjector(Guice.createInjector(new WebServletModule()));
-  }
-
-  @After
-  public void teardown() {
-    CustomResourceTypesConfigurationProvider.reset();
-  }
-
-  public TestRMWebServicesFairSchedulerCustomResourceTypes() {
-    super(new WebAppDescriptor.Builder(
-        "org.apache.hadoop.yarn.server.resourcemanager.webapp")
-            .contextListenerClass(GuiceServletConfig.class)
-            .filterClass(com.google.inject.servlet.GuiceFilter.class)
-            .contextPath("jersey-guice-filter").servletPath("/").build());
-  }
-
-  @Test
-  public void testClusterSchedulerWithCustomResourceTypesJson() {
-    FairScheduler scheduler = (FairScheduler) rm.getResourceScheduler();
-    QueueManager queueManager = scheduler.getQueueManager();
-    // create LeafQueues
-    queueManager.getLeafQueue("root.q.subqueue1", true);
-    queueManager.getLeafQueue("root.q.subqueue2", true);
-
-    FSLeafQueue subqueue1 =
-        queueManager.getLeafQueue("root.q.subqueue1", false);
-    incrementUsedResourcesOnQueue(subqueue1, 33L);
-
-    WebResource path =
-        resource().path("ws").path("v1").path("cluster").path("scheduler");
-    ClientResponse response =
-        path.accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
-
-    verifyJsonResponse(path, response,
-            CustomResourceTypesConfigurationProvider.getCustomResourceTypes());
-  }
-
-  @Test
-  public void testClusterSchedulerWithCustomResourceTypesXml() {
-    FairScheduler scheduler = (FairScheduler) rm.getResourceScheduler();
-    QueueManager queueManager = scheduler.getQueueManager();
-    // create LeafQueues
-    queueManager.getLeafQueue("root.q.subqueue1", true);
-    queueManager.getLeafQueue("root.q.subqueue2", true);
-
-    FSLeafQueue subqueue1 =
-        queueManager.getLeafQueue("root.q.subqueue1", false);
-    incrementUsedResourcesOnQueue(subqueue1, 33L);
-
-    WebResource path =
-        resource().path("ws").path("v1").path("cluster").path("scheduler");
-    ClientResponse response =
-        path.accept(MediaType.APPLICATION_XML).get(ClientResponse.class);
-
-    verifyXmlResponse(path, response,
-        CustomResourceTypesConfigurationProvider.getCustomResourceTypes());
-  }
-
-  @Test
-  public void testClusterSchedulerWithElevenCustomResourceTypesXml() {
-    CustomResourceTypesConfigurationProvider.setNumberOfResourceTypes(11);
-    createInjectorForWebServletModule();
-
-    FairScheduler scheduler = (FairScheduler) rm.getResourceScheduler();
-    QueueManager queueManager = scheduler.getQueueManager();
-    // create LeafQueues
-    queueManager.getLeafQueue("root.q.subqueue1", true);
-    queueManager.getLeafQueue("root.q.subqueue2", true);
-
-    FSLeafQueue subqueue1 =
-        queueManager.getLeafQueue("root.q.subqueue1", false);
-    incrementUsedResourcesOnQueue(subqueue1, 33L);
-
-    WebResource path =
-        resource().path("ws").path("v1").path("cluster").path("scheduler");
-    ClientResponse response =
-        path.accept(MediaType.APPLICATION_XML).get(ClientResponse.class);
-
-    verifyXmlResponse(path, response,
-        CustomResourceTypesConfigurationProvider.getCustomResourceTypes());
-  }
-
-  @Test
-  public void testClusterSchedulerElevenWithCustomResourceTypesJson() {
-    CustomResourceTypesConfigurationProvider.setNumberOfResourceTypes(11);
-    createInjectorForWebServletModule();
-
-    FairScheduler scheduler = (FairScheduler) rm.getResourceScheduler();
-    QueueManager queueManager = scheduler.getQueueManager();
-    // create LeafQueues
-    queueManager.getLeafQueue("root.q.subqueue1", true);
-    queueManager.getLeafQueue("root.q.subqueue2", true);
-
-    FSLeafQueue subqueue1 =
-        queueManager.getLeafQueue("root.q.subqueue1", false);
-    incrementUsedResourcesOnQueue(subqueue1, 33L);
-
-    WebResource path =
-        resource().path("ws").path("v1").path("cluster").path("scheduler");
-    ClientResponse response =
-        path.accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
-
-    verifyJsonResponse(path, response,
-        CustomResourceTypesConfigurationProvider.getCustomResourceTypes());
-  }
-
-  private void verifyJsonResponse(WebResource path, ClientResponse response,
-      List<String> customResourceTypes) {
-    JsonCustomResourceTypeTestcase testCase =
-        new JsonCustomResourceTypeTestcase(path,
-            new BufferedClientResponse(response));
-    testCase.verify(json -> {
-      try {
-        JSONArray queues = json.getJSONObject("scheduler")
-            .getJSONObject("schedulerInfo").getJSONObject("rootQueue")
-            .getJSONObject("childQueues").getJSONArray("queue");
-
-        // childQueueInfo consists of subqueue1 and subqueue2 info
-        assertEquals(2, queues.length());
-        JSONObject firstChildQueue = queues.getJSONObject(0);
-        new FairSchedulerJsonVerifications(customResourceTypes)
-            .verify(firstChildQueue);
-      } catch (JSONException e) {
-        throw new RuntimeException(e);
-      }
-    });
-  }
-
-  private void verifyXmlResponse(WebResource path, ClientResponse response,
-          List<String> customResourceTypes) {
-    XmlCustomResourceTypeTestCase testCase = new XmlCustomResourceTypeTestCase(
-        path, new BufferedClientResponse(response));
-
-    testCase.verify(xml -> {
-      Element scheduler =
-          (Element) xml.getElementsByTagName("scheduler").item(0);
-      Element schedulerInfo =
-          (Element) scheduler.getElementsByTagName("schedulerInfo").item(0);
-      Element rootQueue =
-          (Element) schedulerInfo.getElementsByTagName("rootQueue").item(0);
-
-      Element childQueues =
-          (Element) rootQueue.getElementsByTagName("childQueues").item(0);
-      Element queue =
-          (Element) childQueues.getElementsByTagName("queue").item(0);
-      new FairSchedulerXmlVerifications(customResourceTypes).verify(queue);
-    });
-  }
-
-  private void incrementUsedResourcesOnQueue(final FSLeafQueue queue,
-      final long value) {
-    try {
-      Method incUsedResourceMethod = queue.getClass().getSuperclass()
-          .getDeclaredMethod("incUsedResource", Resource.class);
-      incUsedResourceMethod.setAccessible(true);
-
-      Map<String, Long> customResources =
-          CustomResourceTypesConfigurationProvider.getCustomResourceTypes()
-              .stream()
-              .collect(Collectors.toMap(Function.identity(), v -> value));
-
-      incUsedResourceMethod.invoke(queue,
-          Resource.newInstance(20, 30, customResources));
-    } catch (Exception e) {
-      throw new RuntimeException(e);
-    }
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/39ad9890/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/AppInfoJsonVerifications.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/AppInfoJsonVerifications.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/AppInfoJsonVerifications.java
deleted file mode 100644
index 4ab1443..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/AppInfoJsonVerifications.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * 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.server.resourcemanager.webapp.helper;
-
-import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager;
-import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMApp;
-import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppInfo;
-import org.codehaus.jettison.json.JSONException;
-import org.codehaus.jettison.json.JSONObject;
-import static org.apache.hadoop.yarn.webapp.WebServicesTestUtils.checkStringEqual;
-import static org.apache.hadoop.yarn.webapp.WebServicesTestUtils.checkStringMatch;
-import static org.junit.Assert.*;
-
-/**
- * Contains all value verifications that are needed to verify {@link AppInfo}
- * JSON objects.
- */
-public final class AppInfoJsonVerifications {
-
-  private AppInfoJsonVerifications() {
-    //utility class
-  }
-
-  /**
-   * Tests whether {@link AppInfo} representation object contains the required
-   * values as per defined in the specified app parameter.
-   * @param  app  an RMApp instance that contains the required values
-   *              to test against.
-   */
-  public static void verify(JSONObject info, RMApp app) throws JSONException {
-    checkStringMatch("id", app.getApplicationId().toString(),
-        info.getString("id"));
-    checkStringMatch("user", app.getUser(), info.getString("user"));
-    checkStringMatch("name", app.getName(), info.getString("name"));
-    checkStringMatch("applicationType", app.getApplicationType(),
-        info.getString("applicationType"));
-    checkStringMatch("queue", app.getQueue(), info.getString("queue"));
-    assertEquals("priority doesn't match", 0, info.getInt("priority"));
-    checkStringMatch("state", app.getState().toString(),
-        info.getString("state"));
-    checkStringMatch("finalStatus", app.getFinalApplicationStatus().toString(),
-        info.getString("finalStatus"));
-    assertEquals("progress doesn't match", 0,
-        (float) info.getDouble("progress"), 0.0);
-    if ("UNASSIGNED".equals(info.getString("trackingUI"))) {
-      checkStringMatch("trackingUI", "UNASSIGNED",
-          info.getString("trackingUI"));
-    }
-    checkStringEqual("diagnostics", app.getDiagnostics().toString(),
-        info.getString("diagnostics"));
-    assertEquals("clusterId doesn't match",
-        ResourceManager.getClusterTimeStamp(), info.getLong("clusterId"));
-    assertEquals("startedTime doesn't match", app.getStartTime(),
-        info.getLong("startedTime"));
-    assertEquals("finishedTime doesn't match", app.getFinishTime(),
-        info.getLong("finishedTime"));
-    assertTrue("elapsed time not greater than 0",
-        info.getLong("elapsedTime") > 0);
-    checkStringMatch("amHostHttpAddress",
-        app.getCurrentAppAttempt().getMasterContainer().getNodeHttpAddress(),
-        info.getString("amHostHttpAddress"));
-    assertTrue("amContainerLogs doesn't match",
-        info.getString("amContainerLogs").startsWith("http://"));
-    assertTrue("amContainerLogs doesn't contain user info",
-        info.getString("amContainerLogs").endsWith("/" + app.getUser()));
-    assertEquals("allocatedMB doesn't match", 1024, info.getInt("allocatedMB"));
-    assertEquals("allocatedVCores doesn't match", 1,
-        info.getInt("allocatedVCores"));
-    assertEquals("queueUsagePerc doesn't match", 50.0f,
-        (float) info.getDouble("queueUsagePercentage"), 0.01f);
-    assertEquals("clusterUsagePerc doesn't match", 50.0f,
-        (float) info.getDouble("clusterUsagePercentage"), 0.01f);
-    assertEquals("numContainers doesn't match", 1,
-        info.getInt("runningContainers"));
-    assertNotNull("preemptedResourceSecondsMap should not be null",
-        info.getJSONObject("preemptedResourceSecondsMap"));
-    assertEquals("preemptedResourceMB doesn't match",
-        app.getRMAppMetrics().getResourcePreempted().getMemorySize(),
-        info.getInt("preemptedResourceMB"));
-    assertEquals("preemptedResourceVCores doesn't match",
-        app.getRMAppMetrics().getResourcePreempted().getVirtualCores(),
-        info.getInt("preemptedResourceVCores"));
-    assertEquals("numNonAMContainerPreempted doesn't match",
-        app.getRMAppMetrics().getNumNonAMContainersPreempted(),
-        info.getInt("numNonAMContainerPreempted"));
-    assertEquals("numAMContainerPreempted doesn't match",
-        app.getRMAppMetrics().getNumAMContainersPreempted(),
-        info.getInt("numAMContainerPreempted"));
-    assertEquals("Log aggregation Status doesn't match",
-        app.getLogAggregationStatusForAppReport().toString(),
-        info.getString("logAggregationStatus"));
-    assertEquals("unmanagedApplication doesn't match",
-        app.getApplicationSubmissionContext().getUnmanagedAM(),
-        info.getBoolean("unmanagedApplication"));
-
-    if (app.getApplicationSubmissionContext()
-        .getNodeLabelExpression() != null) {
-      assertEquals("appNodeLabelExpression doesn't match",
-          app.getApplicationSubmissionContext().getNodeLabelExpression(),
-          info.getString("appNodeLabelExpression"));
-    }
-    assertEquals("amNodeLabelExpression doesn't match",
-        app.getAMResourceRequests().get(0).getNodeLabelExpression(),
-        info.getString("amNodeLabelExpression"));
-    assertEquals("amRPCAddress",
-        AppInfo.getAmRPCAddressFromRMAppAttempt(app.getCurrentAppAttempt()),
-        info.getString("amRPCAddress"));
-  }
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/39ad9890/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/AppInfoXmlVerifications.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/AppInfoXmlVerifications.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/AppInfoXmlVerifications.java
deleted file mode 100644
index 7c5b6db..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/AppInfoXmlVerifications.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * 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.server.resourcemanager.webapp.helper;
-
-import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager;
-import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMApp;
-import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppInfo;
-import org.apache.hadoop.yarn.webapp.WebServicesTestUtils;
-import org.w3c.dom.Element;
-import static org.apache.hadoop.yarn.webapp.WebServicesTestUtils.checkStringMatch;
-import static org.apache.hadoop.yarn.webapp.WebServicesTestUtils.getXmlBoolean;
-import static org.apache.hadoop.yarn.webapp.WebServicesTestUtils.getXmlFloat;
-import static org.apache.hadoop.yarn.webapp.WebServicesTestUtils.getXmlInt;
-import static org.apache.hadoop.yarn.webapp.WebServicesTestUtils.getXmlLong;
-import static org.apache.hadoop.yarn.webapp.WebServicesTestUtils.getXmlString;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-/**
- * Contains all value verifications that are needed to verify {@link AppInfo}
- * XML documents.
- */
-public final class AppInfoXmlVerifications {
-
-  private AppInfoXmlVerifications() {
-    //utility class
-  }
-
-  /**
-   * Tests whether {@link AppInfo} representation object contains the required
-   * values as per defined in the specified app parameter.
-   * @param info
-   * @param  app  an RMApp instance that contains the required values
-   */
-  public static void verify(Element info, RMApp app) {
-    checkStringMatch("id", app.getApplicationId()
-            .toString(), getXmlString(info, "id"));
-    checkStringMatch("user", app.getUser(),
-            getXmlString(info, "user"));
-    checkStringMatch("name", app.getName(),
-            getXmlString(info, "name"));
-    checkStringMatch("applicationType",
-            app.getApplicationType(), getXmlString(info, "applicationType"));
-    checkStringMatch("queue", app.getQueue(),
-            getXmlString(info, "queue"));
-    assertEquals("priority doesn't match", 0, getXmlInt(info, "priority"));
-    checkStringMatch("state", app.getState().toString(),
-            getXmlString(info, "state"));
-    checkStringMatch("finalStatus", app
-            .getFinalApplicationStatus().toString(),
-            getXmlString(info, "finalStatus"));
-    assertEquals("progress doesn't match", 0, getXmlFloat(info, "progress"),
-        0.0);
-    if ("UNASSIGNED".equals(getXmlString(info, "trackingUI"))) {
-      checkStringMatch("trackingUI", "UNASSIGNED",
-              getXmlString(info, "trackingUI"));
-    }
-    WebServicesTestUtils.checkStringEqual("diagnostics",
-            app.getDiagnostics().toString(), getXmlString(info, "diagnostics"));
-    assertEquals("clusterId doesn't match",
-            ResourceManager.getClusterTimeStamp(),
-            getXmlLong(info, "clusterId"));
-    assertEquals("startedTime doesn't match", app.getStartTime(),
-            getXmlLong(info, "startedTime"));
-    assertEquals("finishedTime doesn't match", app.getFinishTime(),
-            getXmlLong(info, "finishedTime"));
-    assertTrue("elapsed time not greater than 0",
-            getXmlLong(info, "elapsedTime") > 0);
-    checkStringMatch("amHostHttpAddress", app
-                    .getCurrentAppAttempt().getMasterContainer()
-                    .getNodeHttpAddress(),
-            getXmlString(info, "amHostHttpAddress"));
-    assertTrue("amContainerLogs doesn't match",
-        getXmlString(info, "amContainerLogs").startsWith("http://"));
-    assertTrue("amContainerLogs doesn't contain user info",
-        getXmlString(info, "amContainerLogs").endsWith("/" + app.getUser()));
-    assertEquals("allocatedMB doesn't match", 1024,
-            getXmlInt(info, "allocatedMB"));
-    assertEquals("allocatedVCores doesn't match", 1,
-            getXmlInt(info, "allocatedVCores"));
-    assertEquals("queueUsagePerc doesn't match", 50.0f,
-            getXmlFloat(info, "queueUsagePercentage"), 0.01f);
-    assertEquals("clusterUsagePerc doesn't match", 50.0f,
-            getXmlFloat(info, "clusterUsagePercentage"), 0.01f);
-    assertEquals("numContainers doesn't match", 1,
-        getXmlInt(info, "runningContainers"));
-    assertNotNull("preemptedResourceSecondsMap should not be null",
-            info.getElementsByTagName("preemptedResourceSecondsMap"));
-    assertEquals("preemptedResourceMB doesn't match", app
-                    .getRMAppMetrics().getResourcePreempted().getMemorySize(),
-            getXmlInt(info, "preemptedResourceMB"));
-    assertEquals("preemptedResourceVCores doesn't match", app
-                    .getRMAppMetrics().getResourcePreempted().getVirtualCores(),
-            getXmlInt(info, "preemptedResourceVCores"));
-    assertEquals("numNonAMContainerPreempted doesn't match", app
-                    .getRMAppMetrics().getNumNonAMContainersPreempted(),
-            getXmlInt(info, "numNonAMContainerPreempted"));
-    assertEquals("numAMContainerPreempted doesn't match", app
-                    .getRMAppMetrics().getNumAMContainersPreempted(),
-            getXmlInt(info, "numAMContainerPreempted"));
-    assertEquals("Log aggregation Status doesn't match", app
-                    .getLogAggregationStatusForAppReport().toString(),
-            getXmlString(info, "logAggregationStatus"));
-    assertEquals("unmanagedApplication doesn't match", app
-                    .getApplicationSubmissionContext().getUnmanagedAM(),
-            getXmlBoolean(info, "unmanagedApplication"));
-    assertEquals("unmanagedApplication doesn't match",
-            app.getApplicationSubmissionContext().getNodeLabelExpression(),
-            getXmlString(info, "appNodeLabelExpression"));
-    assertEquals("unmanagedApplication doesn't match",
-            app.getAMResourceRequests().get(0).getNodeLabelExpression(),
-            getXmlString(info, "amNodeLabelExpression"));
-    assertEquals("amRPCAddress",
-            AppInfo.getAmRPCAddressFromRMAppAttempt(app.getCurrentAppAttempt()),
-            getXmlString(info, "amRPCAddress"));
-  }
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/39ad9890/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/BufferedClientResponse.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/BufferedClientResponse.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/BufferedClientResponse.java
deleted file mode 100644
index a8990ca..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/BufferedClientResponse.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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.server.resourcemanager.webapp.helper;
-
-
-import com.sun.jersey.api.client.ClientHandlerException;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.UniformInterfaceException;
-
-import javax.ws.rs.core.MediaType;
-import java.io.IOException;
-
-/**
- * This class is merely a wrapper for {@link ClientResponse}. Given that the
- * entity input stream of {@link ClientResponse} can be read only once by
- * default and for some tests it is convenient to read the input stream many
- * times, this class hides the details of how to do that and prevents
- * unnecessary code duplication in tests.
- */
-public class BufferedClientResponse {
-  private ClientResponse response;
-
-  public BufferedClientResponse(ClientResponse response) {
-    response.bufferEntity();
-    this.response = response;
-  }
-
-  public <T> T getEntity(Class<T> clazz)
-          throws ClientHandlerException, UniformInterfaceException {
-    try {
-      response.getEntityInputStream().reset();
-    } catch (IOException e) {
-      throw new RuntimeException(e);
-    }
-    return response.getEntity(clazz);
-  }
-
-  public MediaType getType() {
-    return response.getType();
-  }
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/39ad9890/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/JsonCustomResourceTypeTestcase.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/JsonCustomResourceTypeTestcase.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/JsonCustomResourceTypeTestcase.java
deleted file mode 100644
index 9d6a111..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/JsonCustomResourceTypeTestcase.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * 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.server.resourcemanager.webapp.helper;
-
-import com.sun.jersey.api.client.WebResource;
-import org.apache.hadoop.http.JettyUtils;
-import org.codehaus.jettison.json.JSONObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.ws.rs.core.MediaType;
-
-import java.util.function.Consumer;
-
-import static org.junit.Assert.*;
-
-/**
- * This class hides the implementation details of how to verify the structure of
- * JSON responses. Tests should only provide the path of the
- * {@link WebResource}, the response from the resource and
- * the verifier Consumer to
- * {@link JsonCustomResourceTypeTestcase#verify(Consumer)}. An instance of
- * {@link JSONObject} will be passed to that consumer to be able to
- * verify the response.
- */
-public class JsonCustomResourceTypeTestcase {
-  private static final Logger LOG =
-      LoggerFactory.getLogger(JsonCustomResourceTypeTestcase.class);
-
-  private final WebResource path;
-  private final BufferedClientResponse response;
-  private final JSONObject parsedResponse;
-
-  public JsonCustomResourceTypeTestcase(WebResource path,
-                                        BufferedClientResponse response) {
-    this.path = path;
-    this.response = response;
-    this.parsedResponse = response.getEntity(JSONObject.class);
-  }
-
-  public void verify(Consumer<JSONObject> verifier) {
-    assertEquals(MediaType.APPLICATION_JSON_TYPE + "; " + JettyUtils.UTF_8,
-        response.getType().toString());
-
-    logResponse();
-
-    String responseStr = response.getEntity(String.class);
-    if (responseStr == null || responseStr.isEmpty()) {
-      throw new IllegalStateException("Response is null or empty!");
-    }
-    verifier.accept(parsedResponse);
-  }
-
-  private void logResponse() {
-    String responseStr = response.getEntity(String.class);
-    LOG.info("Raw response from service URL {}: {}", path.toString(),
-        responseStr);
-    LOG.info("Parsed response from service URL {}: {}", path.toString(),
-        parsedResponse);
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hadoop/blob/39ad9890/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/ResourceRequestsJsonVerifications.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/ResourceRequestsJsonVerifications.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/ResourceRequestsJsonVerifications.java
deleted file mode 100644
index 6e58a89..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/ResourceRequestsJsonVerifications.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * 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.server.resourcemanager.webapp.helper;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import org.apache.hadoop.yarn.api.protocolrecords.ResourceTypes;
-import org.apache.hadoop.yarn.api.records.ResourceInformation;
-import org.apache.hadoop.yarn.api.records.ResourceRequest;
-import org.codehaus.jettison.json.JSONArray;
-import org.codehaus.jettison.json.JSONException;
-import org.codehaus.jettison.json.JSONObject;
-
-import java.util.List;
-import java.util.Map;
-
-import static junit.framework.TestCase.assertTrue;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-/**
- * Performs value verifications on
- * {@link org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ResourceRequestInfo}
- * objects against the values of {@link ResourceRequest}. With the help of the
- * {@link Builder}, users can also make verifications of the custom resource
- * types and its values.
- */
-public class ResourceRequestsJsonVerifications {
-  private final ResourceRequest resourceRequest;
-  private final JSONObject requestInfo;
-  private final Map<String, Long> customResourceTypes;
-  private final List<String> expectedCustomResourceTypes;
-
-  ResourceRequestsJsonVerifications(Builder builder) {
-    this.resourceRequest = builder.resourceRequest;
-    this.requestInfo = builder.requestInfo;
-    this.customResourceTypes = builder.customResourceTypes;
-    this.expectedCustomResourceTypes = builder.expectedCustomResourceTypes;
-  }
-
-  public static void verify(JSONObject requestInfo, ResourceRequest rr)
-      throws JSONException {
-    createDefaultBuilder(requestInfo, rr).build().verify();
-  }
-
-  public static void verifyWithCustomResourceTypes(JSONObject requestInfo,
-      ResourceRequest resourceRequest, List<String> expectedResourceTypes)
-      throws JSONException {
-
-    createDefaultBuilder(requestInfo, resourceRequest)
-        .withExpectedCustomResourceTypes(expectedResourceTypes)
-        .withCustomResourceTypes(
-            extractActualCustomResourceTypes(requestInfo, expectedResourceTypes))
-        .build().verify();
-  }
-
-  private static Builder createDefaultBuilder(JSONObject requestInfo,
-      ResourceRequest resourceRequest) {
-    return new ResourceRequestsJsonVerifications.Builder()
-            .withRequest(resourceRequest)
-            .withRequestInfoJson(requestInfo);
-  }
-
-  private static Map<String, Long> extractActualCustomResourceTypes(
-      JSONObject requestInfo, List<String> expectedResourceTypes)
-      throws JSONException {
-    JSONObject capability = requestInfo.getJSONObject("capability");
-    Map<String, Long> resourceAndValue =
-        extractCustomResorceTypeValues(capability, expectedResourceTypes);
-    Map.Entry<String, Long> resourceEntry =
-        resourceAndValue.entrySet().iterator().next();
-
-    assertTrue(
-        "Found resource type: " + resourceEntry.getKey()
-            + " is not in expected resource types: " + expectedResourceTypes,
-        expectedResourceTypes.contains(resourceEntry.getKey()));
-
-    return resourceAndValue;
-  }
-
-  private static Map<String, Long> extractCustomResorceTypeValues(
-      JSONObject capability, List<String> expectedResourceTypes)
-      throws JSONException {
-    assertTrue(
-        "resourceCategory does not have resourceInformations: " + capability,
-        capability.has("resourceInformations"));
-
-    JSONObject resourceInformations =
-        capability.getJSONObject("resourceInformations");
-    assertTrue(
-        "resourceInformations does not have resourceInformation object: "
-            + resourceInformations,
-        resourceInformations.has("resourceInformation"));
-    JSONArray customResources =
-        resourceInformations.getJSONArray("resourceInformation");
-
-    // customResources will include vcores / memory as well
-    assertEquals(
-        "Different number of custom resource types found than expected",
-        expectedResourceTypes.size(), customResources.length() - 2);
-
-    Map<String, Long> resourceValues = Maps.newHashMap();
-    for (int i = 0; i < customResources.length(); i++) {
-      JSONObject customResource = customResources.getJSONObject(i);
-      assertTrue("Resource type does not have name field: " + customResource,
-          customResource.has("name"));
-      assertTrue("Resource type does not have name resourceType field: "
-          + customResource, customResource.has("resourceType"));
-      assertTrue(
-          "Resource type does not have name units field: " + customResource,
-          customResource.has("units"));
-      assertTrue(
-          "Resource type does not have name value field: " + customResource,
-          customResource.has("value"));
-
-      String name = customResource.getString("name");
-      String unit = customResource.getString("units");
-      String resourceType = customResource.getString("resourceType");
-      Long value = customResource.getLong("value");
-
-      if (ResourceInformation.MEMORY_URI.equals(name)
-          || ResourceInformation.VCORES_URI.equals(name)) {
-        continue;
-      }
-
-      assertTrue("Custom resource type " + name + " not found",
-          expectedResourceTypes.contains(name));
-      assertEquals("k", unit);
-      assertEquals(ResourceTypes.COUNTABLE,
-          ResourceTypes.valueOf(resourceType));
-      assertNotNull("Custom resource value " + value + " is null!", value);
-      resourceValues.put(name, value);
-    }
-
-    return resourceValues;
-  }
-
-  private void verify() throws JSONException {
-    assertEquals("nodeLabelExpression doesn't match",
-        resourceRequest.getNodeLabelExpression(),
-            requestInfo.getString("nodeLabelExpression"));
-    assertEquals("numContainers doesn't match",
-            resourceRequest.getNumContainers(),
-            requestInfo.getInt("numContainers"));
-    assertEquals("relaxLocality doesn't match",
-            resourceRequest.getRelaxLocality(),
-            requestInfo.getBoolean("relaxLocality"));
-    assertEquals("priority does not match",
-            resourceRequest.getPriority().getPriority(),
-            requestInfo.getInt("priority"));
-    assertEquals("resourceName does not match",
-            resourceRequest.getResourceName(),
-            requestInfo.getString("resourceName"));
-    assertEquals("memory does not match",
-        resourceRequest.getCapability().getMemorySize(),
-            requestInfo.getJSONObject("capability").getLong("memory"));
-    assertEquals("vCores does not match",
-        resourceRequest.getCapability().getVirtualCores(),
-            requestInfo.getJSONObject("capability").getLong("vCores"));
-
-    verifyAtLeastOneCustomResourceIsSerialized();
-
-    JSONObject executionTypeRequest =
-            requestInfo.getJSONObject("executionTypeRequest");
-    assertEquals("executionType does not match",
-        resourceRequest.getExecutionTypeRequest().getExecutionType().name(),
-            executionTypeRequest.getString("executionType"));
-    assertEquals("enforceExecutionType does not match",
-            resourceRequest.getExecutionTypeRequest().getEnforceExecutionType(),
-            executionTypeRequest.getBoolean("enforceExecutionType"));
-  }
-
-  /**
-   * JSON serialization produces "invalid JSON" by default as maps are
-   * serialized like this:
-   * "customResources":{"entry":{"key":"customResource-1","value":"0"}}
-   * If the map has multiple keys then multiple entries will be serialized.
-   * Our json parser in tests cannot handle duplicates therefore only one
-   * custom resource will be in the parsed json. See:
-   * https://issues.apache.org/jira/browse/YARN-7505
-   */
-  private void verifyAtLeastOneCustomResourceIsSerialized() {
-    boolean resourceFound = false;
-    for (String expectedCustomResourceType : expectedCustomResourceTypes) {
-      if (customResourceTypes.containsKey(expectedCustomResourceType)) {
-        resourceFound = true;
-        Long resourceValue =
-            customResourceTypes.get(expectedCustomResourceType);
-        assertNotNull("Resource value should not be null!", resourceValue);
-      }
-    }
-    assertTrue("No custom resource type can be found in the response!",
-        resourceFound);
-  }
-
-  /**
-   * Builder class for {@link ResourceRequestsJsonVerifications}.
-   */
-  public static final class Builder {
-    private List<String> expectedCustomResourceTypes = Lists.newArrayList();
-    private Map<String, Long> customResourceTypes;
-    private ResourceRequest resourceRequest;
-    private JSONObject requestInfo;
-
-    Builder() {
-    }
-
-    public static Builder create() {
-      return new Builder();
-    }
-
-    Builder withExpectedCustomResourceTypes(
-            List<String> expectedCustomResourceTypes) {
-      this.expectedCustomResourceTypes = expectedCustomResourceTypes;
-      return this;
-    }
-
-    Builder withCustomResourceTypes(
-            Map<String, Long> customResourceTypes) {
-      this.customResourceTypes = customResourceTypes;
-      return this;
-    }
-
-    Builder withRequest(ResourceRequest resourceRequest) {
-      this.resourceRequest = resourceRequest;
-      return this;
-    }
-
-    Builder withRequestInfoJson(JSONObject requestInfo) {
-      this.requestInfo = requestInfo;
-      return this;
-    }
-
-    public ResourceRequestsJsonVerifications build() {
-      return new ResourceRequestsJsonVerifications(this);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/39ad9890/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/ResourceRequestsXmlVerifications.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/ResourceRequestsXmlVerifications.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/ResourceRequestsXmlVerifications.java
deleted file mode 100644
index af9b0f3..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/ResourceRequestsXmlVerifications.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * 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.server.resourcemanager.webapp.helper;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-import org.apache.hadoop.yarn.api.protocolrecords.ResourceTypes;
-import org.apache.hadoop.yarn.api.records.ResourceInformation;
-import org.apache.hadoop.yarn.api.records.ResourceRequest;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import static junit.framework.TestCase.assertTrue;
-import static org.apache.hadoop.yarn.server.resourcemanager.webapp.helper.XmlCustomResourceTypeTestCase.toXml;
-import static org.apache.hadoop.yarn.webapp.WebServicesTestUtils.getXmlBoolean;
-import static org.apache.hadoop.yarn.webapp.WebServicesTestUtils.getXmlInt;
-import static org.apache.hadoop.yarn.webapp.WebServicesTestUtils.getXmlLong;
-import static org.apache.hadoop.yarn.webapp.WebServicesTestUtils.getXmlString;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-/**
- * Performs value verifications on
- * {@link org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ResourceRequestInfo}
- * objects against the values of {@link ResourceRequest}. With the help of the
- * {@link Builder}, users can also make verifications of the custom resource
- * types and its values.
- */
-public class ResourceRequestsXmlVerifications {
-  private final ResourceRequest resourceRequest;
-  private final Element requestInfo;
-  private final Map<String, Long> customResourceTypes;
-  private final List<String> expectedCustomResourceTypes;
-
-  ResourceRequestsXmlVerifications(Builder builder) {
-    this.resourceRequest = builder.resourceRequest;
-    this.requestInfo = builder.requestInfo;
-    this.customResourceTypes = builder.customResourceTypes;
-    this.expectedCustomResourceTypes = builder.expectedCustomResourceTypes;
-  }
-
-  public static void verifyWithCustomResourceTypes(Element requestInfo,
-      ResourceRequest resourceRequest, List<String> expectedResourceTypes) {
-
-    createDefaultBuilder(requestInfo, resourceRequest)
-        .withExpectedCustomResourceTypes(expectedResourceTypes)
-        .withCustomResourceTypes(extractActualCustomResourceType(requestInfo,
-            expectedResourceTypes))
-        .build().verify();
-  }
-
-  private static Builder createDefaultBuilder(Element requestInfo,
-      ResourceRequest resourceRequest) {
-    return new ResourceRequestsXmlVerifications.Builder()
-        .withRequest(resourceRequest).withRequestInfo(requestInfo);
-  }
-
-  private static Map<String, Long> extractActualCustomResourceType(
-      Element requestInfo, List<String> expectedResourceTypes) {
-    Element capability =
-        (Element) requestInfo.getElementsByTagName("capability").item(0);
-
-    return extractCustomResorceTypes(capability,
-        Sets.newHashSet(expectedResourceTypes));
-  }
-
-  private static Map<String, Long> extractCustomResorceTypes(Element capability,
-      Set<String> expectedResourceTypes) {
-    assertEquals(
-        toXml(capability) + " should have only one resourceInformations child!",
-        1, capability.getElementsByTagName("resourceInformations").getLength());
-    Element resourceInformations = (Element) capability
-        .getElementsByTagName("resourceInformations").item(0);
-
-    NodeList customResources =
-        resourceInformations.getElementsByTagName("resourceInformation");
-
-    // customResources will include vcores / memory as well
-    assertEquals(
-        "Different number of custom resource types found than expected",
-        expectedResourceTypes.size(), customResources.getLength() - 2);
-
-    Map<String, Long> resourceTypesAndValues = Maps.newHashMap();
-    for (int i = 0; i < customResources.getLength(); i++) {
-      Element customResource = (Element) customResources.item(i);
-      String name = getXmlString(customResource, "name");
-      String unit = getXmlString(customResource, "units");
-      String resourceType = getXmlString(customResource, "resourceType");
-      Long value = getXmlLong(customResource, "value");
-
-      if (ResourceInformation.MEMORY_URI.equals(name)
-          || ResourceInformation.VCORES_URI.equals(name)) {
-        continue;
-      }
-
-      assertTrue("Custom resource type " + name + " not found",
-          expectedResourceTypes.contains(name));
-      assertEquals("k", unit);
-      assertEquals(ResourceTypes.COUNTABLE,
-          ResourceTypes.valueOf(resourceType));
-      assertNotNull("Resource value should not be null for resource type "
-          + resourceType + ", listing xml contents: " + toXml(customResource),
-          value);
-      resourceTypesAndValues.put(name, value);
-    }
-
-    return resourceTypesAndValues;
-  }
-
-  private void verify() {
-    assertEquals("nodeLabelExpression doesn't match",
-        resourceRequest.getNodeLabelExpression(),
-        getXmlString(requestInfo, "nodeLabelExpression"));
-    assertEquals("numContainers doesn't match",
-        resourceRequest.getNumContainers(),
-        getXmlInt(requestInfo, "numContainers"));
-    assertEquals("relaxLocality doesn't match",
-        resourceRequest.getRelaxLocality(),
-        getXmlBoolean(requestInfo, "relaxLocality"));
-    assertEquals("priority does not match",
-        resourceRequest.getPriority().getPriority(),
-        getXmlInt(requestInfo, "priority"));
-    assertEquals("resourceName does not match",
-        resourceRequest.getResourceName(),
-        getXmlString(requestInfo, "resourceName"));
-    Element capability = (Element) requestInfo
-            .getElementsByTagName("capability").item(0);
-    assertEquals("memory does not match",
-        resourceRequest.getCapability().getMemorySize(),
-        getXmlLong(capability, "memory"));
-    assertEquals("vCores does not match",
-        resourceRequest.getCapability().getVirtualCores(),
-        getXmlLong(capability, "vCores"));
-
-    for (String expectedCustomResourceType : expectedCustomResourceTypes) {
-      assertTrue(
-          "Custom resource type " + expectedCustomResourceType
-              + " cannot be found!",
-          customResourceTypes.containsKey(expectedCustomResourceType));
-
-      Long resourceValue = customResourceTypes.get(expectedCustomResourceType);
-      assertNotNull("Resource value should not be null!", resourceValue);
-    }
-
-    Element executionTypeRequest = (Element) requestInfo
-        .getElementsByTagName("executionTypeRequest").item(0);
-    assertEquals("executionType does not match",
-        resourceRequest.getExecutionTypeRequest().getExecutionType().name(),
-        getXmlString(executionTypeRequest, "executionType"));
-    assertEquals("enforceExecutionType does not match",
-        resourceRequest.getExecutionTypeRequest().getEnforceExecutionType(),
-        getXmlBoolean(executionTypeRequest, "enforceExecutionType"));
-  }
-
-  /**
-   * Builder class for {@link ResourceRequestsXmlVerifications}.
-   */
-  public static final class Builder {
-    private List<String> expectedCustomResourceTypes = Lists.newArrayList();
-    private Map<String, Long> customResourceTypes;
-    private ResourceRequest resourceRequest;
-    private Element requestInfo;
-
-    Builder() {
-    }
-
-    public static Builder create() {
-      return new Builder();
-    }
-
-    Builder withExpectedCustomResourceTypes(
-        List<String> expectedCustomResourceTypes) {
-      this.expectedCustomResourceTypes = expectedCustomResourceTypes;
-      return this;
-    }
-
-    Builder withCustomResourceTypes(Map<String, Long> customResourceTypes) {
-      this.customResourceTypes = customResourceTypes;
-      return this;
-    }
-
-    Builder withRequest(ResourceRequest resourceRequest) {
-      this.resourceRequest = resourceRequest;
-      return this;
-    }
-
-    Builder withRequestInfo(Element requestInfo) {
-      this.requestInfo = requestInfo;
-      return this;
-    }
-
-    public ResourceRequestsXmlVerifications build() {
-      return new ResourceRequestsXmlVerifications(this);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/39ad9890/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/XmlCustomResourceTypeTestCase.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/XmlCustomResourceTypeTestCase.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/XmlCustomResourceTypeTestCase.java
deleted file mode 100644
index 29260aa..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/helper/XmlCustomResourceTypeTestCase.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/**
- * 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.server.resourcemanager.webapp.helper;
-
-import com.sun.jersey.api.client.WebResource;
-import org.apache.hadoop.http.JettyUtils;
-import org.codehaus.jettison.json.JSONObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.xml.sax.InputSource;
-
-import javax.ws.rs.core.MediaType;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.*;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.util.function.Consumer;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * This class hides the implementation details of how to verify the structure of
- * XML responses. Tests should only provide the path of the
- * {@link WebResource}, the response from the resource and
- * the verifier Consumer to
- * {@link XmlCustomResourceTypeTestCase#verify(Consumer)}. An instance of
- * {@link JSONObject} will be passed to that consumer to be able to
- * verify the response.
- */
-public class XmlCustomResourceTypeTestCase {
-  private static final Logger LOG =
-      LoggerFactory.getLogger(XmlCustomResourceTypeTestCase.class);
-
-  private WebResource path;
-  private BufferedClientResponse response;
-  private Document parsedResponse;
-
-  public XmlCustomResourceTypeTestCase(WebResource path,
-                                       BufferedClientResponse response) {
-    this.path = path;
-    this.response = response;
-  }
-
-  public void verify(Consumer<Document> verifier) {
-    assertEquals(MediaType.APPLICATION_XML + "; " + JettyUtils.UTF_8,
-        response.getType().toString());
-
-    parsedResponse = parseXml(response);
-    logResponse(parsedResponse);
-    verifier.accept(parsedResponse);
-  }
-
-  private Document parseXml(BufferedClientResponse response) {
-    try {
-      String xml = response.getEntity(String.class);
-      DocumentBuilder db =
-          DocumentBuilderFactory.newInstance().newDocumentBuilder();
-      InputSource is = new InputSource();
-      is.setCharacterStream(new StringReader(xml));
-
-      return db.parse(is);
-    } catch (Exception e) {
-      throw new RuntimeException(e);
-    }
-  }
-
-  private void logResponse(Document doc) {
-    String responseStr = response.getEntity(String.class);
-    LOG.info("Raw response from service URL {}: {}", path.toString(),
-        responseStr);
-    LOG.info("Parsed response from service URL {}: {}", path.toString(),
-        toXml(doc));
-  }
-
-  public static String toXml(Node node) {
-    StringWriter writer;
-    try {
-      TransformerFactory tf = TransformerFactory.newInstance();
-      Transformer transformer = tf.newTransformer();
-      transformer.setOutputProperty(OutputKeys.INDENT, "yes");
-      transformer.setOutputProperty(
-          "{http://xml.apache.org/xslt}indent" + "-amount", "2");
-      writer = new StringWriter();
-      transformer.transform(new DOMSource(node), new StreamResult(writer));
-    } catch (TransformerException e) {
-      throw new RuntimeException(e);
-    }
-
-    return writer.getBuffer().toString();
-  }
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/39ad9890/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/FairScheduler.md
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/FairScheduler.md b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/FairScheduler.md
index b5bcbf5..269f5b4 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/FairScheduler.md
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/FairScheduler.md
@@ -86,11 +86,11 @@ The allocation file must be in XML format. The format contains five types of ele
 
 * **Queue elements**: which represent queues. Queue elements can take an optional attribute 'type', which when set to 'parent' makes it a parent queue. This is useful when we want to create a parent queue without configuring any leaf queues. Each queue element may contain the following properties:
 
-    * **minResources**: minimum resources the queue is entitled to, in the form of "X mb, Y vcores" or "vcores=X, memory-mb=Y". The latter form is required when specifying resources other than memory and CPU. For the single-resource fairness policy, the vcores value is ignored. If a queue's minimum share is not satisfied, it will be offered available resources before any other queue under the same parent. Under the single-resource fairness policy, a queue is considered unsatisfied if its memory usage is below its minimum memory share. Under dominant resource fairness, a queue is considered unsatisfied if its usage for its dominant resource with respect to the cluster capacity is below its minimum share for that resource. If multiple queues are unsatisfied in this situation, resources go to the queue with the smallest ratio between relevant resource usage and its minimum. Note that it is possible for a queue that is below its minimum to not immediately get up to its minimum when an a
 pplication is submitted to the queue, because already-running jobs may be using those resources.
+    * **minResources**: minimum resources the queue is entitled to, in the form "X mb, Y vcores". For the single-resource fairness policy, the vcores value is ignored. If a queue's minimum share is not satisfied, it will be offered available resources before any other queue under the same parent. Under the single-resource fairness policy, a queue is considered unsatisfied if its memory usage is below its minimum memory share. Under dominant resource fairness, a queue is considered unsatisfied if its usage for its dominant resource with respect to the cluster capacity is below its minimum share for that resource. If multiple queues are unsatisfied in this situation, resources go to the queue with the smallest ratio between relevant resource usage and minimum. Note that it is possible that a queue that is below its minimum may not immediately get up to its minimum when it submits an application, because already-running jobs may be using those resources.
 
-    * **maxResources**: maximum resources a queue will allocated, expressed in the form of "X%", "X% cpu, Y% memory", "X mb, Y vcores", or "vcores=X, memory-mb=Y". The last form is required when specifying resources other than memory and CPU. In the last form, X and Y can either be a percentage or an integer resource value without units. In the latter case the units will be inferred from the default units configured for that resource. A queue will not be assigned a container that would put its aggregate usage over this limit.
+    * **maxResources**: maximum resources a queue is allocated, expressed either in absolute values (X mb, Y vcores) or as a percentage of the cluster resources (X% memory, Y% cpu). A queue will not be assigned a container that would put its aggregate usage over this limit.
 
-    * **maxChildResources**: maximum resources an ad hoc child queue will allocated, expressed in the form of "X%", "X% cpu, Y% memory", "X mb, Y vcores", or "vcores=X, memory-mb=Y". The last form is required when specifying resources other than memory and CPU. In the last form, X and Y can either be a percentage or an integer resource value without units. In the latter case the units will be inferred from the default units configured for that resource. An ad hoc child queue will not be assigned a container that would put its aggregate usage over this limit.
+    * **maxChildResources**: maximum resources an ad hoc child queue is allocated, expressed either in absolute values (X mb, Y vcores) or as a percentage of the cluster resources (X% memory, Y% cpu). An ad hoc child queue will not be assigned a container that would put its aggregate usage over this limit.
 
     * **maxRunningApps**: limit the number of apps from the queue to run at once
 


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org