Index: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/resource/TestResourceCalculator.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/resource/TestResourceCalculator.java (revision ea9fb07fd22417ab22d231531277d9ffe07814a2) +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/resource/TestResourceCalculator.java (date 1552994865000) @@ -34,6 +34,8 @@ @RunWith(Parameterized.class) public class TestResourceCalculator { + private static final String EXTRA_RESOURCE_NAME = "test"; + private final ResourceCalculator resourceCalculator; @Parameterized.Parameters(name = "{0}") @@ -53,7 +55,7 @@ private static void setupExtraResource() { Configuration conf = new Configuration(); - conf.set(YarnConfiguration.RESOURCE_TYPES, "test"); + conf.set(YarnConfiguration.RESOURCE_TYPES, EXTRA_RESOURCE_NAME); ResourceUtils.resetResourceTypes(conf); } @@ -95,10 +97,10 @@ return res; } - private Resource newResource(long memory, int cpu, int test) { + private Resource newResource(long memory, int cpu, int extraResource) { Resource res = newResource(memory, cpu); - res.setResourceValue("test", test); + res.setResourceValue(EXTRA_RESOURCE_NAME, extraResource); return res; } @@ -406,4 +408,43 @@ 0)); assertEquals(0.0, ratio, 0.00001); } + + @Test + public void testRatioWithNoExtraResource() { + //setup + Resource resource1 = newResource(1, 1); + Resource resource2 = newResource(2, 1); + + //act + float ratio = resourceCalculator.ratio(resource1, resource2); + + //assert + if (resourceCalculator instanceof DefaultResourceCalculator) { + double ratioOfMemories = 0.5; + assertEquals(ratioOfMemories, ratio, 0.00001); + } else if (resourceCalculator instanceof DominantResourceCalculator) { + double ratioOfCPUs = 1.0; + assertEquals(ratioOfCPUs, ratio, 0.00001); + } + } + + @Test + public void testRatioWithExtraResource() { + //setup + setupExtraResource(); + Resource resource1 = newResource(1, 1, 2); + Resource resource2 = newResource(2, 1, 1); + + //act + float ratio = resourceCalculator.ratio(resource1, resource2); + + //assert + if (resourceCalculator instanceof DefaultResourceCalculator) { + double ratioOfMemories = 0.5; + assertEquals(ratioOfMemories, ratio, 0.00001); + } else if (resourceCalculator instanceof DominantResourceCalculator) { + double ratioOfExtraResources = 2.0; + assertEquals(ratioOfExtraResources, ratio, 0.00001); + } + } } \ No newline at end of file