List of usage examples for org.apache.cassandra.locator EndpointSnitchInfoMBean getDatacenter
public String getDatacenter(String host) throws UnknownHostException;
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()); }