| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| package org.apache.axis2.clustering; |
| |
| import junit.framework.TestCase; |
| |
| import org.apache.axiom.util.UIDGenerator; |
| import org.apache.axis2.AxisFault; |
| import org.apache.axis2.clustering.management.DefaultNodeManager; |
| import org.apache.axis2.clustering.management.NodeManager; |
| import org.apache.axis2.clustering.state.DefaultStateManager; |
| import org.apache.axis2.clustering.state.StateManager; |
| import org.apache.axis2.clustering.tribes.TribesClusteringAgent; |
| import org.apache.axis2.context.ConfigurationContext; |
| import org.apache.axis2.context.ConfigurationContextFactory; |
| import org.apache.axis2.context.ServiceContext; |
| import org.apache.axis2.context.ServiceGroupContext; |
| import org.apache.axis2.description.AxisService; |
| import org.apache.axis2.description.AxisServiceGroup; |
| import org.apache.axis2.description.Parameter; |
| import org.apache.axis2.engine.AxisConfiguration; |
| import org.apache.axis2.util.Utils; |
| |
| import java.io.IOException; |
| import java.net.DatagramPacket; |
| import java.net.InetAddress; |
| import java.net.InetSocketAddress; |
| import java.net.MulticastSocket; |
| import java.net.ServerSocket; |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| /** |
| * Tests the replication of properties placed the ConfigurationContext, ServiceGroupContext & |
| * ServiceContext |
| */ |
| public class ContextReplicationTest extends TestCase { |
| |
| private static final String TEST_SERVICE_NAME = "testService"; |
| |
| private static final Parameter domainParam = |
| new Parameter(ClusteringConstants.Parameters.DOMAIN, |
| "axis2.domain." + UIDGenerator.generateUID()); |
| |
| // --------------- Cluster-1 ------------------------------------------------------ |
| private ClusteringAgent clusterManager1; |
| private StateManager ctxMan1; |
| private NodeManager configMan1; |
| private ConfigurationContext configurationContext1; |
| private AxisServiceGroup serviceGroup1; |
| private AxisService service1; |
| //--------------------------------------------------------------------------------- |
| |
| // --------------- Cluster-2 ------------------------------------------------------ |
| private ClusteringAgent clusterManager2; |
| private StateManager ctxMan2; |
| private NodeManager configMan2; |
| private ConfigurationContext configurationContext2; |
| private AxisServiceGroup serviceGroup2; |
| private AxisService service2; |
| //--------------------------------------------------------------------------------- |
| |
| private static boolean canRunTests; |
| |
| private int getPort(int portStart, int retries) throws IOException { |
| InetSocketAddress addr = null; |
| ServerSocket socket = new ServerSocket(); |
| int port = -1; |
| while (retries > 0) { |
| try { |
| addr = new InetSocketAddress(InetAddress.getByName(InetAddress.getLocalHost().getHostAddress()), |
| portStart); |
| socket.bind(addr); |
| port = portStart; |
| System.out.println("Can bind Server Socket to:" + addr); |
| socket.close(); |
| break; |
| } catch (IOException x) { |
| retries--; |
| if (retries <= 0) { |
| System.out.println("Unable to bind server socket to:" + addr + |
| " throwing error."); |
| throw x; |
| } |
| portStart++; |
| } |
| } |
| return port; |
| } |
| |
| private void canRunTests() { |
| if(System.getProperty("run.clustering.tests", "false").equals("false")){ |
| canRunTests = false; |
| return; |
| } |
| |
| // Which port should we listen to |
| final int port; |
| try { |
| port = getPort(4000, 1000); |
| } catch (IOException e) { |
| e.printStackTrace(); |
| canRunTests = false; |
| return; |
| } |
| |
| // Which address |
| final String group = "225.4.5.6"; |
| |
| Thread receiver = new Thread() { |
| public void run() { |
| try { |
| MulticastSocket s = new MulticastSocket(port); |
| s.joinGroup(InetAddress.getByName(group)); |
| |
| // Create a DatagramPacket and do a receive |
| byte buf[] = new byte[1024]; |
| DatagramPacket pack = new DatagramPacket(buf, buf.length); |
| s.receive(pack); |
| System.out.println("Received data from: " + pack.getAddress().toString() + |
| ":" + pack.getPort() + " with length: " + |
| pack.getLength()); |
| s.leaveGroup(InetAddress.getByName(group)); |
| s.close(); |
| canRunTests = true; |
| } catch (Exception e) { |
| e.printStackTrace(); |
| canRunTests = false; |
| } |
| } |
| }; |
| receiver.start(); |
| |
| Thread sender = new Thread() { |
| public void run() { |
| try { |
| MulticastSocket s = new MulticastSocket(); |
| byte buf[] = new byte[10]; |
| for (int i = 0; i < buf.length; i++) { |
| buf[i] = (byte) i; |
| } |
| DatagramPacket pack = new DatagramPacket(buf, buf.length, |
| InetAddress.getByName(group), port); |
| s.setTimeToLive(2); |
| s.send(pack); |
| System.out.println("Sent test data"); |
| s.close(); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| canRunTests = false; |
| } |
| } |
| }; |
| sender.start(); |
| |
| // Join the receiver until we can verify whether multicasting can be done |
| try { |
| receiver.join(10000); |
| } catch (InterruptedException e) { |
| e.printStackTrace(); |
| } |
| } |
| |
| public static void main(String[] args) { |
| new ContextReplicationTest().canRunTests(); |
| } |
| |
| protected void setUp() throws Exception { |
| canRunTests(); |
| if (!canRunTests) { |
| System.out.println("[WARNING] Aborting clustering tests"); |
| return; |
| } |
| |
| System.setProperty(ClusteringConstants.LOCAL_IP_ADDRESS, Utils.getIpAddress()); |
| |
| // First cluster |
| configurationContext1 = |
| ConfigurationContextFactory.createDefaultConfigurationContext(); |
| serviceGroup1 = createAxisServiceGroup(configurationContext1); |
| service1 = createAxisService(serviceGroup1); |
| ctxMan1 = getContextManager(); |
| configMan1 = getConfigurationManager(); |
| clusterManager1 = getClusterManager(configurationContext1, ctxMan1, configMan1); |
| clusterManager1.addParameter(domainParam); |
| clusterManager1.init(); |
| System.out.println("---------- ClusteringAgent-1 successfully initialized -----------"); |
| |
| // Second cluster |
| configurationContext2 = |
| ConfigurationContextFactory.createDefaultConfigurationContext(); |
| serviceGroup2 = createAxisServiceGroup(configurationContext2); |
| service2 = createAxisService(serviceGroup2); |
| ctxMan2 = getContextManager(); |
| configMan2 = getConfigurationManager(); |
| clusterManager2 = getClusterManager(configurationContext2, ctxMan2, configMan2); |
| clusterManager2.addParameter(domainParam); |
| clusterManager2.init(); |
| System.out.println("---------- ClusteringAgent-2 successfully initialized -----------"); |
| } |
| |
| protected ClusteringAgent getClusterManager(ConfigurationContext configCtx, |
| StateManager stateManager, |
| NodeManager configManager) |
| throws AxisFault { |
| ClusteringAgent clusteringAgent = new TribesClusteringAgent(); |
| configCtx.getAxisConfiguration().setClusteringAgent(clusteringAgent); |
| clusteringAgent.setNodeManager(configManager); |
| clusteringAgent.setStateManager(stateManager); |
| clusteringAgent.setConfigurationContext(configCtx); |
| |
| return clusteringAgent; |
| } |
| |
| protected AxisServiceGroup createAxisServiceGroup(ConfigurationContext configCtx) |
| throws AxisFault { |
| AxisConfiguration axisConfig = configCtx.getAxisConfiguration(); |
| AxisServiceGroup serviceGroup = new AxisServiceGroup(axisConfig); |
| axisConfig.addServiceGroup(serviceGroup); |
| return serviceGroup; |
| } |
| |
| protected AxisService createAxisService(AxisServiceGroup serviceGroup) throws AxisFault { |
| AxisService service = new AxisService(TEST_SERVICE_NAME); |
| serviceGroup.addService(service); |
| return service; |
| } |
| |
| protected StateManager getContextManager() throws AxisFault { |
| StateManager stateManager = new DefaultStateManager(); |
| return stateManager; |
| } |
| |
| protected NodeManager getConfigurationManager() throws AxisFault { |
| NodeManager contextManager = new DefaultNodeManager(); |
| return contextManager; |
| } |
| |
| public void testSetPropertyInConfigurationContext() throws Exception { |
| if (!canRunTests) { |
| return; |
| } |
| |
| { |
| String key1 = "configCtxKey"; |
| String val1 = "configCtxVal1"; |
| configurationContext1.setProperty(key1, val1); |
| ctxMan1.updateContext(configurationContext1); |
| String value = (String) configurationContext2.getProperty(key1); |
| assertEquals(val1, value); |
| } |
| |
| { |
| String key2 = "configCtxKey2"; |
| String val2 = "configCtxVal1"; |
| configurationContext2.setProperty(key2, val2); |
| ctxMan2.updateContext(configurationContext2); |
| Thread.sleep(1000); |
| String value = (String) configurationContext1.getProperty(key2); |
| assertEquals(val2, value); |
| } |
| } |
| |
| public void testRemovePropertyFromConfigurationContext() throws Exception { |
| if (!canRunTests) { |
| return; |
| } |
| |
| String key1 = "configCtxKey"; |
| String val1 = "configCtxVal1"; |
| |
| // First set the property on a cluster 1 and replicate it |
| { |
| configurationContext1.setProperty(key1, val1); |
| ctxMan1.updateContext(configurationContext1); |
| String value = (String) configurationContext2.getProperty(key1); |
| assertEquals(val1, value); |
| } |
| |
| // Next remove this property from cluster 2, replicate it, and check that it is unavailable in cluster 1 |
| configurationContext2.removeProperty(key1); |
| ctxMan2.updateContext(configurationContext2); |
| String value = (String) configurationContext1.getProperty(key1); |
| assertNull(configurationContext2.getProperty(key1)); |
| assertNull(value); |
| } |
| |
| public void testSetPropertyInServiceGroupContext() throws Exception { |
| if (!canRunTests) { |
| return; |
| } |
| |
| ServiceGroupContext serviceGroupContext1 = |
| configurationContext1.createServiceGroupContext(serviceGroup1); |
| serviceGroupContext1.setId(TEST_SERVICE_NAME); |
| configurationContext1.addServiceGroupContextIntoApplicationScopeTable(serviceGroupContext1); |
| assertNotNull(serviceGroupContext1); |
| |
| ServiceGroupContext serviceGroupContext2 = |
| configurationContext2.createServiceGroupContext(serviceGroup2); |
| serviceGroupContext2.setId(TEST_SERVICE_NAME); |
| configurationContext2.addServiceGroupContextIntoApplicationScopeTable(serviceGroupContext2); |
| assertNotNull(serviceGroupContext2); |
| |
| String key1 = "sgCtxKey"; |
| String val1 = "sgCtxVal1"; |
| serviceGroupContext1.setProperty(key1, val1); |
| ctxMan1.updateContext(serviceGroupContext1); |
| assertEquals(val1, serviceGroupContext2.getProperty(key1)); |
| } |
| |
| public void testRemovePropertyFromServiceGroupContext() throws Exception { |
| if (!canRunTests) { |
| return; |
| } |
| |
| // Add the property |
| ServiceGroupContext serviceGroupContext1 = |
| configurationContext1.createServiceGroupContext(serviceGroup1); |
| serviceGroupContext1.setId(TEST_SERVICE_NAME); |
| configurationContext1.addServiceGroupContextIntoApplicationScopeTable(serviceGroupContext1); |
| assertNotNull(serviceGroupContext1); |
| |
| ServiceGroupContext serviceGroupContext2 = |
| configurationContext2.createServiceGroupContext(serviceGroup2); |
| serviceGroupContext2.setId(TEST_SERVICE_NAME); |
| configurationContext2.addServiceGroupContextIntoApplicationScopeTable(serviceGroupContext2); |
| assertNotNull(serviceGroupContext2); |
| |
| String key1 = "sgCtxKey"; |
| String val1 = "sgCtxVal1"; |
| serviceGroupContext1.setProperty(key1, val1); |
| ctxMan1.updateContext(serviceGroupContext1); |
| assertEquals(val1, serviceGroupContext2.getProperty(key1)); |
| |
| // Remove the property |
| serviceGroupContext2.removeProperty(key1); |
| assertNull(serviceGroupContext2.getProperty(key1)); |
| ctxMan2.updateContext(serviceGroupContext2); |
| assertNull(serviceGroupContext1.getProperty(key1)); |
| } |
| |
| public void testSetPropertyInServiceGroupContext2() throws Exception { |
| if (!canRunTests) { |
| return; |
| } |
| |
| String sgcID = UIDGenerator.generateUID(); |
| |
| ServiceGroupContext serviceGroupContext1 = |
| configurationContext1.createServiceGroupContext(serviceGroup1); |
| serviceGroupContext1.setId(sgcID); |
| configurationContext1.addServiceGroupContextIntoSoapSessionTable(serviceGroupContext1); |
| assertNotNull(serviceGroupContext1); |
| |
| ServiceGroupContext serviceGroupContext2 = |
| configurationContext2.createServiceGroupContext(serviceGroup2); |
| serviceGroupContext2.setId(sgcID); |
| configurationContext2.addServiceGroupContextIntoSoapSessionTable(serviceGroupContext2); |
| assertNotNull(serviceGroupContext2); |
| |
| String key1 = "sgCtxKey"; |
| String val1 = "sgCtxVal1"; |
| serviceGroupContext1.setProperty(key1, val1); |
| ctxMan1.updateContext(serviceGroupContext1); |
| |
| assertEquals(val1, serviceGroupContext2.getProperty(key1)); |
| } |
| |
| public void testRemovePropertyFromServiceGroupContext2() throws Exception { |
| if (!canRunTests) { |
| return; |
| } |
| |
| // Add the property |
| String sgcID = UIDGenerator.generateUID(); |
| |
| ServiceGroupContext serviceGroupContext1 = |
| configurationContext1.createServiceGroupContext(serviceGroup1); |
| serviceGroupContext1.setId(sgcID); |
| configurationContext1.addServiceGroupContextIntoSoapSessionTable(serviceGroupContext1); |
| assertNotNull(serviceGroupContext1); |
| |
| ServiceGroupContext serviceGroupContext2 = |
| configurationContext2.createServiceGroupContext(serviceGroup2); |
| serviceGroupContext2.setId(sgcID); |
| configurationContext2.addServiceGroupContextIntoSoapSessionTable(serviceGroupContext2); |
| assertNotNull(serviceGroupContext2); |
| |
| String key1 = "sgCtxKey"; |
| String val1 = "sgCtxVal1"; |
| serviceGroupContext1.setProperty(key1, val1); |
| ctxMan1.updateContext(serviceGroupContext1); |
| |
| assertEquals(val1, serviceGroupContext2.getProperty(key1)); |
| |
| // Remove the property |
| serviceGroupContext2.removeProperty(key1); |
| assertNull(serviceGroupContext2.getProperty(key1)); |
| ctxMan2.updateContext(serviceGroupContext2); |
| assertNull(serviceGroupContext1.getProperty(key1)); |
| } |
| |
| public void testSetPropertyInServiceContext() throws Exception { |
| if (!canRunTests) { |
| return; |
| } |
| |
| ServiceGroupContext serviceGroupContext1 = |
| configurationContext1.createServiceGroupContext(serviceGroup1); |
| serviceGroupContext1.setId(TEST_SERVICE_NAME); |
| ServiceContext serviceContext1 = serviceGroupContext1.getServiceContext(service1); |
| configurationContext1.addServiceGroupContextIntoApplicationScopeTable(serviceGroupContext1); |
| assertNotNull(serviceGroupContext1); |
| assertNotNull(serviceContext1); |
| |
| ServiceGroupContext serviceGroupContext2 = |
| configurationContext2.createServiceGroupContext(serviceGroup2); |
| serviceGroupContext2.setId(TEST_SERVICE_NAME); |
| ServiceContext serviceContext2 = serviceGroupContext2.getServiceContext(service2); |
| configurationContext2.addServiceGroupContextIntoApplicationScopeTable(serviceGroupContext2); |
| assertNotNull(serviceGroupContext2); |
| assertNotNull(serviceContext2); |
| |
| String key1 = "sgCtxKey"; |
| String val1 = "sgCtxVal1"; |
| serviceContext1.setProperty(key1, val1); |
| ctxMan1.updateContext(serviceContext1); |
| |
| assertEquals(val1, serviceContext2.getProperty(key1)); |
| } |
| |
| public void testSetPropertyInServiceContext2() throws Exception { |
| if (!canRunTests) { |
| return; |
| } |
| |
| ServiceGroupContext serviceGroupContext1 = |
| configurationContext1.createServiceGroupContext(serviceGroup1); |
| serviceGroupContext1.setId(TEST_SERVICE_NAME); |
| ServiceContext serviceContext1 = serviceGroupContext1.getServiceContext(service1); |
| configurationContext1.addServiceGroupContextIntoSoapSessionTable(serviceGroupContext1); |
| assertNotNull(serviceGroupContext1); |
| assertNotNull(serviceContext1); |
| |
| ServiceGroupContext serviceGroupContext2 = |
| configurationContext2.createServiceGroupContext(serviceGroup2); |
| serviceGroupContext2.setId(TEST_SERVICE_NAME); |
| ServiceContext serviceContext2 = serviceGroupContext2.getServiceContext(service2); |
| configurationContext2.addServiceGroupContextIntoSoapSessionTable(serviceGroupContext2); |
| assertNotNull(serviceGroupContext2); |
| assertNotNull(serviceContext2); |
| |
| String key1 = "sgCtxKey"; |
| String val1 = "sgCtxVal1"; |
| serviceContext1.setProperty(key1, val1); |
| ctxMan1.updateContext(serviceContext1); |
| |
| assertEquals(val1, serviceContext2.getProperty(key1)); |
| } |
| |
| public void testRemovePropertyFromServiceContext() throws Exception { |
| if (!canRunTests) { |
| return; |
| } |
| |
| // Add the property |
| ServiceGroupContext serviceGroupContext1 = |
| configurationContext1.createServiceGroupContext(serviceGroup1); |
| serviceGroupContext1.setId(TEST_SERVICE_NAME); |
| ServiceContext serviceContext1 = serviceGroupContext1.getServiceContext(service1); |
| configurationContext1.addServiceGroupContextIntoApplicationScopeTable(serviceGroupContext1); |
| assertNotNull(serviceGroupContext1); |
| assertNotNull(serviceContext1); |
| |
| ServiceGroupContext serviceGroupContext2 = |
| configurationContext2.createServiceGroupContext(serviceGroup2); |
| serviceGroupContext2.setId(TEST_SERVICE_NAME); |
| ServiceContext serviceContext2 = serviceGroupContext2.getServiceContext(service2); |
| configurationContext2.addServiceGroupContextIntoApplicationScopeTable(serviceGroupContext2); |
| assertNotNull(serviceGroupContext2); |
| assertNotNull(serviceContext2); |
| |
| String key1 = "sgCtxKey"; |
| String val1 = "sgCtxVal1"; |
| serviceContext1.setProperty(key1, val1); |
| ctxMan1.updateContext(serviceContext1); |
| |
| assertEquals(val1, serviceContext2.getProperty(key1)); |
| |
| // Remove the property |
| serviceContext2.removeProperty(key1); |
| assertNull(serviceContext2.getProperty(key1)); |
| ctxMan2.updateContext(serviceContext2); |
| assertNull(serviceContext1.getProperty(key1)); |
| } |
| |
| public void testRemovePropertyFromServiceContext2() throws Exception { |
| if (!canRunTests) { |
| return; |
| } |
| |
| // Add the property |
| ServiceGroupContext serviceGroupContext1 = |
| configurationContext1.createServiceGroupContext(serviceGroup1); |
| serviceGroupContext1.setId(TEST_SERVICE_NAME); |
| ServiceContext serviceContext1 = serviceGroupContext1.getServiceContext(service1); |
| configurationContext1.addServiceGroupContextIntoSoapSessionTable(serviceGroupContext1); |
| assertNotNull(serviceGroupContext1); |
| assertNotNull(serviceContext1); |
| |
| ServiceGroupContext serviceGroupContext2 = |
| configurationContext2.createServiceGroupContext(serviceGroup2); |
| serviceGroupContext2.setId(TEST_SERVICE_NAME); |
| ServiceContext serviceContext2 = serviceGroupContext2.getServiceContext(service2); |
| configurationContext2.addServiceGroupContextIntoSoapSessionTable(serviceGroupContext2); |
| assertNotNull(serviceGroupContext2); |
| assertNotNull(serviceContext2); |
| |
| String key1 = "sgCtxKey"; |
| String val1 = "sgCtxVal1"; |
| serviceContext1.setProperty(key1, val1); |
| ctxMan1.updateContext(serviceContext1); |
| |
| assertEquals(val1, serviceContext2.getProperty(key1)); |
| |
| // Remove the property |
| serviceContext2.removeProperty(key1); |
| assertNull(serviceContext2.getProperty(key1)); |
| ctxMan2.updateContext(serviceContext2); |
| assertNull(serviceContext1.getProperty(key1)); |
| } |
| |
| public void testReplicationExclusion0() throws Exception { |
| if (!canRunTests) { |
| return; |
| } |
| |
| String key1 = "local_configCtxKey"; |
| String val1 = "configCtxVal1"; |
| configurationContext1.setProperty(key1, val1); |
| List<String> exclusionPatterns = new ArrayList<String>(); |
| exclusionPatterns.add("*"); // Exclude all properties |
| ctxMan1.setReplicationExcludePatterns("defaults", exclusionPatterns); |
| ctxMan1.updateContext(configurationContext1); |
| |
| String value = (String) configurationContext2.getProperty(key1); |
| assertNull(value); // The property should not have gotten replicated |
| } |
| |
| public void testReplicationExclusion1() throws Exception { |
| if (!canRunTests) { |
| return; |
| } |
| |
| String key1 = "local_configCtxKey"; |
| String val1 = "configCtxVal1"; |
| configurationContext1.setProperty(key1, val1); |
| List<String> exclusionPatterns = new ArrayList<String>(); |
| exclusionPatterns.add("local_*"); |
| ctxMan1.setReplicationExcludePatterns("defaults", exclusionPatterns); |
| ctxMan1.updateContext(configurationContext1); |
| |
| String value = (String) configurationContext2.getProperty(key1); |
| assertNull(value); // The property should not have gotten replicated |
| } |
| |
| public void testReplicationExclusion2() throws Exception { |
| if (!canRunTests) { |
| return; |
| } |
| |
| String key1 = "local_configCtxKey"; |
| String val1 = "configCtxVal1"; |
| configurationContext1.setProperty(key1, val1); |
| List<String> exclusionPatterns = new ArrayList<String>(); |
| exclusionPatterns.add("local_*"); |
| ctxMan1.setReplicationExcludePatterns("org.apache.axis2.context.ConfigurationContext", |
| exclusionPatterns); |
| ctxMan1.updateContext(configurationContext1); |
| |
| String value = (String) configurationContext2.getProperty(key1); |
| assertNull(value); // The property should not have gotten replicated |
| } |
| |
| public void testReplicationExclusion3() throws Exception { |
| if (!canRunTests) { |
| return; |
| } |
| |
| String key1 = "local1_configCtxKey"; |
| String val1 = "configCtxVal1"; |
| configurationContext1.setProperty(key1, val1); |
| |
| String key2 = "local2_configCtxKey"; |
| String val2 = "configCtxVal2"; |
| configurationContext1.setProperty(key2, val2); |
| |
| String key3 = "local3_configCtxKey"; |
| String val3 = "configCtxVal3"; |
| configurationContext1.setProperty(key3, val3); |
| |
| List<String> exclusionPatterns1 = new ArrayList<String>(); |
| exclusionPatterns1.add("local1_*"); |
| List<String> exclusionPatterns2 = new ArrayList<String>(); |
| exclusionPatterns2.add("local2_*"); |
| ctxMan1.setReplicationExcludePatterns("org.apache.axis2.context.ConfigurationContext", |
| exclusionPatterns1); |
| ctxMan1.setReplicationExcludePatterns("defaults", |
| exclusionPatterns2); |
| ctxMan1.updateContext(configurationContext1); |
| |
| String value1 = (String) configurationContext2.getProperty(key1); |
| assertNull(value1); // The property should not have gotten replicated |
| String value2 = (String) configurationContext2.getProperty(key2); |
| assertNull(value2); // The property should not have gotten replicated |
| String value3 = (String) configurationContext2.getProperty(key3); |
| assertEquals(val3, value3); // The property should have gotten replicated |
| |
| } |
| |
| protected void tearDown() throws Exception { |
| super.tearDown(); |
| if (clusterManager1 != null) { |
| clusterManager1.shutdown(); |
| System.out.println("------ CLuster-1 shutdown complete ------"); |
| } |
| if (clusterManager2 != null) { |
| clusterManager2.shutdown(); |
| System.out.println("------ CLuster-2 shutdown complete ------"); |
| } |
| // MembershipManager.removeAllMembers(); |
| Thread.sleep(500); |
| } |
| } |