@Test public void testCalculateAvgWithUnusedResource() { Map<String, Double> allResourcesMap = new HashMap<>(); allResourcesMap.put(Constants.COMMON_CPU_RESOURCE_NAME, 2.0); allResourcesMap.put(gpuResourceName, 10.0); NormalizedResources resources = new NormalizedResources(normalize(allResourcesMap)); Map<String, Double> usedResourcesMap = new HashMap<>(); usedResourcesMap.put(Constants.COMMON_CPU_RESOURCE_NAME, 1.0); NormalizedResources usedResources = new NormalizedResources(normalize(usedResourcesMap)); double avg = resources.calculateAveragePercentageUsedBy(usedResources, 4, 1); //The resource that is not used should count as if it is being used 0% assertThat(avg, is((50.0 + 25.0)/3)); }
@Test public void testCalculateMinWithTooLittleResourceInTotal() { Map<String, Double> allResourcesMap = new HashMap<>(); allResourcesMap.put(Constants.COMMON_CPU_RESOURCE_NAME, 2.0); allResourcesMap.put(gpuResourceName, 1.0); NormalizedResources resources = new NormalizedResources(normalize(allResourcesMap)); Map<String, Double> usedResourcesMap = new HashMap<>(); usedResourcesMap.put(Constants.COMMON_CPU_RESOURCE_NAME, 1.0); usedResourcesMap.put(gpuResourceName, 5.0); NormalizedResources usedResources = new NormalizedResources(normalize(usedResourcesMap)); expectedException.expect(IllegalArgumentException.class); resources.calculateMinPercentageUsedBy(usedResources, 4, 1); } }
@Test public void testCalculateMinWithResourceMissingFromTotal() { Map<String, Double> allResourcesMap = new HashMap<>(); allResourcesMap.put(Constants.COMMON_CPU_RESOURCE_NAME, 2.0); NormalizedResources resources = new NormalizedResources(normalize(allResourcesMap)); Map<String, Double> usedResourcesMap = new HashMap<>(); usedResourcesMap.put(Constants.COMMON_CPU_RESOURCE_NAME, 1.0); usedResourcesMap.put(gpuResourceName, 1.0); NormalizedResources usedResources = new NormalizedResources(normalize(usedResourcesMap)); expectedException.expect(IllegalArgumentException.class); resources.calculateMinPercentageUsedBy(usedResources, 4, 1); }
@Test public void testCalculateAvgWithCpuMemAndGenericResource() { Map<String, Double> allResourcesMap = new HashMap<>(); allResourcesMap.put(Constants.COMMON_CPU_RESOURCE_NAME, 2.0); allResourcesMap.put(gpuResourceName, 10.0); NormalizedResources resources = new NormalizedResources(normalize(allResourcesMap)); Map<String, Double> usedResourcesMap = new HashMap<>(); usedResourcesMap.put(Constants.COMMON_CPU_RESOURCE_NAME, 1.0); usedResourcesMap.put(gpuResourceName, 1.0); NormalizedResources usedResources = new NormalizedResources(normalize(usedResourcesMap)); double avg = resources.calculateAveragePercentageUsedBy(usedResources, 4, 1); assertThat(avg, is((50.0 + 25.0 + 10.0)/3)); }
@Test public void testCalculateAvgWithTooLittleResourceInTotal() { Map<String, Double> allResourcesMap = new HashMap<>(); allResourcesMap.put(Constants.COMMON_CPU_RESOURCE_NAME, 2.0); allResourcesMap.put(gpuResourceName, 1.0); NormalizedResources resources = new NormalizedResources(normalize(allResourcesMap)); Map<String, Double> usedResourcesMap = new HashMap<>(); usedResourcesMap.put(Constants.COMMON_CPU_RESOURCE_NAME, 1.0); usedResourcesMap.put(gpuResourceName, 5.0); NormalizedResources usedResources = new NormalizedResources(normalize(usedResourcesMap)); expectedException.expect(IllegalArgumentException.class); resources.calculateAveragePercentageUsedBy(usedResources, 4, 1); }
@Test public void testCalculateMinWithUnusedResource() { Map<String, Double> allResourcesMap = new HashMap<>(); allResourcesMap.put(Constants.COMMON_CPU_RESOURCE_NAME, 2.0); allResourcesMap.put(gpuResourceName, 10.0); NormalizedResources resources = new NormalizedResources(normalize(allResourcesMap)); Map<String, Double> usedResourcesMap = new HashMap<>(); usedResourcesMap.put(Constants.COMMON_CPU_RESOURCE_NAME, 1.0); NormalizedResources usedResources = new NormalizedResources(normalize(usedResourcesMap)); double min = resources.calculateMinPercentageUsedBy(usedResources, 4, 1); //The resource that is not used should count as if it is being used 0% assertThat(min, is(0.0)); }
@Test public void testCalculateAvgWithOnlyCpu() { NormalizedResources resources = new NormalizedResources(normalize(Collections.singletonMap(Constants.COMMON_CPU_RESOURCE_NAME, 2))); NormalizedResources usedResources = new NormalizedResources(normalize(Collections.singletonMap(Constants.COMMON_CPU_RESOURCE_NAME, 1))); double avg = resources.calculateAveragePercentageUsedBy(usedResources, 0, 0); assertThat(avg, is(50.0)); }
@Test public void testCalculateMinWithCpuMemAndGenericResource() { Map<String, Double> allResourcesMap = new HashMap<>(); allResourcesMap.put(Constants.COMMON_CPU_RESOURCE_NAME, 2.0); allResourcesMap.put(gpuResourceName, 10.0); NormalizedResources resources = new NormalizedResources(normalize(allResourcesMap)); Map<String, Double> usedResourcesMap = new HashMap<>(); usedResourcesMap.put(Constants.COMMON_CPU_RESOURCE_NAME, 1.0); usedResourcesMap.put(gpuResourceName, 1.0); NormalizedResources usedResources = new NormalizedResources(normalize(usedResourcesMap)); double min = resources.calculateMinPercentageUsedBy(usedResources, 4, 1); assertThat(min, is(10.0)); }
@Test public void testCalculateAvgWithResourceMissingFromTotal() { Map<String, Double> allResourcesMap = new HashMap<>(); allResourcesMap.put(Constants.COMMON_CPU_RESOURCE_NAME, 2.0); NormalizedResources resources = new NormalizedResources(normalize(allResourcesMap)); Map<String, Double> usedResourcesMap = new HashMap<>(); usedResourcesMap.put(Constants.COMMON_CPU_RESOURCE_NAME, 1.0); usedResourcesMap.put(gpuResourceName, 1.0); NormalizedResources usedResources = new NormalizedResources(normalize(usedResourcesMap)); expectedException.expect(IllegalArgumentException.class); resources.calculateAveragePercentageUsedBy(usedResources, 4, 1); }
@Test public void testCouldHoldWithTooLittleMemory() { NormalizedResources resources = new NormalizedResources(normalize(Collections.singletonMap(gpuResourceName, 1))); NormalizedResources resourcesToCheck = new NormalizedResources(normalize(Collections.singletonMap(gpuResourceName, 1))); boolean couldHold = resources.couldHoldIgnoringSharedMemory(resourcesToCheck, 100, 200); assertThat(couldHold, is(false)); }
@Test public void testCouldHoldWithMissingResource() { NormalizedResources resources = new NormalizedResources(normalize(Collections.emptyMap())); NormalizedResources resourcesToCheck = new NormalizedResources(normalize(Collections.singletonMap(gpuResourceName, 1))); boolean couldHold = resources.couldHoldIgnoringSharedMemory(resourcesToCheck, 100, 1); assertThat(couldHold, is(false)); }
@Test public void testCalculateMinUsageWithNoResourcesInTotal() { NormalizedResources resources = new NormalizedResources(normalize(Collections.emptyMap())); NormalizedResources usedResources = new NormalizedResources(normalize(Collections.emptyMap())); double min = resources.calculateMinPercentageUsedBy(usedResources, 0, 0); assertThat(min, is(100.0)); }
@Test public void testCouldHoldWithEnoughResources() { Map<String, Double> allResources = new HashMap<>(); allResources.put(Constants.COMMON_CPU_RESOURCE_NAME, 2.0); allResources.put(gpuResourceName, 2.0); NormalizedResources resources = new NormalizedResources(normalize(allResources)); NormalizedResources resourcesToCheck = new NormalizedResources(normalize(allResources)); boolean couldHold = resources.couldHoldIgnoringSharedMemory(resourcesToCheck, 100, 100); assertThat(couldHold, is(true)); }
@Test public void testCalculateAvgThrowsIfTotalIsMissingMemory() { NormalizedResources resources = new NormalizedResources(normalize(Collections.singletonMap(Constants.COMMON_CPU_RESOURCE_NAME, 2))); NormalizedResources usedResources = new NormalizedResources(normalize(Collections.singletonMap(Constants.COMMON_CPU_RESOURCE_NAME, 1))); expectedException.expect(IllegalArgumentException.class); resources.calculateAveragePercentageUsedBy(usedResources, 100, 500); }
@Test public void testCouldHoldWithTooFewCpus() { NormalizedResources resources = new NormalizedResources(normalize(Collections.singletonMap(Constants.COMMON_CPU_RESOURCE_NAME, 1))); NormalizedResources resourcesToCheck = new NormalizedResources(normalize(Collections.singletonMap(Constants.COMMON_CPU_RESOURCE_NAME, 2))); boolean couldHold = resources.couldHoldIgnoringSharedMemory(resourcesToCheck, 100, 1); assertThat(couldHold, is(false)); }
@Test public void testCalculateMinWithCpuAndMem() { NormalizedResources resources = new NormalizedResources(normalize(Collections.singletonMap(Constants.COMMON_CPU_RESOURCE_NAME, 2))); NormalizedResources usedResources = new NormalizedResources(normalize(Collections.singletonMap(Constants.COMMON_CPU_RESOURCE_NAME, 1))); double min = resources.calculateMinPercentageUsedBy(usedResources, 4, 1); assertThat(min, is(25.0)); }
@Test public void testCouldHoldWithTooFewResource() { NormalizedResources resources = new NormalizedResources(normalize(Collections.singletonMap(gpuResourceName, 1))); NormalizedResources resourcesToCheck = new NormalizedResources(normalize(Collections.singletonMap(gpuResourceName, 2))); boolean couldHold = resources.couldHoldIgnoringSharedMemory(resourcesToCheck, 100, 1); assertThat(couldHold, is(false)); }
@Test public void testCalculateAvgUsageWithNoResourcesInTotal() { NormalizedResources resources = new NormalizedResources(normalize(Collections.emptyMap())); NormalizedResources usedResources = new NormalizedResources(normalize(Collections.emptyMap())); double avg = resources.calculateAveragePercentageUsedBy(usedResources, 0, 0); assertThat(avg, is(100.0)); }
@Test public void testCalculateAvgWithCpuAndMem() { NormalizedResources resources = new NormalizedResources(normalize(Collections.singletonMap(Constants.COMMON_CPU_RESOURCE_NAME, 2))); NormalizedResources usedResources = new NormalizedResources(normalize(Collections.singletonMap(Constants.COMMON_CPU_RESOURCE_NAME, 1))); double avg = resources.calculateAveragePercentageUsedBy(usedResources, 4, 1); assertThat(avg, is((50.0 + 25.0)/2)); }
@Test public void testCalculateMinWithOnlyCpu() { NormalizedResources resources = new NormalizedResources(normalize(Collections.singletonMap(Constants.COMMON_CPU_RESOURCE_NAME, 2))); NormalizedResources usedResources = new NormalizedResources(normalize(Collections.singletonMap(Constants.COMMON_CPU_RESOURCE_NAME, 1))); double min = resources.calculateMinPercentageUsedBy(usedResources, 0, 0); assertThat(min, is(50.0)); }