@Override public String toString() { return "Normalized resources: " + toNormalizedMap(); }
private void throwBecauseUsedIsNotSubsetOfTotal(NormalizedResources used, double totalMemoryMb, double usedMemoryMb) { throw new IllegalArgumentException(String.format("The used resources must be a subset of the total resources." + " Used: '%s', Total: '%s', Used Mem: '%f', Total Mem: '%f'", used.toNormalizedMap(), this.toNormalizedMap(), usedMemoryMb, totalMemoryMb)); }
/** * Return these resources as a normalized map. * @return the normalized map. */ public Map<String, Double> toNormalizedMap() { Map<String, Double> ret = normalizedResources.toNormalizedMap(); ret.put(Constants.COMMON_TOTAL_MEMORY_RESOURCE_NAME, totalMemoryMb); return ret; }
/** * Convert to a map that is used by configuration and the UI. * @return a map with the key as the resource name and the value the resource amount. */ public Map<String, Double> toNormalizedMap() { Map<String, Double> ret = this.normalizedResources.toNormalizedMap(); ret.put(Constants.COMMON_OFFHEAP_MEMORY_RESOURCE_NAME, offHeap); ret.put(Constants.COMMON_ONHEAP_MEMORY_RESOURCE_NAME, onHeap); return ret; }
LOG.trace("Calculating min percentage used by. Used Mem: {} Total Mem: {}" + " Used Normalized Resources: {} Total Normalized Resources: {}", totalMemoryMb, usedMemoryMb, toNormalizedMap(), used.toNormalizedMap());
@Test public void testAddWhenOtherHasDifferentResourceThanThis() { String disks = "disks"; NormalizedResources resources = new NormalizedResources(normalize(Collections.singletonMap(disks, 23))); NormalizedResources addedResources = new NormalizedResources(normalize(Collections.singletonMap(gpuResourceName, 1))); resources.add(addedResources); Map<String, Double> normalizedMap = resources.toNormalizedMap(); assertThat(normalizedMap.get(disks), is(23.0)); assertThat(normalizedMap.get(gpuResourceName), is(1.0)); }
@Test public void testAddToExistingResource() { NormalizedResources resources = new NormalizedResources(normalize(Collections.singletonMap(gpuResourceName, 1))); NormalizedResources addedResources = new NormalizedResources(normalize(Collections.singletonMap(gpuResourceName, 1))); resources.add(addedResources); Map<String, Double> normalizedMap = resources.toNormalizedMap(); assertThat(normalizedMap.get(gpuResourceName), is(2.0)); }
@Test public void testAddWhenOtherHasMoreResourcesThanThis() { NormalizedResources resources = new NormalizedResources(normalize(Collections.emptyMap())); NormalizedResources addedResources = new NormalizedResources(normalize(Collections.singletonMap(gpuResourceName, 1))); resources.add(addedResources); Map<String, Double> normalizedMap = resources.toNormalizedMap(); assertThat(normalizedMap.get(gpuResourceName), is(1.0)); }
@Test public void testAddCpu() { NormalizedResources resources = new NormalizedResources(normalize(Collections.singletonMap(Constants.COMMON_CPU_RESOURCE_NAME, 1))); NormalizedResources addedResources = new NormalizedResources(normalize(Collections.singletonMap(Constants.COMMON_CPU_RESOURCE_NAME, 1))); resources.add(addedResources); Map<String, Double> normalizedMap = resources.toNormalizedMap(); assertThat(normalizedMap.get(Constants.COMMON_CPU_RESOURCE_NAME), is(2.0)); assertThat(resources.getTotalCpu(), is(2.0)); }
@Test public void testRemoveZeroesWhenResourcesBecomeNegative() { NormalizedResources resources = new NormalizedResources(normalize(Collections.singletonMap(gpuResourceName, 1))); NormalizedResources removedResources = new NormalizedResources(normalize(Collections.singletonMap(gpuResourceName, 2))); resources.remove(removedResources, new ResourceMetrics(new StormMetricsRegistry())); Map<String, Double> normalizedMap = resources.toNormalizedMap(); assertThat(normalizedMap.get(gpuResourceName), is(0.0)); }
@Test public void testRemoveFromExistingResources() { NormalizedResources resources = new NormalizedResources(normalize(Collections.singletonMap(gpuResourceName, 15))); NormalizedResources removedResources = new NormalizedResources(normalize(Collections.singletonMap(gpuResourceName, 1))); resources.remove(removedResources, new ResourceMetrics(new StormMetricsRegistry())); Map<String, Double> normalizedMap = resources.toNormalizedMap(); assertThat(normalizedMap.get(gpuResourceName), is(14.0)); }
@Test public void testRemoveFromCpu() { NormalizedResources resources = new NormalizedResources(normalize(Collections.singletonMap(Constants.COMMON_CPU_RESOURCE_NAME, 2))); NormalizedResources removedResources = new NormalizedResources(normalize(Collections.singletonMap(Constants.COMMON_CPU_RESOURCE_NAME, 1))); resources.remove(removedResources, new ResourceMetrics(new StormMetricsRegistry())); Map<String, Double> normalizedMap = resources.toNormalizedMap(); assertThat(normalizedMap.get(Constants.COMMON_CPU_RESOURCE_NAME), is(1.0)); assertThat(resources.getTotalCpu(), is(1.0)); }