private void assertTopicExternalViewWithGivenPartitions( HelixMirrorMakerManager helixMirrorMakerManager, String topicName, int partitions, int numInstances) { ExternalView externalViewForTopic = helixMirrorMakerManager.getExternalViewForTopic(topicName); LOGGER.info("ExternalView: " + externalViewForTopic.toString()); Assert.assertEquals(externalViewForTopic.getPartitionSet().size(), partitions); Map<String, Integer> serverToPartitionMapping = new HashMap<String, Integer>(); for (String partition : externalViewForTopic.getPartitionSet()) { String instanceName = externalViewForTopic.getStateMap(partition).keySet().iterator().next(); if (!serverToPartitionMapping.containsKey(instanceName)) { serverToPartitionMapping.put(instanceName, 0); } serverToPartitionMapping.put(instanceName, serverToPartitionMapping.get(instanceName) + 1); } int expectedLowerBound = (int) Math.floor((double) partitions / (double) numInstances); int expectedUpperBound = (int) Math.ceil((double) partitions / (double) numInstances); for (String instanceName : serverToPartitionMapping.keySet()) { // May not be perfect balancing. Assert.assertTrue(serverToPartitionMapping.get(instanceName) >= expectedLowerBound - 1); Assert.assertTrue(serverToPartitionMapping.get(instanceName) <= expectedUpperBound + 1); } } }
private void assertTopicExternalViewWithGivenPartitions( HelixMirrorMakerManager helixMirrorMakerManager, String topicName, int partitions, int numInstances) { ExternalView externalViewForTopic = helixMirrorMakerManager.getExternalViewForTopic(topicName); LOGGER.info("ExternalView: " + externalViewForTopic.toString()); Assert.assertEquals(externalViewForTopic.getPartitionSet().size(), partitions); Map<String, Integer> serverToPartitionMapping = new HashMap<String, Integer>(); for (String partition : externalViewForTopic.getPartitionSet()) { String instanceName = externalViewForTopic.getStateMap(partition).keySet().iterator().next(); if (!serverToPartitionMapping.containsKey(instanceName)) { serverToPartitionMapping.put(instanceName, 0); } serverToPartitionMapping.put(instanceName, serverToPartitionMapping.get(instanceName) + 1); } int expectedLowerBound = (int) Math.floor((double) partitions / (double) numInstances); int expectedUpperBound = (int) Math.ceil((double) partitions / (double) numInstances); for (String instanceName : serverToPartitionMapping.keySet()) { // May not be perfect balancing. Assert.assertTrue(serverToPartitionMapping.get(instanceName) >= expectedLowerBound - 1); Assert.assertTrue(serverToPartitionMapping.get(instanceName) <= expectedUpperBound + 1); } } }
private void assertInstanceOwnedTopicPartitionsBalanced( HelixMirrorMakerManager helixMirrorMakerManager, int numInstances, int numTotalPartitions) { Map<String, Integer> serverToPartitionMapping = new HashMap<String, Integer>(); for (String topicName : helixMirrorMakerManager.getTopicLists()) { ExternalView externalViewForTopic = helixMirrorMakerManager.getExternalViewForTopic(topicName); LOGGER.info("ExternalView: " + externalViewForTopic.toString()); for (String partition : externalViewForTopic.getPartitionSet()) { String instanceName = externalViewForTopic.getStateMap(partition).keySet().iterator().next(); if (!serverToPartitionMapping.containsKey(instanceName)) { serverToPartitionMapping.put(instanceName, 0); } serverToPartitionMapping.put(instanceName, serverToPartitionMapping.get(instanceName) + 1); } } int expectedLowerBound = (int) Math.floor((double) numTotalPartitions / (double) numInstances); int expectedUpperBound = (int) Math.ceil((double) numTotalPartitions / (double) numInstances); for (String instanceName : serverToPartitionMapping.keySet()) { // May not be perfect balancing. LOGGER.info("Current {} serving {} partitions, expected [{}, {}]", instanceName, serverToPartitionMapping.get(instanceName), expectedLowerBound, expectedUpperBound); Assert.assertTrue(serverToPartitionMapping.get(instanceName) >= expectedLowerBound); Assert.assertTrue(serverToPartitionMapping.get(instanceName) <= expectedUpperBound); } }
private void assertInstanceOwnedTopicPartitionsBalanced( HelixMirrorMakerManager helixMirrorMakerManager, int numInstances, int numTotalPartitions) { Map<String, Integer> serverToPartitionMapping = new HashMap<String, Integer>(); for (String topicName : helixMirrorMakerManager.getTopicLists()) { ExternalView externalViewForTopic = helixMirrorMakerManager.getExternalViewForTopic(topicName); LOGGER.info("ExternalView: " + externalViewForTopic.toString()); for (String partition : externalViewForTopic.getPartitionSet()) { String instanceName = externalViewForTopic.getStateMap(partition).keySet().iterator().next(); if (!serverToPartitionMapping.containsKey(instanceName)) { serverToPartitionMapping.put(instanceName, 0); } serverToPartitionMapping.put(instanceName, serverToPartitionMapping.get(instanceName) + 1); } } int expectedLowerBound = (int) Math.floor((double) numTotalPartitions / (double) numInstances); int expectedUpperBound = (int) Math.ceil((double) numTotalPartitions / (double) numInstances); for (String instanceName : serverToPartitionMapping.keySet()) { // May not be perfect balancing. LOGGER.info("Current {} serving {} partitions, expected [{}, {}]", instanceName, serverToPartitionMapping.get(instanceName), expectedLowerBound, expectedUpperBound); Assert.assertTrue(serverToPartitionMapping.get(instanceName) >= expectedLowerBound); Assert.assertTrue(serverToPartitionMapping.get(instanceName) <= expectedUpperBound); } }
private void assertInstanceOwnedTopicPartitionsBalanced( HelixMirrorMakerManager helixMirrorMakerManager, int numInstances, int numTotalPartitions) { Map<String, Integer> serverToPartitionMapping = new HashMap<String, Integer>(); for (String topicName : helixMirrorMakerManager.getTopicLists()) { ExternalView externalViewForTopic = helixMirrorMakerManager.getExternalViewForTopic(topicName); LOGGER.info("ExternalView: " + externalViewForTopic.toString()); for (String partition : externalViewForTopic.getPartitionSet()) { String instanceName = externalViewForTopic.getStateMap(partition).keySet().iterator().next(); if (!serverToPartitionMapping.containsKey(instanceName)) { serverToPartitionMapping.put(instanceName, 0); } serverToPartitionMapping.put(instanceName, serverToPartitionMapping.get(instanceName) + 1); } } int expectedLowerBound = (int) Math.floor((double) numTotalPartitions / (double) numInstances); int expectedUpperBound = (int) Math.ceil((double) numTotalPartitions / (double) numInstances); for (String instanceName : serverToPartitionMapping.keySet()) { // May not be perfect balancing. LOGGER.info("Current {} serving {} partitions, expected [{}, {}]", instanceName, serverToPartitionMapping.get(instanceName), expectedLowerBound, expectedUpperBound); Assert.assertTrue(serverToPartitionMapping.get(instanceName) >= expectedLowerBound); Assert.assertTrue(serverToPartitionMapping.get(instanceName) <= expectedUpperBound); } }
private void assertInstanceOwnedTopicPartitionsBalanced( HelixMirrorMakerManager helixMirrorMakerManager, int numInstances, int numTotalPartitions) { Map<String, Integer> serverToPartitionMapping = new HashMap<String, Integer>(); for (String topicName : helixMirrorMakerManager.getTopicLists()) { ExternalView externalViewForTopic = helixMirrorMakerManager.getExternalViewForTopic(topicName); LOGGER.info("ExternalView: " + externalViewForTopic.toString()); for (String partition : externalViewForTopic.getPartitionSet()) { String instanceName = externalViewForTopic.getStateMap(partition).keySet().iterator().next(); if (!serverToPartitionMapping.containsKey(instanceName)) { serverToPartitionMapping.put(instanceName, 0); } serverToPartitionMapping.put(instanceName, serverToPartitionMapping.get(instanceName) + 1); } } int expectedLowerBound = (int) Math.floor((double) numTotalPartitions / (double) numInstances); int expectedUpperBound = (int) Math.ceil((double) numTotalPartitions / (double) numInstances); for (String instanceName : serverToPartitionMapping.keySet()) { // May not be perfect balancing. LOGGER.info("Current {} serving {} partitions, expected [{}, {}]", instanceName, serverToPartitionMapping.get(instanceName), expectedLowerBound, expectedUpperBound); Assert.assertTrue(serverToPartitionMapping.get(instanceName) >= expectedLowerBound); Assert.assertTrue(serverToPartitionMapping.get(instanceName) <= expectedUpperBound); } }
private void assertTopicExternalViewWithGivenPartitions( HelixMirrorMakerManager helixMirrorMakerManager, String topicName, int partitions, int numInstances) { ExternalView externalViewForTopic = helixMirrorMakerManager.getExternalViewForTopic(topicName); LOGGER.info("ExternalView: " + externalViewForTopic.toString()); Assert.assertEquals(externalViewForTopic.getPartitionSet().size(), partitions); Map<String, Integer> serverToPartitionMapping = new HashMap<String, Integer>(); for (String partition : externalViewForTopic.getPartitionSet()) { String instanceName = externalViewForTopic.getStateMap(partition).keySet().iterator().next(); if (!serverToPartitionMapping.containsKey(instanceName)) { serverToPartitionMapping.put(instanceName, 0); } serverToPartitionMapping.put(instanceName, serverToPartitionMapping.get(instanceName) + 1); } int expectedLowerBound = (int) Math.floor((double) partitions / (double) numInstances); int expectedUpperBound = (int) Math.ceil((double) partitions / (double) numInstances); for (String instanceName : serverToPartitionMapping.keySet()) { // May not be perfect balancing. Assert.assertTrue(serverToPartitionMapping.get(instanceName) >= expectedLowerBound - 1); Assert.assertTrue(serverToPartitionMapping.get(instanceName) <= expectedUpperBound + 1); } } }
private void assertInstanceOwnedTopicPartitionsBalanced( HelixMirrorMakerManager helixMirrorMakerManager, int numInstances, int numTotalPartitions) { Map<String, Integer> serverToPartitionMapping = new HashMap<String, Integer>(); for (String topicName : helixMirrorMakerManager.getTopicLists()) { ExternalView externalViewForTopic = helixMirrorMakerManager.getExternalViewForTopic(topicName); LOGGER.info("ExternalView: " + externalViewForTopic.toString()); for (String partition : externalViewForTopic.getPartitionSet()) { String instanceName = externalViewForTopic.getStateMap(partition).keySet().iterator().next(); if (!serverToPartitionMapping.containsKey(instanceName)) { serverToPartitionMapping.put(instanceName, 0); } serverToPartitionMapping.put(instanceName, serverToPartitionMapping.get(instanceName) + 1); } } int expectedLowerBound = (int) Math.floor((double) numTotalPartitions / (double) numInstances); int expectedUpperBound = (int) Math.ceil((double) numTotalPartitions / (double) numInstances); for (String instanceName : serverToPartitionMapping.keySet()) { // May not be perfect balancing. LOGGER.info("Current {} serving {} partitions, expected [{}, {}]", instanceName, serverToPartitionMapping.get(instanceName), expectedLowerBound, expectedUpperBound); Assert.assertTrue(serverToPartitionMapping.get(instanceName) >= expectedLowerBound); Assert.assertTrue(serverToPartitionMapping.get(instanceName) <= expectedUpperBound); } }
private void assertInstanceOwnedTopicPartitionsBalanced( HelixMirrorMakerManager helixMirrorMakerManager, int numInstances, int numTotalPartitions) { Map<String, Integer> serverToPartitionMapping = new HashMap<String, Integer>(); for (String topicName : helixMirrorMakerManager.getTopicLists()) { ExternalView externalViewForTopic = helixMirrorMakerManager.getExternalViewForTopic(topicName); LOGGER.info("ExternalView: " + externalViewForTopic.toString()); for (String partition : externalViewForTopic.getPartitionSet()) { String instanceName = externalViewForTopic.getStateMap(partition).keySet().iterator().next(); if (!serverToPartitionMapping.containsKey(instanceName)) { serverToPartitionMapping.put(instanceName, 0); } serverToPartitionMapping.put(instanceName, serverToPartitionMapping.get(instanceName) + 1); } } int expectedLowerBound = (int) Math.floor((double) numTotalPartitions / (double) numInstances); int expectedUpperBound = (int) Math.ceil((double) numTotalPartitions / (double) numInstances); for (String instanceName : serverToPartitionMapping.keySet()) { // May not be perfect balancing. LOGGER.info("Current {} serving {} partitions, expected [{}, {}]", instanceName, serverToPartitionMapping.get(instanceName), expectedLowerBound, expectedUpperBound); Assert.assertTrue(serverToPartitionMapping.get(instanceName) >= expectedLowerBound); Assert.assertTrue(serverToPartitionMapping.get(instanceName) <= expectedUpperBound); } }