List of usage examples for org.apache.cassandra.service StorageServiceMBean effectiveOwnership
@Deprecated public Map<InetAddress, Float> effectiveOwnership(String keyspace) throws IllegalStateException;
From source file:org.ayache.cassandra.repair.scheduler.NodeChooser.java
/** * Construct NodeChooser//from w w w . j a v a2 s .c om * * @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. *//*ww w .j a v a 2 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."); }