/* * Copyright 2013 LinkedIn, Inc * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package voldemort.utils; import static org.junit.Assert.assertTrue; import java.util.Map; import org.junit.Test; import voldemort.ServerTestUtils; import voldemort.cluster.Cluster; public class ClusterUtilsTest { // TODO: Switch from numberOfZones to a set of zoneIds @Test public void testGetMapOfContiguousPartitionRunLengths() { int numberOfZones = 2; int nodesPerZone[][] = new int[][] { { 0, 1, 2 }, { 3, 4, 5 } }; int partitionMap[][] = new int[][] { { 0, 6, 12, 16, 17 }, { 1, 7, 15 }, { 2, 8, 14 }, { 3, 9, 13 }, { 4, 10 }, { 5, 11 } }; Cluster cluster = ServerTestUtils.getLocalZonedCluster(numberOfZones, nodesPerZone, partitionMap, ServerTestUtils.findFreePorts(6 * 3)); Map<Integer, Integer> iiMap; // Zone 0: // 0, 1, 2, 6, 7, 8, 12, 14, 15, 16, 17 // -------oo-------oo--oo-------------- !Wraps around! // => {14,7}, {6,3}, {12,1} iiMap = PartitionBalanceUtils.getMapOfContiguousPartitions(cluster, 0); assertTrue(iiMap.containsKey(6)); assertTrue(iiMap.get(6) == 3); assertTrue(iiMap.containsKey(12)); assertTrue(iiMap.get(12) == 1); assertTrue(iiMap.containsKey(14)); assertTrue(iiMap.get(14) == 7); // => {3,1}, {1,1}, {7,1} iiMap = PartitionBalanceUtils.getMapOfContiguousPartitionRunLengths(cluster, 0); assertTrue(iiMap.containsKey(1)); assertTrue(iiMap.get(1) == 1); assertTrue(iiMap.containsKey(3)); assertTrue(iiMap.get(3) == 1); assertTrue(iiMap.containsKey(7)); assertTrue(iiMap.get(7) == 1); // Zone 1: // 3, 4, 5, 9, 10, 11, 13 // -------oo---------oo-- // => {3,3}, {9,3}, {13,1} iiMap = PartitionBalanceUtils.getMapOfContiguousPartitions(cluster, 1); assertTrue(iiMap.containsKey(3)); assertTrue(iiMap.get(3) == 3); assertTrue(iiMap.containsKey(9)); assertTrue(iiMap.get(9) == 3); assertTrue(iiMap.containsKey(13)); assertTrue(iiMap.get(13) == 1); // => {1,1}, {3,2} iiMap = PartitionBalanceUtils.getMapOfContiguousPartitionRunLengths(cluster, 1); assertTrue(iiMap.containsKey(1)); assertTrue(iiMap.get(1) == 1); assertTrue(iiMap.containsKey(3)); assertTrue(iiMap.get(3) == 2); } }