use of com.twitter.heron.spi.packing.PackingPlan in project heron by twitter.
the class ResourceCompliantRRPackingTest method scaleUpMultiple.
@Test
public void scaleUpMultiple() throws Exception {
int spoutScalingUp = 4;
int boltScalingUp = 4;
Map<String, Integer> componentChanges = new HashMap<>();
// 8 spouts
componentChanges.put(SPOUT_NAME, spoutScalingUp);
// 8 bolts
componentChanges.put(BOLT_NAME, boltScalingUp);
int numContainersBeforeRepack = 2;
PackingPlan newPackingPlan = doDefaultScalingTest(componentChanges, numContainersBeforeRepack);
Assert.assertEquals(4, newPackingPlan.getContainers().size());
Assert.assertEquals((Integer) (totalInstances + spoutScalingUp + boltScalingUp), newPackingPlan.getInstanceCount());
AssertPacking.assertNumInstances(newPackingPlan.getContainers(), BOLT_NAME, boltParallelism + boltScalingUp);
AssertPacking.assertNumInstances(newPackingPlan.getContainers(), SPOUT_NAME, spoutParallelism + spoutScalingUp);
}
use of com.twitter.heron.spi.packing.PackingPlan in project heron by twitter.
the class ResourceCompliantRRPackingTest method testPartialRamMap.
/**
* Test the scenario ram map config is fully set
*/
@Test
public void testPartialRamMap() throws Exception {
int numContainers = 2;
// Explicit set resources for container
ByteAmount containerRam = ByteAmount.fromGigabytes(10);
// Explicit set component ram map
ByteAmount boltRam = ByteAmount.fromGigabytes(1);
ByteAmount spoutRam = ByteAmount.fromGigabytes(2);
topologyConfig.setContainerRamRequested(containerRam);
topologyConfig.setComponentRam(BOLT_NAME, boltRam);
topologyConfig.setComponentRam(SPOUT_NAME, spoutRam);
TopologyAPI.Topology topologyExplicitRamMap = getTopology(spoutParallelism, boltParallelism, topologyConfig);
PackingPlan packingPlanExplicitRamMap = pack(topologyExplicitRamMap);
Assert.assertEquals(totalInstances, packingPlanExplicitRamMap.getInstanceCount());
Assert.assertEquals(numContainers, packingPlanExplicitRamMap.getContainers().size());
AssertPacking.assertContainers(packingPlanExplicitRamMap.getContainers(), BOLT_NAME, SPOUT_NAME, boltRam, spoutRam, containerRam);
}
use of com.twitter.heron.spi.packing.PackingPlan in project heron by twitter.
the class ResourceCompliantRRPackingTest method testDefaultContainerSizeRepack.
/**
* Test the scenario where the max container size is the default
* and scaling is requested.
*/
@Test
public void testDefaultContainerSizeRepack() throws Exception {
int numScalingInstances = 5;
Map<String, Integer> componentChanges = new HashMap<>();
componentChanges.put(BOLT_NAME, numScalingInstances);
int numContainersBeforeRepack = 2;
PackingPlan newPackingPlan = doDefaultScalingTest(componentChanges, numContainersBeforeRepack);
Assert.assertEquals(4, newPackingPlan.getContainers().size());
Assert.assertEquals((Integer) (totalInstances + numScalingInstances), newPackingPlan.getInstanceCount());
AssertPacking.assertContainers(newPackingPlan.getContainers(), BOLT_NAME, SPOUT_NAME, instanceDefaultResources.getRam(), instanceDefaultResources.getRam(), null);
for (PackingPlan.ContainerPlan containerPlan : newPackingPlan.getContainers()) {
Assert.assertEquals(Math.round(PackingUtils.increaseBy(containerPlan.getInstances().size() * instanceDefaultResources.getCpu(), DEFAULT_CONTAINER_PADDING)), (long) containerPlan.getRequiredResource().getCpu());
Assert.assertEquals(instanceDefaultResources.getRam().multiply(containerPlan.getInstances().size()).increaseBy(DEFAULT_CONTAINER_PADDING), containerPlan.getRequiredResource().getRam());
Assert.assertEquals(instanceDefaultResources.getDisk().multiply(containerPlan.getInstances().size()).increaseBy(DEFAULT_CONTAINER_PADDING), containerPlan.getRequiredResource().getDisk());
}
}
use of com.twitter.heron.spi.packing.PackingPlan in project heron by twitter.
the class ResourceCompliantRRPackingTest method scaleDownAndUpWithExtraPadding.
/**
* Test the scenario where scaling down and up is simultaneously requested and padding is
* configured
*/
@Test
public void scaleDownAndUpWithExtraPadding() throws Exception {
int paddingPercentage = 50;
int numContainers = 1;
topologyConfig.setContainerPaddingPercentage(paddingPercentage);
// Explicit set resources for container
ByteAmount maxContainerRam = ByteAmount.fromGigabytes(12);
// Explicit set component ram map
ByteAmount spoutRam = ByteAmount.fromGigabytes(2);
topologyConfig.setContainerRamRequested(maxContainerRam);
topologyConfig.setComponentRam(SPOUT_NAME, spoutRam);
topologyConfig.setNumStmgrs(numContainers);
int noBolts = 2;
int noSpouts = 1;
TopologyAPI.Topology topologyExplicitRamMap = getTopology(noSpouts, noBolts, topologyConfig);
int spoutScalingUp = 1;
int boltScalingDown = -2;
Map<String, Integer> componentChanges = new HashMap<>();
// 2 spouts
componentChanges.put(SPOUT_NAME, spoutScalingUp);
// 0 bolts
componentChanges.put(BOLT_NAME, boltScalingDown);
int numContainersBeforeRepack = 1;
PackingPlan newPackingPlan = doScalingTest(topologyExplicitRamMap, componentChanges, instanceDefaultResources.getRam(), noBolts, spoutRam, noSpouts, numContainersBeforeRepack, noSpouts + noBolts);
Assert.assertEquals(1, newPackingPlan.getContainers().size());
Assert.assertEquals((Integer) (noSpouts + noBolts + spoutScalingUp + boltScalingDown), newPackingPlan.getInstanceCount());
AssertPacking.assertNumInstances(newPackingPlan.getContainers(), BOLT_NAME, noBolts + boltScalingDown);
AssertPacking.assertNumInstances(newPackingPlan.getContainers(), SPOUT_NAME, noSpouts + spoutScalingUp);
}
use of com.twitter.heron.spi.packing.PackingPlan in project heron by twitter.
the class ResourceCompliantRRPackingTest method testScaleDown.
/**
* Test the scenario where the scaling down is requested
*/
@Test
public void testScaleDown() throws Exception {
int spoutScalingDown = -2;
int boltScalingDown = -1;
Map<String, Integer> componentChanges = new HashMap<>();
//leave 2 spouts
componentChanges.put(SPOUT_NAME, spoutScalingDown);
//leave 2 bolts
componentChanges.put(BOLT_NAME, boltScalingDown);
int numContainersBeforeRepack = 2;
PackingPlan newPackingPlan = doDefaultScalingTest(componentChanges, numContainersBeforeRepack);
Assert.assertEquals(1, newPackingPlan.getContainers().size());
Assert.assertEquals((Integer) (totalInstances + spoutScalingDown + boltScalingDown), newPackingPlan.getInstanceCount());
AssertPacking.assertNumInstances(newPackingPlan.getContainers(), BOLT_NAME, 2);
AssertPacking.assertNumInstances(newPackingPlan.getContainers(), SPOUT_NAME, 2);
}
Aggregations