private ScaleDownConfiguration parseScaleDownConfig(Element policyNode) { NodeList scaleDownNode = policyNode.getElementsByTagName("scale-down"); if (scaleDownNode.getLength() > 0) { ScaleDownConfiguration scaleDownConfiguration = new ScaleDownConfiguration(); Element scaleDownElement = (Element) scaleDownNode.item(0); scaleDownConfiguration.setEnabled(getBoolean(scaleDownElement, "enabled", scaleDownConfiguration.isEnabled())); NodeList discoveryGroupRef = scaleDownElement.getElementsByTagName("discovery-group-ref"); if (discoveryGroupRef.item(0) != null) { scaleDownConfiguration.setDiscoveryGroup(discoveryGroupRef.item(0).getAttributes().getNamedItem("discovery-group-name").getNodeValue()); } String scaleDownGroupName = getString(scaleDownElement, "group-name", scaleDownConfiguration.getGroupName(), Validators.NO_CHECK); scaleDownConfiguration.setGroupName(scaleDownGroupName); NodeList scaleDownConnectorNode = scaleDownElement.getElementsByTagName("connectors"); if (scaleDownConnectorNode != null && scaleDownConnectorNode.getLength() > 0) { NodeList scaleDownConnectors = scaleDownConnectorNode.item(0).getChildNodes(); for (int i = 0; i < scaleDownConnectors.getLength(); i++) { Node child = scaleDownConnectors.item(i); if (child.getNodeName().equals("connector-ref")) { String connectorName = getTrimmedTextContent(child); scaleDownConfiguration.getConnectors().add(connectorName); } } } return scaleDownConfiguration; } return null; }
public static ScaleDownPolicy getScaleDownPolicy(ScaleDownConfiguration scaleDownConfiguration) { if (scaleDownConfiguration != null) { if (scaleDownConfiguration.getDiscoveryGroup() != null) { return new ScaleDownPolicy(scaleDownConfiguration.getDiscoveryGroup(), scaleDownConfiguration.getGroupName(), scaleDownConfiguration.getClusterName(), scaleDownConfiguration.isEnabled()); } else { return new ScaleDownPolicy(scaleDownConfiguration.getConnectors(), scaleDownConfiguration.getGroupName(), scaleDownConfiguration.getClusterName(), scaleDownConfiguration.isEnabled()); } } return null; }
@Override @Before public void setUp() throws Exception { super.setUp(); setupLiveServer(0, isFileStorage(), isNetty(), true); setupLiveServer(1, isFileStorage(), isNetty(), true); LiveOnlyPolicyConfiguration haPolicyConfiguration0 = (LiveOnlyPolicyConfiguration) servers[0].getConfiguration().getHAPolicyConfiguration(); haPolicyConfiguration0.setScaleDownConfiguration(new ScaleDownConfiguration()); LiveOnlyPolicyConfiguration haPolicyConfiguration1 = (LiveOnlyPolicyConfiguration) servers[1].getConfiguration().getHAPolicyConfiguration(); haPolicyConfiguration1.setScaleDownConfiguration(new ScaleDownConfiguration()); if (useScaleDownGroupName) { haPolicyConfiguration0.getScaleDownConfiguration().setGroupName("bill"); haPolicyConfiguration1.getScaleDownConfiguration().setGroupName("bill"); } setupClusterConnection("cluster0", "testAddress", MessageLoadBalancingType.ON_DEMAND, 1, isNetty(), 0, 1); setupClusterConnection("cluster0", "testAddress", MessageLoadBalancingType.ON_DEMAND, 1, isNetty(), 1, 0); haPolicyConfiguration0.getScaleDownConfiguration().getConnectors().addAll(servers[0].getConfiguration().getClusterConfigurations().iterator().next().getStaticConnectors()); haPolicyConfiguration1.getScaleDownConfiguration().getConnectors().addAll(servers[1].getConfiguration().getClusterConfigurations().iterator().next().getStaticConnectors()); servers[0].getConfiguration().getAddressesSettings().put("#", new AddressSettings().setRedistributionDelay(0)); servers[1].getConfiguration().getAddressesSettings().put("#", new AddressSettings().setRedistributionDelay(0)); startServers(0, 1); setupSessionFactory(0, isNetty()); setupSessionFactory(1, isNetty()); }
String scaleDownConnector = servers[0].getConfiguration().getClusterConfigurations().get(0).getStaticConnectors().get(0); Assert.assertEquals(61617, servers[0].getConfiguration().getConnectorConfigurations().get(scaleDownConnector).getParams().get(TransportConstants.PORT_PROP_NAME)); scaleDownConfiguration0.getConnectors().add(scaleDownConnector); startServers(0, 1, 2); setupSessionFactory(0, isNetty(), false, servers[0].getConfiguration().getClusterUser(), servers[0].getConfiguration().getClusterPassword());