Example usage for org.apache.cassandra.locator EndpointSnitchInfoMBean getDatacenter

List of usage examples for org.apache.cassandra.locator EndpointSnitchInfoMBean getDatacenter

Introduction

In this page you can find the example usage for org.apache.cassandra.locator EndpointSnitchInfoMBean getDatacenter.

Prototype

public String getDatacenter(String host) throws UnknownHostException;

Source Link

Document

Provides the Datacenter name depending on the respective snitch used, given the hostname/ip

Usage

From source file:com.wenyu.clustertools.Ring.java

License:Apache License

public static SortedMap<String, SetHostStat> getOwnershipByDc(ClusterToolNodeProbe probe, boolean resolveIp,
            Map<String, String> tokenToEndpoint, Map<InetAddress, Float> ownerships) {
        SortedMap<String, SetHostStat> ownershipByDc = Maps.newTreeMap();
        EndpointSnitchInfoMBean epSnitchInfo = probe.getEndpointSnitchInfoProxy();
        try {/*  w  ww .j  a  va2  s  .co  m*/
            for (Map.Entry<String, String> tokenAndEndPoint : tokenToEndpoint.entrySet()) {
                String dc = epSnitchInfo.getDatacenter(tokenAndEndPoint.getValue());
                if (!ownershipByDc.containsKey(dc))
                    ownershipByDc.put(dc, new SetHostStat(resolveIp));
                ownershipByDc.get(dc).add(tokenAndEndPoint.getKey(), tokenAndEndPoint.getValue(), ownerships);
            }
        } catch (UnknownHostException e) {
            throw new RuntimeException(e);
        }
        return ownershipByDc;
    }

From source file:org.ayache.cassandra.repair.scheduler.states.RepairContextTest.java

/**
 * Test of initNodesToRepair method, of class RepairContext.
 *
 * @throws java.lang.Exception//  w ww  . j  a v a  2 s . c  o m
 */
@Test
public void testInitNodesToRepair() throws Exception {
    System.out.println("initNodesToRepair");
    RepairContext instance = new RepairContext("Test", 0, 0, 0);
    final NodeConnector mock = Mockito.mock(NodeConnector.class);
    EndpointSnitchInfoMBean esBean = Mockito.mock(EndpointSnitchInfoMBean.class);
    Mockito.when(esBean.getDatacenter(Mockito.anyString())).thenReturn("DC1");
    Mockito.when(mock.getEsProxy()).thenReturn(esBean);
    NodeConnector.StorageServiceCompatMBean serviceMBean = Mockito
            .mock(NodeConnector.StorageServiceCompatMBean.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(serviceMBean.getKeyspaces()).thenReturn(Arrays.asList("TestKeyspace"));
    Mockito.when(serviceMBean.effectiveOwnership(Mockito.anyString())).thenReturn(ownership);
    Mockito.when(serviceMBean.getLiveNodes()).thenReturn(nodes);
    Mockito.when(serviceMBean.getTokenToEndpointMap()).thenReturn(tokenToEndpoints);
    Mockito.when(mock.getSsProxy()).thenReturn(serviceMBean);
    Mockito.when(mock.getDc()).thenReturn("DC1");
    instance.init(new INodeConnectorRetriever() {
        @Override
        public NodeConnector getNodeConnector() {
            return mock;
        }

        @Override
        public NodeConnector getNodeConnector(String hostName) throws IOException {
            return mock;
        }
    });
    Mockito.when(mock.getNodeChooser(Mockito.any(), Mockito.anyBoolean()))
            .thenAnswer(new Answer<INodeChooser>() {
                @Override
                public INodeChooser answer(InvocationOnMock invocation) throws Throwable {
                    return new NodeChooser(serviceMBean, esBean, mock.getDc(), null, true);
                }
            });
    Collection<String> expResult = Arrays.asList("127.0.0.1", "127.0.0.5");
    Collection<String> result = instance.initNodesToRepair();
    assertArrayEquals(expResult.toArray(), result.toArray());
    instance.addNodeInError("127.0.0.8");
    instance.addNodeInUnknownError("127.0.0.9");
    expResult = Arrays.asList("127.0.0.8", "127.0.0.9");
    result = instance.initNodesToRepair();
    assertArrayEquals(expResult.toArray(), result.toArray());
}