Builder keyBuilder = accessor.keyBuilder();
accessor.setProperty(keyBuilder.liveInstance(instanceName), liveInstance);
accessor.setProperty(keyBuilder.instanceConfig(instanceName), instanceConfig);
String oldResource = "testResourceOld";
CurrentState currentState = new CurrentState(oldResource);
currentState.setState(PartitionId.from("testResourceOld_0"), State.from("OFFLINE"));
currentState.setState(PartitionId.from("testResourceOld_1"), State.from("SLAVE"));
currentState.setState(PartitionId.from("testResourceOld_2"), State.from("MASTER"));
currentState.setStateModelDefRef("MasterSlave");
accessor.setProperty(keyBuilder.currentState(instanceName, sessionId, oldResource),
currentState);
ResourceComputationStage stage = new ResourceComputationStage();
runStage(event, new ReadClusterDataStage());
runStage(event, stage);
Map<ResourceId, ResourceConfig> resourceMap =
event.getAttribute(AttributeName.RESOURCES.toString());
// +1 because it will have one for current state
AssertJUnit.assertEquals(resources.length + 1, resourceMap.size());
for (int i = 0; i < resources.length; i++) {
String resourceName = resources[i];
ResourceId resourceId = ResourceId.from(resourceName);
IdealState idealState = idealStates.get(i);
AssertJUnit.assertTrue(resourceMap.containsKey(resourceId));
AssertJUnit.assertEquals(resourceMap.get(resourceId).getId(), resourceId);
AssertJUnit.assertEquals(resourceMap.get(resourceId).getRebalancerConfig()
.getRebalancerContext(RebalancerContext.class).getStateModelDefId(),
idealState.getStateModelDefId());
AssertJUnit.assertEquals(resourceMap.get(resourceId).getSubUnitSet().size(),
idealState.getNumPartitions());
}
// Test the data derived from CurrentState
ResourceId oldResourceId = ResourceId.from(oldResource);
AssertJUnit.assertTrue(resourceMap.containsKey(oldResourceId));
AssertJUnit.assertEquals(resourceMap.get(oldResourceId).getId(), oldResourceId);
AssertJUnit.assertEquals(resourceMap.get(oldResourceId).getRebalancerConfig()
.getRebalancerContext(RebalancerContext.class).getStateModelDefId(),
currentState.getStateModelDefId());
AssertJUnit.assertEquals(resourceMap.get(oldResourceId).getSubUnitSet().size(), currentState
.getTypedPartitionStateMap().size());
AssertJUnit.assertNotNull(resourceMap.get(oldResourceId).getSubUnit(
PartitionId.from("testResourceOld_0")));
AssertJUnit.assertNotNull(resourceMap.get(oldResourceId).getSubUnit(
PartitionId.from("testResourceOld_1")));