/** * Parses a resource config value in one of three forms: * <ol> * <li>Percentage: "50%" or "40% memory, 60% cpu"</li> * <li>New style resources: "vcores=10, memory-mb=1024" * or "vcores=60%, memory-mb=40%"</li> * <li>Old style resources: "1024 mb, 10 vcores"</li> * </ol> * In new style resources, any resource that is not specified will be * set to {@link Long#MAX_VALUE} or 100%, as appropriate. Also, in the new * style resources, units are not allowed. Units are assumed from the resource * manager's settings for the resources when the value isn't a percentage. * * @param value the resource definition to parse * @return a {@link ConfigurableResource} that represents the parsed value * @throws AllocationConfigurationException if the raw value is not a valid * resource definition */ public static ConfigurableResource parseResourceConfigValue(String value) throws AllocationConfigurationException { return parseResourceConfigValue(value, Long.MAX_VALUE); }
public ConfigurableResource getQueueMaxResourcesDefault() throws AllocationConfigurationException { Optional<String> value = getTextValue(QUEUE_MAX_RESOURCES_DEFAULT); if (value.isPresent()) { return FairSchedulerConfiguration.parseResourceConfigValue(value.get()); } return new ConfigurableResource(Resources.unbounded()); }
if ("minResources".equals(field.getTagName())) { String text = ((Text)field.getFirstChild()).getData().trim(); Resource val = FairSchedulerConfiguration.parseResourceConfigValue(text); minQueueResources.put(queueName, val); } else if ("maxResources".equals(field.getTagName())) { String text = ((Text)field.getFirstChild()).getData().trim(); Resource val = FairSchedulerConfiguration.parseResourceConfigValue(text); maxQueueResources.put(queueName, val); } else if ("maxRunningApps".equals(field.getTagName())) {
@Test(expected = AllocationConfigurationException.class) public void testOnlyCPU() throws Exception { parseResourceConfigValue("1024vcores"); }
@Test(expected = AllocationConfigurationException.class) public void testNoUnits() throws Exception { parseResourceConfigValue("1024"); }
if ("minResources".equals(field.getTagName())) { String text = ((Text)field.getFirstChild()).getData().trim(); Resource val = FairSchedulerConfiguration.parseResourceConfigValue(text); minQueueResources.put(queueName, val); } else if ("maxResources".equals(field.getTagName())) { String text = ((Text)field.getFirstChild()).getData().trim(); Resource val = FairSchedulerConfiguration.parseResourceConfigValue(text); maxQueueResources.put(queueName, val); } else if ("maxRunningApps".equals(field.getTagName())) {
@Test(expected = AllocationConfigurationException.class) public void testNoUnits() throws Exception { parseResourceConfigValue("1024"); }
@Test(expected = AllocationConfigurationException.class) public void testOnlyMemory() throws Exception { parseResourceConfigValue("1024mb"); }
@Test(expected = AllocationConfigurationException.class) public void testNoUnitsPercentage() throws Exception { parseResourceConfigValue("95%, 50% memory"); }
@Test(expected = AllocationConfigurationException.class) public void testInvalidNumPercentage() throws Exception { parseResourceConfigValue("95A% cpu, 50% memory"); }
@Test(expected = AllocationConfigurationException.class) public void testGibberish() throws Exception { parseResourceConfigValue("1o24vc0res"); }
@Test(expected = AllocationConfigurationException.class) public void testCpuPercentageMemoryAbsolute() throws Exception { parseResourceConfigValue("50% cpu, 1024 mb"); }
@Test(expected = AllocationConfigurationException.class) public void testMemoryPercentageCpuAbsolute() throws Exception { parseResourceConfigValue("50% memory, 2 vcores"); }
@Test(expected = AllocationConfigurationException.class) public void testOnlyMemory() throws Exception { parseResourceConfigValue("1024mb"); }
@Test(expected = AllocationConfigurationException.class) public void testOnlyCPU() throws Exception { parseResourceConfigValue("1024vcores"); }
@Test(expected = AllocationConfigurationException.class) public void testGibberish() throws Exception { parseResourceConfigValue("1o24vc0res"); }
String text = getTrimmedTextData(field); ConfigurableResource val = FairSchedulerConfiguration.parseResourceConfigValue(text, 0L); builder.minQueueResources(queueName, val.getResource()); } else if (MAX_RESOURCES.equals(field.getTagName())) { String text = getTrimmedTextData(field); ConfigurableResource val = FairSchedulerConfiguration.parseResourceConfigValue(text); builder.maxQueueResources(queueName, val); } else if (MAX_CHILD_RESOURCES.equals(field.getTagName())) { String text = getTrimmedTextData(field); ConfigurableResource val = FairSchedulerConfiguration.parseResourceConfigValue(text); builder.maxChildQueueResources(queueName, val); } else if (MAX_RUNNING_APPS.equals(field.getTagName())) { String text = getTrimmedTextData(field); ConfigurableResource val = FairSchedulerConfiguration.parseResourceConfigValue(text); builder.queueMaxContainerAllocation(queueName, val.getResource()); } else if (WEIGHT.equals(field.getTagName())) {
@Test public void testParseResourceConfigValue() throws Exception { assertEquals(BuilderUtils.newResource(1024, 2), parseResourceConfigValue("2 vcores, 1024 mb")); assertEquals(BuilderUtils.newResource(1024, 2), parseResourceConfigValue("1024 mb, 2 vcores")); assertEquals(BuilderUtils.newResource(1024, 2), parseResourceConfigValue("2vcores,1024mb")); assertEquals(BuilderUtils.newResource(1024, 2), parseResourceConfigValue("1024mb,2vcores")); assertEquals(BuilderUtils.newResource(1024, 2), parseResourceConfigValue("1024 mb, 2 vcores")); assertEquals(BuilderUtils.newResource(1024, 2), parseResourceConfigValue("1024 Mb, 2 vCores")); assertEquals(BuilderUtils.newResource(1024, 2), parseResourceConfigValue(" 1024 mb, 2 vcores ")); }
parseResourceConfigValue("2 vcores, 5120 mb").getResource()); assertEquals(expected, parseResourceConfigValue("5120 mb, 2 vcores").getResource()); assertEquals(expected, parseResourceConfigValue("2vcores,5120mb").getResource()); assertEquals(expected, parseResourceConfigValue("5120mb,2vcores").getResource()); assertEquals(expected, parseResourceConfigValue("5120mb mb, 2 vcores").getResource()); assertEquals(expected, parseResourceConfigValue("5120 Mb, 2 vCores").getResource()); assertEquals(expected, parseResourceConfigValue(" 5120 mb, 2 vcores ").getResource()); assertEquals(expected, parseResourceConfigValue(" 5120.3 mb, 2.35 vcores ").getResource()); assertEquals(expected, parseResourceConfigValue(" 5120. mb, 2. vcores ").getResource()); parseResourceConfigValue("50% memory, 50% cpu"). getResource(clusterResource)); assertEquals(expected, parseResourceConfigValue("50% Memory, 50% CpU"). getResource(clusterResource)); assertEquals(BuilderUtils.newResource(5 * 1024, 4), parseResourceConfigValue("50% memory, 100% cpu"). getResource(clusterResource)); assertEquals(BuilderUtils.newResource(5 * 1024, 4), parseResourceConfigValue(" 100% cpu, 50% memory"). getResource(clusterResource));