Browse Source

YARN-11645. Order the queues by queuePath in json assert tests. (#6432)

Tamas Domok 1 year ago
parent
commit
af5c8e70ea
43 changed files with 15400 additions and 19263 deletions
  1. 9 0
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesCapacitySched.java
  2. 9 0
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesCapacitySchedDynamicConfig.java
  3. 10 0
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesCapacitySchedLegacyQueueCreation.java
  4. 9 0
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesCapacitySchedulerMixedMode.java
  5. 16 16
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesConfigurationMutation.java
  6. 94 31
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestWebServiceUtil.java
  7. 598 598
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testAbsoluteMode-0.json
  8. 453 606
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testAbsoluteMode-16.json
  9. 453 606
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testAbsoluteMode-32.json
  10. 461 614
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testAbsoluteMode-legacy-0.json
  11. 594 594
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testPercentageMode-0.json
  12. 447 600
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testPercentageMode-16.json
  13. 447 600
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testPercentageMode-32.json
  14. 587 587
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testPercentageMode-legacy-0.json
  15. 594 594
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testWeightMode-0.json
  16. 447 600
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testWeightMode-16.json
  17. 447 600
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testWeightMode-32.json
  18. 246 425
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testWeightMode-after-aqc.json
  19. 358 473
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testWeightMode-before-aqc.json
  20. 435 588
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testWeightMode-legacy-0.json
  21. 445 598
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testWeightMode-legacy-16.json
  22. 445 598
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testWeightMode-legacy-32.json
  23. 244 423
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testWeightMode-legacy-after-aqc.json
  24. 355 470
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testWeightMode-legacy-before-aqc.json
  25. 624 627
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndPercentage-0.json
  26. 427 580
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndPercentage-16.json
  27. 423 576
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndPercentage-32.json
  28. 624 627
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndPercentageAndWeight-0.json
  29. 428 581
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndPercentageAndWeight-16.json
  30. 424 577
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndPercentageAndWeight-32.json
  31. 427 580
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndPercentageAndWeightMixed-0.json
  32. 419 572
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndPercentageAndWeightMixed-16.json
  33. 415 568
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndPercentageAndWeightMixed-32.json
  34. 624 627
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndWeight-0.json
  35. 427 580
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndWeight-16.json
  36. 423 576
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndWeight-32.json
  37. 427 580
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerPercentageAndWeight-0.json
  38. 415 568
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerPercentageAndWeight-16.json
  39. 415 568
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerPercentageAndWeight-32.json
  40. 59 59
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/scheduler-response-AbsoluteModeLegacyAutoCreation.json
  41. 74 74
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/scheduler-response-PerUserResources.json
  42. 50 50
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/scheduler-response-PercentageModeLegacyAutoCreation.json
  43. 72 72
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/scheduler-response.json

+ 9 - 0
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesCapacitySched.java

@@ -26,6 +26,7 @@ import java.util.Arrays;
 import java.util.Collection;
 
 import org.codehaus.jettison.json.JSONObject;
+import org.junit.AfterClass;
 import org.junit.Test;
 
 import org.apache.hadoop.conf.Configuration;
@@ -43,8 +44,10 @@ import static org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.C
 import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.assertJsonResponse;
 import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.assertJsonType;
 import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.assertXmlResponse;
+import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.backupSchedulerConfigFileInTarget;
 import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.createRM;
 import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.createWebAppDescriptor;
+import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.restoreSchedulerConfigFileInTarget;
 import static org.junit.Assert.assertEquals;
 
 @RunWith(Parameterized.class)
@@ -60,6 +63,12 @@ public class TestRMWebServicesCapacitySched extends JerseyTestBase {
   public TestRMWebServicesCapacitySched(boolean legacyQueueMode) {
     super(createWebAppDescriptor());
     this.legacyQueueMode = legacyQueueMode;
+    backupSchedulerConfigFileInTarget();
+  }
+
+  @AfterClass
+  public static void afterClass() {
+    restoreSchedulerConfigFileInTarget();
   }
 
   @Test

+ 9 - 0
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesCapacitySchedDynamicConfig.java

@@ -24,6 +24,7 @@ import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.junit.AfterClass;
 import org.junit.Test;
 
 import org.apache.hadoop.conf.Configuration;
@@ -39,10 +40,12 @@ import org.junit.runners.Parameterized;
 import static org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfigGeneratorForTest.createConfiguration;
 import static org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerTestUtilities.GB;
 import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.assertJsonResponse;
+import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.backupSchedulerConfigFileInTarget;
 import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.createMutableRM;
 import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.createWebAppDescriptor;
 import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.getExpectedResourceFile;
 import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.reinitialize;
+import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.restoreSchedulerConfigFileInTarget;
 import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.runTest;
 import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.sendRequest;
 import static org.assertj.core.api.Assertions.fail;
@@ -72,6 +75,12 @@ public class TestRMWebServicesCapacitySchedDynamicConfig extends JerseyTestBase
   public TestRMWebServicesCapacitySchedDynamicConfig(boolean legacyQueueMode) {
     super(createWebAppDescriptor());
     this.legacyQueueMode = legacyQueueMode;
+    backupSchedulerConfigFileInTarget();
+  }
+
+  @AfterClass
+  public static void afterClass() {
+    restoreSchedulerConfigFileInTarget();
   }
 
   @Test

+ 10 - 0
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesCapacitySchedLegacyQueueCreation.java

@@ -25,6 +25,8 @@ import java.util.Map;
 import javax.ws.rs.core.MediaType;
 
 import com.sun.jersey.api.client.ClientResponse;
+
+import org.junit.AfterClass;
 import org.junit.Test;
 
 import org.apache.hadoop.yarn.server.resourcemanager.MockRM;
@@ -38,8 +40,10 @@ import org.junit.runners.Parameterized;
 import static org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfigGeneratorForTest.createConfiguration;
 import static org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerTestUtilities.GB;
 import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.assertJsonResponse;
+import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.backupSchedulerConfigFileInTarget;
 import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.createMutableRM;
 import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.createWebAppDescriptor;
+import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.restoreSchedulerConfigFileInTarget;
 
 @RunWith(Parameterized.class)
 public class TestRMWebServicesCapacitySchedLegacyQueueCreation extends
@@ -55,6 +59,12 @@ public class TestRMWebServicesCapacitySchedLegacyQueueCreation extends
   public TestRMWebServicesCapacitySchedLegacyQueueCreation(boolean legacyQueueMode) {
     super(createWebAppDescriptor());
     this.legacyQueueMode = legacyQueueMode;
+    backupSchedulerConfigFileInTarget();
+  }
+
+  @AfterClass
+  public static void afterClass() {
+    restoreSchedulerConfigFileInTarget();
   }
 
   @Test

+ 9 - 0
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesCapacitySchedulerMixedMode.java

@@ -23,11 +23,14 @@ import java.util.Map;
 
 import org.apache.hadoop.yarn.server.resourcemanager.MockRM;
 import org.apache.hadoop.yarn.webapp.JerseyTestBase;
+import org.junit.AfterClass;
 import org.junit.Test;
 
 import static org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfigGeneratorForTest.createConfiguration;
+import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.backupSchedulerConfigFileInTarget;
 import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.createRM;
 import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.createWebAppDescriptor;
+import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.restoreSchedulerConfigFileInTarget;
 import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.runTest;
 
 /**
@@ -47,6 +50,12 @@ public class TestRMWebServicesCapacitySchedulerMixedMode extends JerseyTestBase
 
   public TestRMWebServicesCapacitySchedulerMixedMode() {
     super(createWebAppDescriptor());
+    backupSchedulerConfigFileInTarget();
+  }
+
+  @AfterClass
+  public static void afterClass() {
+    restoreSchedulerConfigFileInTarget();
   }
 
 

+ 16 - 16
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesConfigurationMutation.java

@@ -50,7 +50,9 @@ 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.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -58,7 +60,6 @@ import org.slf4j.LoggerFactory;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response.Status;
 
-import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.util.HashMap;
@@ -67,6 +68,9 @@ import java.util.Map;
 import static org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration.ACCESSIBLE_NODE_LABELS;
 import static org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration.CAPACITY;
 import static org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration.MAXIMUM_CAPACITY;
+import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.getCapacitySchedulerConfigFileInTarget;
+import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.backupSchedulerConfigFileInTarget;
+import static org.apache.hadoop.yarn.server.resourcemanager.webapp.TestWebServiceUtil.restoreSchedulerConfigFileInTarget;
 import static org.apache.hadoop.yarn.webapp.util.YarnWebServiceUtils.toJson;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
@@ -80,11 +84,6 @@ import static org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.C
 public class TestRMWebServicesConfigurationMutation extends JerseyTestBase {
   private static final Logger LOG = LoggerFactory
           .getLogger(TestRMWebServicesConfigurationMutation.class);
-
-  private static final File CONF_FILE = new File(new File("target",
-      "test-classes"), YarnConfiguration.CS_CONFIGURATION_FILE);
-  private static final File OLD_CONF_FILE = new File(new File("target",
-      "test-classes"), YarnConfiguration.CS_CONFIGURATION_FILE + ".tmp");
   private static final String LABEL_1 = "label1";
   public static final QueuePath ROOT = new QueuePath("root");
   public static final QueuePath ROOT_A = new QueuePath("root", "a");
@@ -95,6 +94,16 @@ public class TestRMWebServicesConfigurationMutation extends JerseyTestBase {
   private static CapacitySchedulerConfiguration csConf;
   private static YarnConfiguration conf;
 
+  @BeforeClass
+  public static void beforeClass() {
+    backupSchedulerConfigFileInTarget();
+  }
+
+  @AfterClass
+  public static void afterClass() {
+    restoreSchedulerConfigFileInTarget();
+  }
+
   private static class WebServletModule extends ServletModule {
     @Override
     protected void configureServlets() {
@@ -117,12 +126,7 @@ public class TestRMWebServicesConfigurationMutation extends JerseyTestBase {
           YarnConfiguration.MEMORY_CONFIGURATION_STORE);
       conf.set(YarnConfiguration.YARN_ADMIN_ACL, userName);
       try {
-        if (CONF_FILE.exists()) {
-          if (!CONF_FILE.renameTo(OLD_CONF_FILE)) {
-            throw new RuntimeException("Failed to rename conf file");
-          }
-        }
-        FileOutputStream out = new FileOutputStream(CONF_FILE);
+        FileOutputStream out = new FileOutputStream(getCapacitySchedulerConfigFileInTarget());
         csConf.writeXml(out);
         out.close();
       } catch (IOException e) {
@@ -1070,10 +1074,6 @@ public class TestRMWebServicesConfigurationMutation extends JerseyTestBase {
     if (rm != null) {
       rm.stop();
     }
-    CONF_FILE.delete();
-    if (!OLD_CONF_FILE.renameTo(CONF_FILE)) {
-      throw new RuntimeException("Failed to re-copy old configuration file");
-    }
     super.tearDown();
   }
 }

+ 94 - 31
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestWebServiceUtil.java

@@ -19,6 +19,7 @@
 package org.apache.hadoop.yarn.server.resourcemanager.webapp;
 
 import java.io.BufferedReader;
+import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.InputStream;
@@ -26,6 +27,10 @@ import java.io.InputStreamReader;
 import java.io.StringReader;
 import java.io.StringWriter;
 import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
 import javax.ws.rs.core.MediaType;
@@ -38,16 +43,19 @@ import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
-import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectWriter;
+import com.fasterxml.jackson.databind.SerializationFeature;
 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.codehaus.jettison.json.JSONException;
-import org.codehaus.jettison.json.JSONObject;
+
 import org.junit.Assert;
 import org.w3c.dom.Document;
 import org.xml.sax.InputSource;
@@ -65,12 +73,15 @@ import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.Capacity
 import org.apache.hadoop.yarn.webapp.GenericExceptionHandler;
 import org.apache.hadoop.yarn.webapp.GuiceServletConfig;
 
-import static org.apache.hadoop.yarn.conf.YarnConfiguration.MEMORY_CONFIGURATION_STORE;
-import static org.apache.hadoop.yarn.conf.YarnConfiguration.SCHEDULER_CONFIGURATION_STORE_CLASS;
 import static org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerTestUtilities.GB;
 import static org.junit.Assert.assertEquals;
 
 public final class TestWebServiceUtil {
+  private static final ObjectMapper MAPPER = new ObjectMapper()
+      .configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true);
+  private static final ObjectWriter OBJECT_WRITER =
+      MAPPER.writerWithDefaultPrettyPrinter();
+
   private TestWebServiceUtil(){
   }
 
@@ -94,7 +105,6 @@ public final class TestWebServiceUtil {
   public static void runTest(String template, String name,
       MockRM rm,
       WebResource resource) throws Exception {
-    final boolean reinitAfterNodeChane = isMutableConfig(rm.getConfig());
     try {
       boolean legacyQueueMode = ((CapacityScheduler) rm.getResourceScheduler())
           .getConfiguration().isLegacyQueueMode();
@@ -105,16 +115,10 @@ public final class TestWebServiceUtil {
 
       MockNM nm1 = rm.registerNode("h1:1234", 8 * GB, 8);
       rm.registerNode("h2:1234", 8 * GB, 8);
-      if (reinitAfterNodeChane) {
-        reinitialize(rm, rm.getConfig());
-      }
       assertJsonResponse(sendRequest(resource),
           getExpectedResourceFile(template, name, "16", legacyQueueMode));
       rm.registerNode("h3:1234", 8 * GB, 8);
       MockNM nm4 = rm.registerNode("h4:1234", 8 * GB, 8);
-      if (reinitAfterNodeChane) {
-        reinitialize(rm, rm.getConfig());
-      }
 
       assertJsonResponse(sendRequest(resource),
           getExpectedResourceFile(template, name, "32", legacyQueueMode));
@@ -163,11 +167,6 @@ public final class TestWebServiceUtil {
     return text;
   }
 
-  public static boolean isMutableConfig(Configuration config) {
-    return Objects.equals(config.get(SCHEDULER_CONFIGURATION_STORE_CLASS),
-        MEMORY_CONFIGURATION_STORE);
-  }
-
   public static ClientResponse sendRequest(WebResource resource) {
     return resource.path("ws").path("v1").path("cluster")
         .path("scheduler").accept(MediaType.APPLICATION_JSON)
@@ -209,22 +208,61 @@ public final class TestWebServiceUtil {
   }
 
   public static void assertJsonResponse(ClientResponse response,
-      String expectedResourceFilename) throws JSONException,
-      IOException {
+      String expectedResourceFilename) throws IOException {
     assertJsonType(response);
-    JSONObject json = response.getEntity(JSONObject.class);
-    String actual = prettyPrintJson(json.toString(2));
+
+    JsonNode jsonNode = MAPPER.readTree(response.getEntity(String.class));
+    sortQueuesLexically((ObjectNode) jsonNode);
+
+    String actual = OBJECT_WRITER.writeValueAsString(jsonNode);
     updateTestDataAutomatically(expectedResourceFilename, actual);
     assertEquals(
-        prettyPrintJson(getResourceAsString(expectedResourceFilename)),
+        // Deserialize/serialise again with the exact same settings
+        // to make sure jackson upgrade doesn't break the test
+        OBJECT_WRITER.writeValueAsString(
+            MAPPER.readTree(
+                Objects.requireNonNull(getResourceAsString(expectedResourceFilename)))),
         actual);
   }
 
-  private static String prettyPrintJson(String in) throws JsonProcessingException {
-    ObjectMapper objectMapper = new ObjectMapper();
-    return objectMapper
-        .writerWithDefaultPrettyPrinter()
-        .writeValueAsString(objectMapper.readTree(in));
+  /**
+   * Sorts the "queue": [ {}, {}, {} ] parts recursively by the queuePath key.
+   *
+   * <p>
+   * There was a marshalling error described in YARN-4785 in CapacitySchedulerInfo.getQueues().
+   * If that issue still present, we can't sort the queues there, but only sort the leaf queues
+   * then the non-leaf queues which would make a consistent output, but hard to document.
+   * Instead we make sure the test data is at least ordered by queue names.
+   * </p>
+   *
+   * @param object the json object to sort.
+   */
+  private static void sortQueuesLexically(ObjectNode object) {
+    Iterator<String> keys = object.fieldNames();
+    while (keys.hasNext()) {
+      String key = keys.next();
+      JsonNode o = object.get(key);
+      if (key.equals("queue") && o.isArray()) {
+        ArrayNode original = (ArrayNode) o;
+        List<ObjectNode> queues = new ArrayList<>(original.size());
+        for (int i = 0; i < original.size(); i++) {
+          if (original.get(i).isObject()) {
+            queues.add((ObjectNode) original.get(i));
+          }
+        }
+        queues.sort(new Comparator<ObjectNode>() {
+          private static final String SORT_BY_KEY = "queuePath";
+          @Override
+          public int compare(ObjectNode a, ObjectNode b) {
+            return a.get(SORT_BY_KEY).asText().compareTo(b.get(SORT_BY_KEY).asText());
+          }
+        });
+
+        object.set("queue", MAPPER.createObjectNode().arrayNode().addAll(queues));
+      } else if (o.isObject()) {
+        sortQueuesLexically((ObjectNode) o);
+      }
+    }
   }
 
   public static void assertJsonType(ClientResponse response) {
@@ -293,12 +331,10 @@ public final class TestWebServiceUtil {
     return rm;
   }
 
-  public static MockRM createMutableRM(Configuration conf) throws IOException {
+  public static MockRM createMutableRM(Configuration conf) {
     conf.set(YarnConfiguration.SCHEDULER_CONFIGURATION_STORE_CLASS,
         YarnConfiguration.MEMORY_CONFIGURATION_STORE);
-    MockRM rm = createRM(new CapacitySchedulerConfiguration(conf));
-    reinitialize(rm, conf);
-    return rm;
+    return createRM(new CapacitySchedulerConfiguration(conf));
   }
 
   public static void reinitialize(MockRM rm, Configuration conf) throws IOException {
@@ -309,4 +345,31 @@ public final class TestWebServiceUtil {
     CapacityScheduler cs = (CapacityScheduler) rm.getResourceScheduler();
     cs.reinitialize(conf, rm.getRMContext(), true);
   }
+
+  public static File getCapacitySchedulerConfigFileInTarget() {
+    return new File("target/test-classes", YarnConfiguration.CS_CONFIGURATION_FILE);
+  }
+
+  public static File getBackupCapacitySchedulerConfigFileInTarget() {
+    return new File("target/test-classes", YarnConfiguration.CS_CONFIGURATION_FILE + ".tmp");
+  }
+
+  public static void backupSchedulerConfigFileInTarget() {
+    final File file = getCapacitySchedulerConfigFileInTarget();
+    if (file.exists()) {
+      if (!file.renameTo(getBackupCapacitySchedulerConfigFileInTarget())) {
+        throw new RuntimeException("Failed to backup configuration file");
+      }
+    }
+  }
+
+  public static void restoreSchedulerConfigFileInTarget() {
+    File file = getBackupCapacitySchedulerConfigFileInTarget();
+    if (file.exists()) {
+      getCapacitySchedulerConfigFileInTarget().delete();
+      if (!file.renameTo(getCapacitySchedulerConfigFileInTarget())) {
+        throw new RuntimeException("Failed to restore configuration file");
+      }
+    }
+  }
 }

File diff suppressed because it is too large
+ 598 - 598
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testAbsoluteMode-0.json


File diff suppressed because it is too large
+ 453 - 606
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testAbsoluteMode-16.json


File diff suppressed because it is too large
+ 453 - 606
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testAbsoluteMode-32.json


File diff suppressed because it is too large
+ 461 - 614
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testAbsoluteMode-legacy-0.json


File diff suppressed because it is too large
+ 594 - 594
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testPercentageMode-0.json


File diff suppressed because it is too large
+ 447 - 600
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testPercentageMode-16.json


File diff suppressed because it is too large
+ 447 - 600
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testPercentageMode-32.json


File diff suppressed because it is too large
+ 587 - 587
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testPercentageMode-legacy-0.json


File diff suppressed because it is too large
+ 594 - 594
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testWeightMode-0.json


File diff suppressed because it is too large
+ 447 - 600
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testWeightMode-16.json


File diff suppressed because it is too large
+ 447 - 600
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testWeightMode-32.json


File diff suppressed because it is too large
+ 246 - 425
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testWeightMode-after-aqc.json


File diff suppressed because it is too large
+ 358 - 473
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testWeightMode-before-aqc.json


File diff suppressed because it is too large
+ 435 - 588
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testWeightMode-legacy-0.json


File diff suppressed because it is too large
+ 445 - 598
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testWeightMode-legacy-16.json


File diff suppressed because it is too large
+ 445 - 598
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testWeightMode-legacy-32.json


File diff suppressed because it is too large
+ 244 - 423
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testWeightMode-legacy-after-aqc.json


File diff suppressed because it is too large
+ 355 - 470
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/dynamic-testWeightMode-legacy-before-aqc.json


File diff suppressed because it is too large
+ 624 - 627
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndPercentage-0.json


File diff suppressed because it is too large
+ 427 - 580
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndPercentage-16.json


File diff suppressed because it is too large
+ 423 - 576
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndPercentage-32.json


File diff suppressed because it is too large
+ 624 - 627
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndPercentageAndWeight-0.json


File diff suppressed because it is too large
+ 428 - 581
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndPercentageAndWeight-16.json


File diff suppressed because it is too large
+ 424 - 577
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndPercentageAndWeight-32.json


File diff suppressed because it is too large
+ 427 - 580
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndPercentageAndWeightMixed-0.json


File diff suppressed because it is too large
+ 419 - 572
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndPercentageAndWeightMixed-16.json


File diff suppressed because it is too large
+ 415 - 568
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndPercentageAndWeightMixed-32.json


File diff suppressed because it is too large
+ 624 - 627
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndWeight-0.json


File diff suppressed because it is too large
+ 427 - 580
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndWeight-16.json


File diff suppressed because it is too large
+ 423 - 576
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerAbsoluteAndWeight-32.json


File diff suppressed because it is too large
+ 427 - 580
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerPercentageAndWeight-0.json


File diff suppressed because it is too large
+ 415 - 568
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerPercentageAndWeight-16.json


File diff suppressed because it is too large
+ 415 - 568
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/mixed-testSchedulerPercentageAndWeight-32.json


+ 59 - 59
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/scheduler-response-AbsoluteModeLegacyAutoCreation.json

@@ -2,11 +2,11 @@
   "scheduler" : {
     "schedulerInfo" : {
       "type" : "capacityScheduler",
-      "capacity" : 100,
-      "usedCapacity" : 0,
-      "maxCapacity" : 100,
-      "weight" : -1,
-      "normalizedWeight" : 0,
+      "capacity" : 100.0,
+      "usedCapacity" : 0.0,
+      "maxCapacity" : 100.0,
+      "weight" : -1.0,
+      "normalizedWeight" : 0.0,
       "queueCapacityVectorInfo" : {
         "configuredCapacityVector" : "[memory-mb=100.0%,vcores=100.0%]",
         "capacityVectorEntries" : [ {
@@ -26,13 +26,13 @@
           "type" : "capacitySchedulerLeafQueueInfo",
           "queuePath" : "root.default",
           "capacity" : 87.5,
-          "usedCapacity" : 0,
-          "maxCapacity" : 100,
+          "usedCapacity" : 0.0,
+          "maxCapacity" : 100.0,
           "absoluteCapacity" : 87.5,
-          "absoluteMaxCapacity" : 100,
-          "absoluteUsedCapacity" : 0,
-          "weight" : -1,
-          "normalizedWeight" : 0,
+          "absoluteMaxCapacity" : 100.0,
+          "absoluteUsedCapacity" : 0.0,
+          "weight" : -1.0,
+          "normalizedWeight" : 0.0,
           "numApplications" : 0,
           "maxParallelApps" : 2147483647,
           "queueName" : "default",
@@ -80,14 +80,14 @@
                 } ]
               },
               "capacity" : 87.5,
-              "usedCapacity" : 0,
-              "maxCapacity" : 100,
+              "usedCapacity" : 0.0,
+              "maxCapacity" : 100.0,
               "absoluteCapacity" : 87.5,
-              "absoluteUsedCapacity" : 0,
-              "absoluteMaxCapacity" : 100,
-              "maxAMLimitPercentage" : 10,
-              "weight" : -1,
-              "normalizedWeight" : 0,
+              "absoluteUsedCapacity" : 0.0,
+              "absoluteMaxCapacity" : 100.0,
+              "maxAMLimitPercentage" : 10.0,
+              "weight" : -1.0,
+              "normalizedWeight" : 0.0,
               "configuredMinResource" : {
                 "memory" : 28672,
                 "vCores" : 28,
@@ -422,9 +422,9 @@
           "numContainers" : 0,
           "maxApplications" : 8750,
           "maxApplicationsPerUser" : 8750,
-          "userLimit" : 100,
+          "userLimit" : 100.0,
           "users" : { },
-          "userLimitFactor" : 1,
+          "userLimitFactor" : 1.0,
           "configuredMaxAMResourceLimit" : 0.1,
           "AMResourceLimit" : {
             "memory" : 4096,
@@ -504,13 +504,13 @@
         }, {
           "queuePath" : "root.managed",
           "capacity" : 12.5,
-          "usedCapacity" : 0,
-          "maxCapacity" : 100,
+          "usedCapacity" : 0.0,
+          "maxCapacity" : 100.0,
           "absoluteCapacity" : 12.5,
-          "absoluteMaxCapacity" : 100,
-          "absoluteUsedCapacity" : 0,
-          "weight" : -1,
-          "normalizedWeight" : 0,
+          "absoluteMaxCapacity" : 100.0,
+          "absoluteUsedCapacity" : 0.0,
+          "weight" : -1.0,
+          "normalizedWeight" : 0.0,
           "numApplications" : 0,
           "maxParallelApps" : 2147483647,
           "queueName" : "managed",
@@ -520,14 +520,14 @@
             "queue" : [ {
               "type" : "capacitySchedulerLeafQueueInfo",
               "queuePath" : "root.managed.queue1",
-              "capacity" : 50,
-              "usedCapacity" : 0,
-              "maxCapacity" : 100,
+              "capacity" : 50.0,
+              "usedCapacity" : 0.0,
+              "maxCapacity" : 100.0,
               "absoluteCapacity" : 6.25,
-              "absoluteMaxCapacity" : 100,
-              "absoluteUsedCapacity" : 0,
-              "weight" : -1,
-              "normalizedWeight" : 0,
+              "absoluteMaxCapacity" : 100.0,
+              "absoluteUsedCapacity" : 0.0,
+              "weight" : -1.0,
+              "normalizedWeight" : 0.0,
               "numApplications" : 0,
               "maxParallelApps" : 2147483647,
               "queueName" : "queue1",
@@ -574,15 +574,15 @@
                       "resourceValue" : "2.0"
                     } ]
                   },
-                  "capacity" : 50,
-                  "usedCapacity" : 0,
-                  "maxCapacity" : 100,
+                  "capacity" : 50.0,
+                  "usedCapacity" : 0.0,
+                  "maxCapacity" : 100.0,
                   "absoluteCapacity" : 6.25,
-                  "absoluteUsedCapacity" : 0,
-                  "absoluteMaxCapacity" : 100,
-                  "maxAMLimitPercentage" : 10,
-                  "weight" : -1,
-                  "normalizedWeight" : 0,
+                  "absoluteUsedCapacity" : 0.0,
+                  "absoluteMaxCapacity" : 100.0,
+                  "maxAMLimitPercentage" : 10.0,
+                  "weight" : -1.0,
+                  "normalizedWeight" : 0.0,
                   "configuredMinResource" : {
                     "memory" : 2048,
                     "vCores" : 2,
@@ -917,9 +917,9 @@
               "numContainers" : 0,
               "maxApplications" : 625,
               "maxApplicationsPerUser" : 625,
-              "userLimit" : 100,
+              "userLimit" : 100.0,
               "users" : { },
-              "userLimitFactor" : 1,
+              "userLimitFactor" : 1.0,
               "configuredMaxAMResourceLimit" : 0.1,
               "AMResourceLimit" : {
                 "memory" : 4096,
@@ -1040,14 +1040,14 @@
                 } ]
               },
               "capacity" : 12.5,
-              "usedCapacity" : 0,
-              "maxCapacity" : 100,
+              "usedCapacity" : 0.0,
+              "maxCapacity" : 100.0,
               "absoluteCapacity" : 12.5,
-              "absoluteUsedCapacity" : 0,
-              "absoluteMaxCapacity" : 100,
-              "maxAMLimitPercentage" : 0,
-              "weight" : -1,
-              "normalizedWeight" : 0,
+              "absoluteUsedCapacity" : 0.0,
+              "absoluteMaxCapacity" : 100.0,
+              "maxAMLimitPercentage" : 0.0,
+              "weight" : -1.0,
+              "normalizedWeight" : 0.0,
               "configuredMinResource" : {
                 "memory" : 4096,
                 "vCores" : 4,
@@ -1334,15 +1334,15 @@
               "resourceValue" : "100.0%"
             } ]
           },
-          "capacity" : 100,
-          "usedCapacity" : 0,
-          "maxCapacity" : 100,
-          "absoluteCapacity" : 100,
-          "absoluteUsedCapacity" : 0,
-          "absoluteMaxCapacity" : 100,
-          "maxAMLimitPercentage" : 0,
-          "weight" : -1,
-          "normalizedWeight" : 0,
+          "capacity" : 100.0,
+          "usedCapacity" : 0.0,
+          "maxCapacity" : 100.0,
+          "absoluteCapacity" : 100.0,
+          "absoluteUsedCapacity" : 0.0,
+          "absoluteMaxCapacity" : 100.0,
+          "maxAMLimitPercentage" : 0.0,
+          "weight" : -1.0,
+          "normalizedWeight" : 0.0,
           "configuredMinResource" : {
             "memory" : 0,
             "vCores" : 0,

+ 74 - 74
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/scheduler-response-PerUserResources.json

@@ -2,11 +2,11 @@
   "scheduler" : {
     "schedulerInfo" : {
       "type" : "capacityScheduler",
-      "capacity" : 100,
-      "usedCapacity" : 0,
-      "maxCapacity" : 100,
-      "weight" : -1,
-      "normalizedWeight" : 0,
+      "capacity" : 100.0,
+      "usedCapacity" : 0.0,
+      "maxCapacity" : 100.0,
+      "weight" : -1.0,
+      "normalizedWeight" : 0.0,
       "queueCapacityVectorInfo" : {
         "configuredCapacityVector" : "[memory-mb=100.0%,vcores=100.0%]",
         "capacityVectorEntries" : [ {
@@ -26,13 +26,13 @@
           "type" : "capacitySchedulerLeafQueueInfo",
           "queuePath" : "root.a",
           "capacity" : 12.5,
-          "usedCapacity" : 0,
-          "maxCapacity" : 50,
+          "usedCapacity" : 0.0,
+          "maxCapacity" : 50.0,
           "absoluteCapacity" : 12.5,
-          "absoluteMaxCapacity" : 50,
-          "absoluteUsedCapacity" : 0,
-          "weight" : -1,
-          "normalizedWeight" : 0,
+          "absoluteMaxCapacity" : 50.0,
+          "absoluteUsedCapacity" : 0.0,
+          "weight" : -1.0,
+          "normalizedWeight" : 0.0,
           "numApplications" : 1,
           "maxParallelApps" : 2147483647,
           "queueName" : "a",
@@ -80,14 +80,14 @@
                 } ]
               },
               "capacity" : 12.5,
-              "usedCapacity" : 0,
-              "maxCapacity" : 50,
+              "usedCapacity" : 0.0,
+              "maxCapacity" : 50.0,
               "absoluteCapacity" : 12.5,
-              "absoluteUsedCapacity" : 0,
-              "absoluteMaxCapacity" : 50,
-              "maxAMLimitPercentage" : 10,
-              "weight" : -1,
-              "normalizedWeight" : 0,
+              "absoluteUsedCapacity" : 0.0,
+              "absoluteMaxCapacity" : 50.0,
+              "maxAMLimitPercentage" : 10.0,
+              "weight" : -1.0,
+              "normalizedWeight" : 0.0,
               "configuredMinResource" : {
                 "memory" : 0,
                 "vCores" : 0,
@@ -185,15 +185,15 @@
               "queueCapacityVectorInfo" : {
                 "configuredCapacityVector" : "[]"
               },
-              "capacity" : 0,
-              "usedCapacity" : 0,
-              "maxCapacity" : 100,
-              "absoluteCapacity" : 0,
-              "absoluteUsedCapacity" : 0,
-              "absoluteMaxCapacity" : 0,
-              "maxAMLimitPercentage" : 0,
-              "weight" : -1,
-              "normalizedWeight" : 0,
+              "capacity" : 0.0,
+              "usedCapacity" : 0.0,
+              "maxCapacity" : 100.0,
+              "absoluteCapacity" : 0.0,
+              "absoluteUsedCapacity" : 0.0,
+              "absoluteMaxCapacity" : 0.0,
+              "maxAMLimitPercentage" : 0.0,
+              "weight" : -1.0,
+              "normalizedWeight" : 0.0,
               "configuredMinResource" : {
                 "memory" : 0,
                 "vCores" : 0,
@@ -668,7 +668,7 @@
           "numContainers" : 0,
           "maxApplications" : 1250,
           "maxApplicationsPerUser" : 1250,
-          "userLimit" : 100,
+          "userLimit" : 100.0,
           "users" : {
             "user" : [ {
               "username" : "user1",
@@ -886,11 +886,11 @@
                   }
                 } ]
               },
-              "userWeight" : 1,
+              "userWeight" : 1.0,
               "isActive" : true
             } ]
           },
-          "userLimitFactor" : 1,
+          "userLimitFactor" : 1.0,
           "configuredMaxAMResourceLimit" : 0.1,
           "AMResourceLimit" : {
             "memory" : 2048,
@@ -970,14 +970,14 @@
         }, {
           "type" : "capacitySchedulerLeafQueueInfo",
           "queuePath" : "root.b",
-          "capacity" : 50,
-          "usedCapacity" : 0,
-          "maxCapacity" : 100,
-          "absoluteCapacity" : 50,
-          "absoluteMaxCapacity" : 100,
-          "absoluteUsedCapacity" : 0,
-          "weight" : -1,
-          "normalizedWeight" : 0,
+          "capacity" : 50.0,
+          "usedCapacity" : 0.0,
+          "maxCapacity" : 100.0,
+          "absoluteCapacity" : 50.0,
+          "absoluteMaxCapacity" : 100.0,
+          "absoluteUsedCapacity" : 0.0,
+          "weight" : -1.0,
+          "normalizedWeight" : 0.0,
           "numApplications" : 1,
           "maxParallelApps" : 2147483647,
           "queueName" : "b",
@@ -1024,15 +1024,15 @@
                   "resourceValue" : "50.0%"
                 } ]
               },
-              "capacity" : 50,
-              "usedCapacity" : 0,
-              "maxCapacity" : 100,
-              "absoluteCapacity" : 50,
-              "absoluteUsedCapacity" : 0,
-              "absoluteMaxCapacity" : 100,
-              "maxAMLimitPercentage" : 10,
-              "weight" : -1,
-              "normalizedWeight" : 0,
+              "capacity" : 50.0,
+              "usedCapacity" : 0.0,
+              "maxCapacity" : 100.0,
+              "absoluteCapacity" : 50.0,
+              "absoluteUsedCapacity" : 0.0,
+              "absoluteMaxCapacity" : 100.0,
+              "maxAMLimitPercentage" : 10.0,
+              "weight" : -1.0,
+              "normalizedWeight" : 0.0,
               "configuredMinResource" : {
                 "memory" : 0,
                 "vCores" : 0,
@@ -1367,7 +1367,7 @@
           "numContainers" : 0,
           "maxApplications" : 5000,
           "maxApplicationsPerUser" : 5000,
-          "userLimit" : 100,
+          "userLimit" : 100.0,
           "users" : {
             "user" : [ {
               "username" : "user2",
@@ -1585,11 +1585,11 @@
                   }
                 } ]
               },
-              "userWeight" : 1,
+              "userWeight" : 1.0,
               "isActive" : true
             } ]
           },
-          "userLimitFactor" : 1,
+          "userLimitFactor" : 1.0,
           "configuredMaxAMResourceLimit" : 0.1,
           "AMResourceLimit" : {
             "memory" : 4096,
@@ -1670,13 +1670,13 @@
           "type" : "capacitySchedulerLeafQueueInfo",
           "queuePath" : "root.c",
           "capacity" : 37.5,
-          "usedCapacity" : 0,
-          "maxCapacity" : 100,
+          "usedCapacity" : 0.0,
+          "maxCapacity" : 100.0,
           "absoluteCapacity" : 37.5,
-          "absoluteMaxCapacity" : 100,
-          "absoluteUsedCapacity" : 0,
-          "weight" : -1,
-          "normalizedWeight" : 0,
+          "absoluteMaxCapacity" : 100.0,
+          "absoluteUsedCapacity" : 0.0,
+          "weight" : -1.0,
+          "normalizedWeight" : 0.0,
           "numApplications" : 0,
           "maxParallelApps" : 2147483647,
           "queueName" : "c",
@@ -1724,14 +1724,14 @@
                 } ]
               },
               "capacity" : 37.5,
-              "usedCapacity" : 0,
-              "maxCapacity" : 100,
+              "usedCapacity" : 0.0,
+              "maxCapacity" : 100.0,
               "absoluteCapacity" : 37.5,
-              "absoluteUsedCapacity" : 0,
-              "absoluteMaxCapacity" : 100,
-              "maxAMLimitPercentage" : 10,
-              "weight" : -1,
-              "normalizedWeight" : 0,
+              "absoluteUsedCapacity" : 0.0,
+              "absoluteMaxCapacity" : 100.0,
+              "maxAMLimitPercentage" : 10.0,
+              "weight" : -1.0,
+              "normalizedWeight" : 0.0,
               "configuredMinResource" : {
                 "memory" : 0,
                 "vCores" : 0,
@@ -2066,9 +2066,9 @@
           "numContainers" : 0,
           "maxApplications" : 3750,
           "maxApplicationsPerUser" : 3750,
-          "userLimit" : 100,
+          "userLimit" : 100.0,
           "users" : { },
-          "userLimitFactor" : 1,
+          "userLimitFactor" : 1.0,
           "configuredMaxAMResourceLimit" : 0.1,
           "AMResourceLimit" : {
             "memory" : 4096,
@@ -2160,15 +2160,15 @@
               "resourceValue" : "100.0%"
             } ]
           },
-          "capacity" : 100,
-          "usedCapacity" : 0,
-          "maxCapacity" : 100,
-          "absoluteCapacity" : 100,
-          "absoluteUsedCapacity" : 0,
-          "absoluteMaxCapacity" : 100,
-          "maxAMLimitPercentage" : 0,
-          "weight" : -1,
-          "normalizedWeight" : 0,
+          "capacity" : 100.0,
+          "usedCapacity" : 0.0,
+          "maxCapacity" : 100.0,
+          "absoluteCapacity" : 100.0,
+          "absoluteUsedCapacity" : 0.0,
+          "absoluteMaxCapacity" : 100.0,
+          "maxAMLimitPercentage" : 0.0,
+          "weight" : -1.0,
+          "normalizedWeight" : 0.0,
           "configuredMinResource" : {
             "memory" : 0,
             "vCores" : 0,

+ 50 - 50
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/scheduler-response-PercentageModeLegacyAutoCreation.json

@@ -2,11 +2,11 @@
   "scheduler" : {
     "schedulerInfo" : {
       "type" : "capacityScheduler",
-      "capacity" : 100,
-      "usedCapacity" : 0,
-      "maxCapacity" : 100,
-      "weight" : -1,
-      "normalizedWeight" : 0,
+      "capacity" : 100.0,
+      "usedCapacity" : 0.0,
+      "maxCapacity" : 100.0,
+      "weight" : -1.0,
+      "normalizedWeight" : 0.0,
       "queueCapacityVectorInfo" : {
         "configuredCapacityVector" : "[memory-mb=100.0%,vcores=100.0%]",
         "capacityVectorEntries" : [ {
@@ -25,14 +25,14 @@
         "queue" : [ {
           "type" : "capacitySchedulerLeafQueueInfo",
           "queuePath" : "root.default",
-          "capacity" : 25,
-          "usedCapacity" : 0,
-          "maxCapacity" : 100,
-          "absoluteCapacity" : 25,
-          "absoluteMaxCapacity" : 100,
-          "absoluteUsedCapacity" : 0,
-          "weight" : -1,
-          "normalizedWeight" : 0,
+          "capacity" : 25.0,
+          "usedCapacity" : 0.0,
+          "maxCapacity" : 100.0,
+          "absoluteCapacity" : 25.0,
+          "absoluteMaxCapacity" : 100.0,
+          "absoluteUsedCapacity" : 0.0,
+          "weight" : -1.0,
+          "normalizedWeight" : 0.0,
           "numApplications" : 0,
           "maxParallelApps" : 2147483647,
           "queueName" : "default",
@@ -79,15 +79,15 @@
                   "resourceValue" : "25.0%"
                 } ]
               },
-              "capacity" : 25,
-              "usedCapacity" : 0,
-              "maxCapacity" : 100,
-              "absoluteCapacity" : 25,
-              "absoluteUsedCapacity" : 0,
-              "absoluteMaxCapacity" : 100,
-              "maxAMLimitPercentage" : 10,
-              "weight" : -1,
-              "normalizedWeight" : 0,
+              "capacity" : 25.0,
+              "usedCapacity" : 0.0,
+              "maxCapacity" : 100.0,
+              "absoluteCapacity" : 25.0,
+              "absoluteUsedCapacity" : 0.0,
+              "absoluteMaxCapacity" : 100.0,
+              "maxAMLimitPercentage" : 10.0,
+              "weight" : -1.0,
+              "normalizedWeight" : 0.0,
               "configuredMinResource" : {
                 "memory" : 0,
                 "vCores" : 0,
@@ -422,9 +422,9 @@
           "numContainers" : 0,
           "maxApplications" : 2500,
           "maxApplicationsPerUser" : 2500,
-          "userLimit" : 100,
+          "userLimit" : 100.0,
           "users" : { },
-          "userLimitFactor" : 1,
+          "userLimitFactor" : 1.0,
           "configuredMaxAMResourceLimit" : 0.1,
           "AMResourceLimit" : {
             "memory" : 4096,
@@ -503,14 +503,14 @@
           "defaultApplicationLifetime" : -1
         }, {
           "queuePath" : "root.managed",
-          "capacity" : 75,
-          "usedCapacity" : 0,
-          "maxCapacity" : 100,
-          "absoluteCapacity" : 75,
-          "absoluteMaxCapacity" : 100,
-          "absoluteUsedCapacity" : 0,
-          "weight" : -1,
-          "normalizedWeight" : 0,
+          "capacity" : 75.0,
+          "usedCapacity" : 0.0,
+          "maxCapacity" : 100.0,
+          "absoluteCapacity" : 75.0,
+          "absoluteMaxCapacity" : 100.0,
+          "absoluteUsedCapacity" : 0.0,
+          "weight" : -1.0,
+          "normalizedWeight" : 0.0,
           "numApplications" : 0,
           "maxParallelApps" : 2147483647,
           "queueName" : "managed",
@@ -558,15 +558,15 @@
                   "resourceValue" : "75.0%"
                 } ]
               },
-              "capacity" : 75,
-              "usedCapacity" : 0,
-              "maxCapacity" : 100,
-              "absoluteCapacity" : 75,
-              "absoluteUsedCapacity" : 0,
-              "absoluteMaxCapacity" : 100,
-              "maxAMLimitPercentage" : 0,
-              "weight" : -1,
-              "normalizedWeight" : 0,
+              "capacity" : 75.0,
+              "usedCapacity" : 0.0,
+              "maxCapacity" : 100.0,
+              "absoluteCapacity" : 75.0,
+              "absoluteUsedCapacity" : 0.0,
+              "absoluteMaxCapacity" : 100.0,
+              "maxAMLimitPercentage" : 0.0,
+              "weight" : -1.0,
+              "normalizedWeight" : 0.0,
               "configuredMinResource" : {
                 "memory" : 0,
                 "vCores" : 0,
@@ -842,15 +842,15 @@
               "resourceValue" : "100.0%"
             } ]
           },
-          "capacity" : 100,
-          "usedCapacity" : 0,
-          "maxCapacity" : 100,
-          "absoluteCapacity" : 100,
-          "absoluteUsedCapacity" : 0,
-          "absoluteMaxCapacity" : 100,
-          "maxAMLimitPercentage" : 0,
-          "weight" : -1,
-          "normalizedWeight" : 0,
+          "capacity" : 100.0,
+          "usedCapacity" : 0.0,
+          "maxCapacity" : 100.0,
+          "absoluteCapacity" : 100.0,
+          "absoluteUsedCapacity" : 0.0,
+          "absoluteMaxCapacity" : 100.0,
+          "maxAMLimitPercentage" : 0.0,
+          "weight" : -1.0,
+          "normalizedWeight" : 0.0,
           "configuredMinResource" : {
             "memory" : 0,
             "vCores" : 0,

+ 72 - 72
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/resources/webapp/scheduler-response.json

@@ -2,11 +2,11 @@
   "scheduler" : {
     "schedulerInfo" : {
       "type" : "capacityScheduler",
-      "capacity" : 100,
-      "usedCapacity" : 0,
-      "maxCapacity" : 100,
-      "weight" : -1,
-      "normalizedWeight" : 0,
+      "capacity" : 100.0,
+      "usedCapacity" : 0.0,
+      "maxCapacity" : 100.0,
+      "weight" : -1.0,
+      "normalizedWeight" : 0.0,
       "queueCapacityVectorInfo" : {
         "configuredCapacityVector" : "[memory-mb=100.0%,vcores=100.0%]",
         "capacityVectorEntries" : [ {
@@ -26,13 +26,13 @@
           "type" : "capacitySchedulerLeafQueueInfo",
           "queuePath" : "root.a",
           "capacity" : 12.5,
-          "usedCapacity" : 0,
-          "maxCapacity" : 50,
+          "usedCapacity" : 0.0,
+          "maxCapacity" : 50.0,
           "absoluteCapacity" : 12.5,
-          "absoluteMaxCapacity" : 50,
-          "absoluteUsedCapacity" : 0,
-          "weight" : -1,
-          "normalizedWeight" : 0,
+          "absoluteMaxCapacity" : 50.0,
+          "absoluteUsedCapacity" : 0.0,
+          "weight" : -1.0,
+          "normalizedWeight" : 0.0,
           "numApplications" : 0,
           "maxParallelApps" : 2147483647,
           "queueName" : "a",
@@ -80,14 +80,14 @@
                 } ]
               },
               "capacity" : 12.5,
-              "usedCapacity" : 0,
-              "maxCapacity" : 50,
+              "usedCapacity" : 0.0,
+              "maxCapacity" : 50.0,
               "absoluteCapacity" : 12.5,
-              "absoluteUsedCapacity" : 0,
-              "absoluteMaxCapacity" : 50,
-              "maxAMLimitPercentage" : 10,
-              "weight" : -1,
-              "normalizedWeight" : 0,
+              "absoluteUsedCapacity" : 0.0,
+              "absoluteMaxCapacity" : 50.0,
+              "maxAMLimitPercentage" : 10.0,
+              "weight" : -1.0,
+              "normalizedWeight" : 0.0,
               "configuredMinResource" : {
                 "memory" : 0,
                 "vCores" : 0,
@@ -185,15 +185,15 @@
               "queueCapacityVectorInfo" : {
                 "configuredCapacityVector" : "[]"
               },
-              "capacity" : 0,
-              "usedCapacity" : 0,
-              "maxCapacity" : 100,
-              "absoluteCapacity" : 0,
-              "absoluteUsedCapacity" : 0,
-              "absoluteMaxCapacity" : 0,
-              "maxAMLimitPercentage" : 0,
-              "weight" : -1,
-              "normalizedWeight" : 0,
+              "capacity" : 0.0,
+              "usedCapacity" : 0.0,
+              "maxCapacity" : 100.0,
+              "absoluteCapacity" : 0.0,
+              "absoluteUsedCapacity" : 0.0,
+              "absoluteMaxCapacity" : 0.0,
+              "maxAMLimitPercentage" : 0.0,
+              "weight" : -1.0,
+              "normalizedWeight" : 0.0,
               "configuredMinResource" : {
                 "memory" : 0,
                 "vCores" : 0,
@@ -668,9 +668,9 @@
           "numContainers" : 0,
           "maxApplications" : 1250,
           "maxApplicationsPerUser" : 1250,
-          "userLimit" : 100,
+          "userLimit" : 100.0,
           "users" : { },
-          "userLimitFactor" : 1,
+          "userLimitFactor" : 1.0,
           "configuredMaxAMResourceLimit" : 0.1,
           "AMResourceLimit" : {
             "memory" : 2048,
@@ -750,14 +750,14 @@
         }, {
           "type" : "capacitySchedulerLeafQueueInfo",
           "queuePath" : "root.b",
-          "capacity" : 50,
-          "usedCapacity" : 0,
-          "maxCapacity" : 100,
-          "absoluteCapacity" : 50,
-          "absoluteMaxCapacity" : 100,
-          "absoluteUsedCapacity" : 0,
-          "weight" : -1,
-          "normalizedWeight" : 0,
+          "capacity" : 50.0,
+          "usedCapacity" : 0.0,
+          "maxCapacity" : 100.0,
+          "absoluteCapacity" : 50.0,
+          "absoluteMaxCapacity" : 100.0,
+          "absoluteUsedCapacity" : 0.0,
+          "weight" : -1.0,
+          "normalizedWeight" : 0.0,
           "numApplications" : 0,
           "maxParallelApps" : 2147483647,
           "queueName" : "b",
@@ -804,15 +804,15 @@
                   "resourceValue" : "50.0%"
                 } ]
               },
-              "capacity" : 50,
-              "usedCapacity" : 0,
-              "maxCapacity" : 100,
-              "absoluteCapacity" : 50,
-              "absoluteUsedCapacity" : 0,
-              "absoluteMaxCapacity" : 100,
-              "maxAMLimitPercentage" : 10,
-              "weight" : -1,
-              "normalizedWeight" : 0,
+              "capacity" : 50.0,
+              "usedCapacity" : 0.0,
+              "maxCapacity" : 100.0,
+              "absoluteCapacity" : 50.0,
+              "absoluteUsedCapacity" : 0.0,
+              "absoluteMaxCapacity" : 100.0,
+              "maxAMLimitPercentage" : 10.0,
+              "weight" : -1.0,
+              "normalizedWeight" : 0.0,
               "configuredMinResource" : {
                 "memory" : 0,
                 "vCores" : 0,
@@ -1147,9 +1147,9 @@
           "numContainers" : 0,
           "maxApplications" : 5000,
           "maxApplicationsPerUser" : 5000,
-          "userLimit" : 100,
+          "userLimit" : 100.0,
           "users" : { },
-          "userLimitFactor" : 1,
+          "userLimitFactor" : 1.0,
           "configuredMaxAMResourceLimit" : 0.1,
           "AMResourceLimit" : {
             "memory" : 4096,
@@ -1230,13 +1230,13 @@
           "type" : "capacitySchedulerLeafQueueInfo",
           "queuePath" : "root.c",
           "capacity" : 37.5,
-          "usedCapacity" : 0,
-          "maxCapacity" : 100,
+          "usedCapacity" : 0.0,
+          "maxCapacity" : 100.0,
           "absoluteCapacity" : 37.5,
-          "absoluteMaxCapacity" : 100,
-          "absoluteUsedCapacity" : 0,
-          "weight" : -1,
-          "normalizedWeight" : 0,
+          "absoluteMaxCapacity" : 100.0,
+          "absoluteUsedCapacity" : 0.0,
+          "weight" : -1.0,
+          "normalizedWeight" : 0.0,
           "numApplications" : 0,
           "maxParallelApps" : 2147483647,
           "queueName" : "c",
@@ -1284,14 +1284,14 @@
                 } ]
               },
               "capacity" : 37.5,
-              "usedCapacity" : 0,
-              "maxCapacity" : 100,
+              "usedCapacity" : 0.0,
+              "maxCapacity" : 100.0,
               "absoluteCapacity" : 37.5,
-              "absoluteUsedCapacity" : 0,
-              "absoluteMaxCapacity" : 100,
-              "maxAMLimitPercentage" : 10,
-              "weight" : -1,
-              "normalizedWeight" : 0,
+              "absoluteUsedCapacity" : 0.0,
+              "absoluteMaxCapacity" : 100.0,
+              "maxAMLimitPercentage" : 10.0,
+              "weight" : -1.0,
+              "normalizedWeight" : 0.0,
               "configuredMinResource" : {
                 "memory" : 0,
                 "vCores" : 0,
@@ -1626,9 +1626,9 @@
           "numContainers" : 0,
           "maxApplications" : 3750,
           "maxApplicationsPerUser" : 3750,
-          "userLimit" : 100,
+          "userLimit" : 100.0,
           "users" : { },
-          "userLimitFactor" : 1,
+          "userLimitFactor" : 1.0,
           "configuredMaxAMResourceLimit" : 0.1,
           "AMResourceLimit" : {
             "memory" : 4096,
@@ -1720,15 +1720,15 @@
               "resourceValue" : "100.0%"
             } ]
           },
-          "capacity" : 100,
-          "usedCapacity" : 0,
-          "maxCapacity" : 100,
-          "absoluteCapacity" : 100,
-          "absoluteUsedCapacity" : 0,
-          "absoluteMaxCapacity" : 100,
-          "maxAMLimitPercentage" : 0,
-          "weight" : -1,
-          "normalizedWeight" : 0,
+          "capacity" : 100.0,
+          "usedCapacity" : 0.0,
+          "maxCapacity" : 100.0,
+          "absoluteCapacity" : 100.0,
+          "absoluteUsedCapacity" : 0.0,
+          "absoluteMaxCapacity" : 100.0,
+          "maxAMLimitPercentage" : 0.0,
+          "weight" : -1.0,
+          "normalizedWeight" : 0.0,
           "configuredMinResource" : {
             "memory" : 0,
             "vCores" : 0,

Some files were not shown because too many files changed in this diff