Examples of Cluster


Examples of voldemort.cluster.Cluster

    }
   
    @Test
    public void testShuffleWithinZoneWithNonContiguousZoneAndNodeIds() {
        // Two zone cluster
        Cluster currentCluster = ClusterTestUtils.getZ1Z3ImbalancedClusterWithNonContiguousNodeIds();
        List<StoreDefinition> storeDefs = ClusterTestUtils.getZ1Z3StoreDefsInMemory();
        List<Integer> swapZoneIds = new ArrayList<Integer>();
        // Only shuffle within zone 1
        swapZoneIds.add(1);
        verifyRandomSwapsWithinZoneOnlyShufflesParitionsInThatZone(currentCluster, storeDefs,
View Full Code Here

Examples of voldemort.cluster.Cluster

    }
   
    @Test
    public void testClusterExpansionWithNonContiguousZoneAndNodeIds() {
        // Two zone cluster
        Cluster currentCluster = ClusterTestUtils.getZ1Z3ImbalancedClusterWithNonContiguousNodeIds();
        Cluster interimCluster = ClusterTestUtils.getZ1Z3ClusterWithNonContiguousNodeIdsWithNN();
        List<StoreDefinition> storeDefs = ClusterTestUtils.getZ1Z3StoreDefsInMemory();
        verifyBalanceZoneAndNode(currentCluster, storeDefs, interimCluster, storeDefs);
        verifyBalanceNodesNotZones(currentCluster, storeDefs, interimCluster, storeDefs);
        verifyRepartitionNoop(currentCluster, storeDefs, interimCluster, storeDefs);
View Full Code Here

Examples of voldemort.cluster.Cluster

            originalPartitions.addAll(initialCluster.getPartitionIdsInZone(zoneId));
        }

        // Get an intermediate cluster where partitions that belong to the zone
        // that is being dropped have been moved to the existing zones
        Cluster interimCluster = RebalanceUtils.vacateZone(initialCluster, dropZoneId);

        // Make sure that the intermediate cluster should have same number of
        // partitions
        RebalanceUtils.validateClusterPartitionCounts(initialCluster, interimCluster);

        // Make sure that the intermediate cluster should have same number of
        // nodes
        RebalanceUtils.validateClusterNodeCounts(initialCluster, interimCluster);

        // Make sure that the intermediate cluster doesn't have any partitons in
        // the dropped zone
        assertTrue("Zone being dropped has partitions. ZoneClipper didn't work properly",
                   interimCluster.getPartitionIdsInZone(dropZoneId).isEmpty());

        // Make sure that the nodes being dropped don't host any partitions
        for(Integer nodeId: interimCluster.getNodeIdsInZone(dropZoneId)) {
            assertTrue("Nodes in the zone being dropped don't have empty partitions list",
                       interimCluster.getNodeById(nodeId).getPartitionIds().isEmpty());
        }

        Set<Integer> finalPartitions = new HashSet<Integer>();
        for(Integer zoneId: interimCluster.getZoneIds()) {
            finalPartitions.addAll(interimCluster.getPartitionIdsInZone(zoneId));
        }

        // Compare to original partition ids list
        assertTrue("Original and interm partition ids don't match",
                   originalPartitions.equals(finalPartitions));

        // Make sure that there is no data movement
        RebalancePlan rebalancePlan = ClusterTestUtils.makePlan(initialCluster,
                                                                storeDefs,
                                                                interimCluster,
                                                                storeDefs);
        // Make sure we have a plan
        assertEquals(rebalancePlan.getPlan().size(), 1);

        // Make sure there is no cross zones between zones in the plan
        assertEquals(rebalancePlan.getPartitionStoresMovedXZone(), 0);
        // Make sure there is no data movement between nodes
        assertEquals(rebalancePlan.getPartitionStoresMoved(), 0);
        for(Integer nodeId: interimCluster.getNodeIds()) {
            Set<Integer> remainingNodes = Sets.symmetricDifference(interimCluster.getNodeIds(),
                                                                   Sets.newHashSet(nodeId));
            for(Integer otherNodeId: remainingNodes) {
                assertTrue("Something went wrong as there is data movement between nodes",
                           rebalancePlan.getNodeMoveMap().get(nodeId, otherNodeId) == 0);
            }
        }

        // Also get the adjusted store definitions, with the zone dropped
        Cluster finalCluster = RebalanceUtils.dropZone(interimCluster, dropZoneId);
        List<StoreDefinition> clippedStoreDefs = RebalanceUtils.dropZone(storeDefs, dropZoneId);

        for(StoreDefinition storeDef: clippedStoreDefs) {
            StoreDefinition orgStoreDef = StoreDefinitionUtils.getStoreDefinitionWithName(storeDefs,
                                                                                          storeDef.getName());
            assertFalse("Clipped storedef has replication for dropped zone",
                        storeDef.getZoneReplicationFactor().containsKey(dropZoneId));
            assertEquals("Clipped storedef has incorrect number of zones",
                         initialCluster.getZones().size() - 1,
                         storeDef.getZoneReplicationFactor().size());
            assertEquals("Clipped storedef has incorrect total repfactor",
                         orgStoreDef.getReplicationFactor()
                                 - orgStoreDef.getZoneReplicationFactor().get(dropZoneId),
                         storeDef.getReplicationFactor());
        }

        // Confirm that we would not route to any of the dropped nodes for any
        // store.
        Set<Integer> dropNodes = interimCluster.getNodeIdsInZone(dropZoneId);
        for(StoreDefinition storeDef: clippedStoreDefs) {
            StoreRoutingPlan routingPlan = new StoreRoutingPlan(finalCluster, storeDef);
            Node[] partitionToNode = finalCluster.getPartitionIdToNodeArray();
            for(int p = 0; p < partitionToNode.length; p++) {
                List<Integer> replicaNodes = routingPlan.getReplicationNodeList(p);
                assertFalse("Should not be routing to any dropped nodes",
                            replicaNodes.removeAll(dropNodes));
            }
View Full Code Here

Examples of voldemort.cluster.Cluster

        this.stoppedServersForInsufficientZone = stoppedServersForInsufficientZone;
    }

    @Parameterized.Parameters
    public static Collection<Object[]> configs() {
        Cluster z1z3z5cluster = ClusterTestUtils.getZ1Z3Z5ClusterWithNonContiguousNodeIds();
        List<StoreDefinition> z1z3z5StoreDefs = ClusterTestUtils.getZ1Z3Z5322StoreDefs("memory");
        ClientConfig clientConfig = new ClientConfig();
        clientConfig.setClientZoneId(3);
        clientConfig.setBootstrapUrls(z1z3z5cluster.getNodeById(3).getSocketUrl().toString());
        clientConfig.getZoneAffinity().setEnableGetOpZoneAffinity(true);
        Set<Integer> stoppedServersForRemoteZoneNodeFail = new HashSet<Integer>(Arrays.asList(4, 5, 9, 10, 11, 15, 16));
        Set<Integer> stoppedServersForInsufficientZone = new HashSet<Integer>(Arrays.asList(5, 9, 10, 11, 15, 16, 17));
        Cluster zzzCluster = ClusterTestUtils.getZZZCluster();
        List<StoreDefinition> zzzStoreDefs = ClusterTestUtils.getZZZ322StoreDefs("memory");
        ClientConfig zzzClientConfig = new ClientConfig();
        zzzClientConfig.setClientZoneId(0);
        zzzClientConfig.setBootstrapUrls(zzzCluster.getNodeById(0).getSocketUrl().toString());
        zzzClientConfig.getZoneAffinity().setEnableGetOpZoneAffinity(true);
        Set<Integer> zzzstoppedServersForRemoteZoneNodeFail = new HashSet<Integer>(Arrays.asList(1, 2, 3, 4, 5, 6, 7));
        Set<Integer> zzzstoppedServersForInsufficientZone = new HashSet<Integer>(Arrays.asList(2, 3, 4, 5, 6, 7, 8));
        return Arrays.asList(new Object[][] {
                { z1z3z5cluster, z1z3z5StoreDefs, clientConfig,
View Full Code Here

Examples of voldemort.cluster.Cluster

public class ProximityHandoffStrategyTest {

    @Test
    public void testTwoZones() {
        Cluster cluster = VoldemortTestConstants.getEightNodeClusterWithZones();
        List<Node> zone0Nodes = Lists.newArrayList();
        List<Node> zone1Nodes = Lists.newArrayList();
        for(Node node: cluster.getNodes()) {
            if(node.getZoneId() == 0) {
                zone0Nodes.add(node);
            } else if(node.getZoneId() == 1) {
                zone1Nodes.add(node);
            }
        }

        ProximityHandoffStrategy handoffStrategy = new ProximityHandoffStrategy(cluster, 0);

        for(Node node: cluster.getNodes()) {
            List<Node> prefList = handoffStrategy.routeHint(node);
            for(int i = 0; i < prefList.size(); i++) {
                if(node.getZoneId() == 0) {
                    if(i < zone0Nodes.size() - 1) {
                        assertEquals(prefList.get(i).getZoneId(), 0);
                    } else {
                        assertEquals(prefList.get(i).getZoneId(), 1);
                    }
                } else {
                    if(i < zone0Nodes.size()) {
                        assertEquals(prefList.get(i).getZoneId(), 0);
                    } else {
                        assertEquals(prefList.get(i).getZoneId(), 1);
                    }
                }

            }
        }

        handoffStrategy = new ProximityHandoffStrategy(cluster, 1);

        for(Node node: cluster.getNodes()) {
            List<Node> prefList = handoffStrategy.routeHint(node);
            for(int i = 0; i < prefList.size(); i++) {
                if(node.getZoneId() == 0) {
                    if(i < zone0Nodes.size()) {
                        assertEquals(prefList.get(i).getZoneId(), 1);
View Full Code Here

Examples of voldemort.cluster.Cluster

public class HandoffToAnyStrategyTest {

    @Test
    public void testRouteHint() {
        Cluster cluster = VoldemortTestConstants.getNineNodeCluster();
        HintedHandoffStrategy handoffStrategy = new HandoffToAnyStrategy(cluster, false, 0);
        for(Node origin: cluster.getNodes()) {
            List<Node> nodes = handoffStrategy.routeHint(origin);
            assertTrue("hint preflist is correctly sized",
                       nodes.size() == cluster.getNumberOfNodes() - 1);
            assertFalse("hint preflist doesn't include self", nodes.contains(origin));
        }
    }
View Full Code Here

Examples of voldemort.cluster.Cluster

        }
    }

    @Test
    public void testRouteHintWithZones() {
        Cluster cluster = VoldemortTestConstants.getEightNodeClusterWithZones();
        HintedHandoffStrategy handoffStrategy0 = new HandoffToAnyStrategy(cluster, true, 0);
        HintedHandoffStrategy handoffStrategy1 = new HandoffToAnyStrategy(cluster, true, 1);

        List<Node> zone0Nodes = Lists.newArrayList();
        List<Node> zone1Nodes = Lists.newArrayList();
        for(int nodeId: ImmutableList.of(0, 1, 2, 3))
            zone0Nodes.add(cluster.getNodeById(nodeId));
        for(int nodeId: ImmutableList.of(4, 5, 6, 7))
            zone1Nodes.add(cluster.getNodeById(nodeId));

        for(Node origin: zone0Nodes) {
            List<Node> nodes = handoffStrategy0.routeHint(origin);
            assertFalse("hint preflist doesn't include self", nodes.contains(origin));
            for(Node node: nodes)
View Full Code Here

Examples of voldemort.cluster.Cluster

public class InvalidMetadataCheckingStoreTest extends TestCase {

    private static int LOOP_COUNT = 1000;

    public void testValidMetaData() {
        Cluster cluster = ServerTestUtils.getLocalCluster(3, new int[][] { { 0, 1, 2, 3 },
                { 4, 5, 6, 7 }, { 8, 9, 10, 11 } });
        StoreDefinition storeDef = ServerTestUtils.getStoreDefs(1).get(0);

        MetadataStore metadata = ServerTestUtils.createMetadataStore(cluster,
                                                                     Arrays.asList(storeDef));
View Full Code Here

Examples of voldemort.cluster.Cluster

     * consistency
     */
    public void testAddingPartition() {
        StoreDefinition storeDef = ServerTestUtils.getStoreDefs(1).get(0);

        Cluster cluster = ServerTestUtils.getLocalCluster(3, new int[][] { { 0, 1, 2, 3 },
                { 4, 5, 6, 7 }, { 8, 9, 10 } });

        MetadataStore metadata = ServerTestUtils.createMetadataStore(cluster,
                                                                     Arrays.asList(storeDef));

        InvalidMetadataCheckingStore store = new InvalidMetadataCheckingStore(0,
                                                                              new DoNothingStore<ByteArray, byte[], byte[]>(storeDef.getName()),
                                                                              metadata);
        try {
            // add partitions to node 0 on client side.
            Cluster updatedCluster = ServerTestUtils.getLocalCluster(3, new int[][] {
                    { 0, 1, 2, 3, 4, 5, 10 }, { 6, 7 }, { 8, 9 } });

            MetadataStore updatedMetadata = ServerTestUtils.createMetadataStore(updatedCluster,
                                                                                Arrays.asList(storeDef));
            doOperations(0, store, updatedMetadata, storeDef);
View Full Code Here

Examples of voldemort.cluster.Cluster

    }

    public void testRemovingPartition() {
        StoreDefinition storeDef = ServerTestUtils.getStoreDefs(1).get(0);

        Cluster cluster = ServerTestUtils.getLocalCluster(3, new int[][] { { 0, 1, 2, 3 },
                { 4, 5, 6, 7 }, { 8, 9, 10 } });

        MetadataStore metadata = ServerTestUtils.createMetadataStore(cluster,
                                                                     Arrays.asList(storeDef));

        InvalidMetadataCheckingStore store = new InvalidMetadataCheckingStore(0,
                                                                              new DoNothingStore<ByteArray, byte[], byte[]>(storeDef.getName()),
                                                                              metadata);
        try {
            // remove partitions to node 0 on client side.
            Cluster updatedCluster = ServerTestUtils.getLocalCluster(3, new int[][] { { 0, 1 },
                    { 2, 4, 5, 6, 7 }, { 3, 8, 9, 10 } });

            MetadataStore updatedMetadata = ServerTestUtils.createMetadataStore(updatedCluster,
                                                                                Arrays.asList(storeDef));
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.