/** * Return a Map of the normalized resource name to a double. This should only be used when returning thrift resource requests to the end * user. */ public Map<String, Double> toNormalizedMap() { Map<String, Double> ret = RESOURCE_MAP_ARRAY_BRIDGE.translateFromResourceArray(otherResources); ret.put(Constants.COMMON_CPU_RESOURCE_NAME, cpu); return ret; }
@Test public void testCanTranslateBackAndForthBetweenMapAndArrayConsistently() { ResourceMapArrayBridge bridge = new ResourceMapArrayBridge(); Map<String, Double> allResources = new HashMap<>(); allResources.put(gpuResourceName, 2.0); allResources.put(disksResourceName, 64.0); Map<String, Double> normalizedResources = normalize(allResources); double[] resources = bridge.translateToResourceArray(normalizedResources); Map<String, Integer> resourceNamesToArrayIndex = bridge.getResourceNamesToArrayIndex(); assertThat(resourceNamesToArrayIndex.size(), is(2)); int gpuIndex = resourceNamesToArrayIndex.get(gpuResourceName); int disksIndex = resourceNamesToArrayIndex.get(disksResourceName); assertThat(resources.length, is(2)); assertThat(resources[gpuIndex], is(2.0)); assertThat(resources[disksIndex], is(64.0)); Map<String, Double> roundTrippedResources = bridge.translateFromResourceArray(resources); assertThat(roundTrippedResources, is(normalizedResources)); double[] roundTrippedResourceArray = bridge.translateToResourceArray(roundTrippedResources); assertThat(roundTrippedResourceArray, equalTo(resources)); }