Example usage for org.apache.cassandra.service StorageServiceMBean getKeyspaces

List of usage examples for org.apache.cassandra.service StorageServiceMBean getKeyspaces

Introduction

In this page you can find the example usage for org.apache.cassandra.service StorageServiceMBean getKeyspaces.

Prototype

public List<String> getKeyspaces();

Source Link

Usage

From source file:org.ayache.cassandra.repair.scheduler.NodeChooser.java

/**
 * Construct NodeChooser/*from ww  w. j ava 2s  .  c o m*/
 *
 * @param serviceMBean
 * @param esMBean
 * @param dc
 * @param lastRepairedNode
 * @throws java.io.IOException
 */
public NodeChooser(StorageServiceMBean serviceMBean, EndpointSnitchInfoMBean esMBean, String dc,
        String lastRepairedNode, boolean simult) throws IOException {
    this.serviceMBean = serviceMBean;
    this.esMBean = esMBean;
    this.dc = dc;
    this.lastRepairedNode = lastRepairedNode;

    List<String> keyspaces = serviceMBean.getKeyspaces();
    Collection<String> nodesFromDC = getNodesFromDC();
    Collection<Float> values = new LinkedList<>();
    float Rf = 0;
    for (String keyspace : keyspaces) {
        try {
            values.clear();
            Map<InetAddress, Float> effectiveOwnership = serviceMBean.effectiveOwnership(keyspace);
            for (Map.Entry<InetAddress, Float> entry : effectiveOwnership.entrySet()) {
                for (String node : nodesFromDC) {
                    if (entry.getKey().getHostAddress().equals(node)) {
                        values.add(entry.getValue());
                    }
                }
            }
            float localRf = 0;
            for (Float value : values) {
                localRf += value;
            }
            Rf = (localRf > Rf) ? localRf : Rf;
        } catch (IllegalStateException ex) {
            //Ignore error, pass to next keyspace
        }
    }
    //        replicates = (int) Rf;

    supportSimultaneousRepair = simult && nodesFromDC.size() >= 3 * Rf;
    Logger.getLogger(NodeChooser.class.getName()).info(serviceMBean.getLoadMap().toString());
    Logger.getLogger(NodeChooser.class.getName())
            .info("Replicas :" + Rf + " Simultaneous Repair Supported: " + supportSimultaneousRepair);
}

From source file:org.ayache.cassandra.repair.scheduler.NodeChooserTest.java

/**
 * Test of getNextNodeToRepair method, of class NodeChooser.
 *///from w ww. j av a2 s.  c o  m
@Test
public void testGetNextNodeToRepair() throws Exception {
    System.out.println("getNextNodeToRepair");
    StorageServiceMBean mock = Mockito.mock(StorageServiceMBean.class);
    List<String> nodes = Arrays.asList("127.0.0.1", "127.0.0.2", "127.0.0.3", "127.0.0.4", "127.0.0.5",
            "127.0.0.6", "127.0.0.7", "127.0.0.8", "127.0.0.9");
    Map<InetAddress, Float> ownership = new HashMap<>();
    Map<String, String> tokenToEndpoints = new LinkedHashMap<>();
    int Rf = 3;
    for (String node : nodes) {
        ownership.put(InetAddress.getByName(node), 1f / nodes.size() * (float) Rf);
        tokenToEndpoints.put(node, node);
    }
    Mockito.when(mock.getKeyspaces()).thenReturn(Arrays.asList("TestKeyspace"));
    Mockito.when(mock.effectiveOwnership(Mockito.anyString())).thenReturn(ownership);
    Mockito.when(mock.getLiveNodes()).thenReturn(nodes);
    Mockito.when(mock.getTokenToEndpointMap()).thenReturn(tokenToEndpoints);
    NodeChooser instance = new NodeChooser(mock, new EndpointSnitchInfoMBean() {
        @Override
        public String getRack(String host) throws UnknownHostException {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public String getDatacenter(String host) throws UnknownHostException {
            return "DC1";
        }

        @Override
        public String getSnitchName() {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }
    }, "DC1", null, true);
    Collection<String> expResult = new HashSet<>(Arrays.asList("127.0.0.1", "127.0.0.5"));
    Collection<String> result = instance.getNextNodeToRepair();
    assertEquals(expResult, result);

    instance = new NodeChooser(mock, new EndpointSnitchInfoMBean() {
        @Override
        public String getRack(String host) throws UnknownHostException {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public String getDatacenter(String host) throws UnknownHostException {
            return "DC1";
        }

        @Override
        public String getSnitchName() {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }
    }, "DC1", "127.0.0.2", true);
    expResult = new HashSet<>(Arrays.asList("127.0.0.3", "127.0.0.7"));
    result = instance.getNextNodeToRepair();
    assertEquals(expResult, result);

    instance = new NodeChooser(mock, new EndpointSnitchInfoMBean() {
        @Override
        public String getRack(String host) throws UnknownHostException {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public String getDatacenter(String host) throws UnknownHostException {
            return "DC1";
        }

        @Override
        public String getSnitchName() {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }
    }, "DC1", "127.0.0.8", true);
    expResult = new HashSet<>(Arrays.asList("127.0.0.9", "127.0.0.4"));
    result = instance.getNextNodeToRepair();
    assertEquals(expResult, result);

    instance = new NodeChooser(mock, new EndpointSnitchInfoMBean() {
        @Override
        public String getRack(String host) throws UnknownHostException {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public String getDatacenter(String host) throws UnknownHostException {
            return "DC1";
        }

        @Override
        public String getSnitchName() {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }
    }, "DC1", "127.0.0.9", true);
    expResult = new HashSet<>(Arrays.asList("127.0.0.1", "127.0.0.5"));
    result = instance.getNextNodeToRepair();
    assertEquals(expResult, result);
    //        // TODO review the generated test code and remove the default call to fail.
    //        fail("The test case is a prototype.");
}