diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/resource/TestResourceCalculator.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/resource/TestResourceCalculator.java index df4a9b87008..f1c8c898005 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/resource/TestResourceCalculator.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/resource/TestResourceCalculator.java @@ -36,6 +36,8 @@ import static org.junit.Assert.assertEquals; @RunWith(Parameterized.class) public class TestResourceCalculator { + private static final String EXTRA_RESOURCE_NAME = "test"; + private final ResourceCalculator resourceCalculator; @Parameterized.Parameters(name = "{0}") @@ -55,7 +57,7 @@ public class TestResourceCalculator { 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); } @@ -97,10 +99,10 @@ public class TestResourceCalculator { 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; } @@ -548,4 +550,43 @@ public class TestResourceCalculator { newResource(1, 1))); } } + + @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