/** * Check if resources might be able to fit. * @see NormalizedResources#couldHoldIgnoringSharedMemory(org.apache.storm.scheduler.resource.normalization.NormalizedResources, double, * double) */ public boolean couldHoldIgnoringSharedMemory(NormalizedResourcesWithMemory other) { return normalizedResources.couldHoldIgnoringSharedMemory( other.getNormalizedResources(), getTotalMemoryMb(), other.getTotalMemoryMb()); }
@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 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 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 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)); }