/* * Copyright (c) 2005-2008, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * WSO2 Inc. 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.wso2.carbon.mediation.dependency.mgt.tests; import org.apache.synapse.config.SynapseConfiguration; import org.apache.synapse.config.Entry; import org.apache.synapse.mediators.base.SequenceMediator; import org.apache.synapse.mediators.builtin.SendMediator; import org.apache.synapse.endpoints.*; import org.apache.synapse.core.axis2.ProxyService; import org.wso2.carbon.mediation.dependency.mgt.ConfigurationObject; public class BasicDependencyTrackingTest extends DependencyMgtTestCase { public void testDependencyMgtOnAdd() { System.out.println("Testing mediation dependency management while adding entries..."); SynapseConfiguration synapseConfig = createSynapseConfig(); // Add a local entry Entry entry = createEntry("sec_policy"); synapseConfig.addEntry(entry.getKey(), entry); // Add an endpoint which is dependent on the local entry 'sec_policy' Endpoint endpoint = createEndpoint("endpoint"); initEndpoint(endpoint, entry.getKey()); synapseConfig.addEndpoint(endpoint.getName(), endpoint); // Test assertDependency(ConfigurationObject.TYPE_ENTRY, entry.getKey(), endpoint.getName()); // Add a sequence which is dependent on the endpoint SequenceMediator seq1 = createSequence("seq1", null); SendMediator send = new SendMediator(); IndirectEndpoint endpointRef = new IndirectEndpoint(); endpointRef.setKey(endpoint.getName()); send.setEndpoint(endpointRef); seq1.addChild(send); synapseConfig.addSequence(seq1.getName(), seq1); // Test assertDependency(ConfigurationObject.TYPE_ENDPOINT, endpoint.getName(), seq1.getName()); // Add another sequence which is dependent on the sequence 'seq1' SequenceMediator seq2 = createSequence("seq2", seq1.getName()); synapseConfig.addSequence(seq2.getName(), seq2); // Test assertDependency(ConfigurationObject.TYPE_SEQUENCE, seq1.getName(), seq2.getName()); SequenceMediator seq3 = new SequenceMediator(); seq3.setName("seq3"); synapseConfig.addSequence(seq3.getName(), seq3); Entry wsdl = new Entry("wsdl"); synapseConfig.addEntry(wsdl.getKey(), wsdl); // Add a proxy service ProxyService proxy = createProxy("proxy", seq2.getName(), seq3.getName(), wsdl.getKey()); synapseConfig.addProxyService(proxy.getName(), proxy); // Test assertDependency(ConfigurationObject.TYPE_SEQUENCE, seq2.getName(), proxy.getName()); assertDependency(ConfigurationObject.TYPE_SEQUENCE, seq3.getName(), proxy.getName()); assertDependency(ConfigurationObject.TYPE_ENTRY, wsdl.getKey(), proxy.getName()); System.out.println("All tests were successful..."); } public void testDependencyMgtOnRemove() { System.out.println("Testing mediation dependency management while removing entries..."); SynapseConfiguration synapseConfig = createSynapseConfig(); Entry entry = createEntry("sec_policy"); synapseConfig.addEntry(entry.getKey(), entry); Endpoint endpoint = createEndpoint("endpoint"); initEndpoint(endpoint, entry.getKey()); synapseConfig.addEndpoint(endpoint.getName(), endpoint); SequenceMediator seq1 = createSequence("seq1", null); SendMediator send = new SendMediator(); IndirectEndpoint endpointRef = new IndirectEndpoint(); endpointRef.setKey(endpoint.getName()); send.setEndpoint(endpointRef); seq1.addChild(send); synapseConfig.addSequence(seq1.getName(), seq1); SequenceMediator seq2 = createSequence("seq2", seq1.getName()); synapseConfig.addSequence(seq2.getName(), seq2); SequenceMediator seq3 = new SequenceMediator(); seq3.setName("seq3"); synapseConfig.addSequence(seq3.getName(), seq3); Entry wsdl = new Entry("wsdl"); synapseConfig.addEntry(wsdl.getKey(), wsdl); ProxyService proxy = createProxy("proxy", seq2.getName(), seq3.getName(), wsdl.getKey()); synapseConfig.addProxyService(proxy.getName(), proxy); assertDependency(ConfigurationObject.TYPE_SEQUENCE, seq2.getName(), proxy.getName()); assertDependency(ConfigurationObject.TYPE_SEQUENCE, seq3.getName(), proxy.getName()); assertDependency(ConfigurationObject.TYPE_ENTRY, wsdl.getKey(), proxy.getName()); synapseConfig.removeProxyService(proxy.getName()); assertNoDependency(ConfigurationObject.TYPE_SEQUENCE, seq2.getName()); assertNoDependency(ConfigurationObject.TYPE_SEQUENCE, seq3.getName()); assertNoDependency(ConfigurationObject.TYPE_ENTRY, wsdl.getKey()); assertDependency(ConfigurationObject.TYPE_SEQUENCE, seq1.getName(), seq2.getName()); synapseConfig.removeSequence(seq2.getName()); assertNoDependency(ConfigurationObject.TYPE_SEQUENCE, seq1.getName()); assertDependency(ConfigurationObject.TYPE_ENDPOINT, endpoint.getName(), seq1.getName()); synapseConfig.removeSequence(seq1.getName()); assertNoDependency(ConfigurationObject.TYPE_ENDPOINT, endpoint.getName()); assertDependency(ConfigurationObject.TYPE_ENTRY, entry.getKey(), endpoint.getName()); synapseConfig.removeEntry(entry.getKey()); assertNoDependency(ConfigurationObject.TYPE_ENTRY, entry.getKey()); System.out.println("All tests were successful..."); } public void testDependencyMgtOnUpdate() { System.out.println("Testing mediation dependency management while updating entries..."); SynapseConfiguration synapseConfig = createSynapseConfig(); Entry entry1 = createEntry("entry1"); Entry entry2 = createEntry("entry2"); synapseConfig.addEntry(entry1.getKey(), entry1); synapseConfig.addEntry(entry2.getKey(), entry2); Endpoint endpoint = createEndpoint("endpoint"); initEndpoint(endpoint, entry1.getKey()); synapseConfig.addEndpoint(endpoint.getName(), endpoint); assertDependency(ConfigurationObject.TYPE_ENTRY, entry1.getKey(), endpoint.getName()); synapseConfig.removeEndpoint(endpoint.getName()); initEndpoint(endpoint, entry2.getKey()); synapseConfig.addEndpoint(endpoint.getName(), endpoint); assertNoDependency(ConfigurationObject.TYPE_ENTRY, entry1.getKey()); assertDependency(ConfigurationObject.TYPE_ENTRY, entry2.getKey(), endpoint.getName()); Endpoint endpoint2 = createEndpoint("endpoint2"); initEndpoint(endpoint2, null); synapseConfig.addEndpoint(endpoint2.getName(), endpoint2); SequenceMediator seq1 = createSequence("seq1", null); SendMediator send = new SendMediator(); IndirectEndpoint endpointRef = new IndirectEndpoint(); endpointRef.setKey(endpoint.getName()); send.setEndpoint(endpointRef); seq1.addChild(send); synapseConfig.addSequence(seq1.getName(), seq1); assertDependency(ConfigurationObject.TYPE_ENDPOINT, endpoint.getName(), seq1.getName()); synapseConfig.removeSequence(seq1.getName()); seq1.removeChild(0); send = new SendMediator(); endpointRef = new IndirectEndpoint(); endpointRef.setKey(endpoint2.getName()); send.setEndpoint(endpointRef); seq1.addChild(send); synapseConfig.addSequence(seq1.getName(), seq1); assertNoDependency(ConfigurationObject.TYPE_ENDPOINT, endpoint.getName()); assertDependency(ConfigurationObject.TYPE_ENDPOINT, endpoint2.getName(), seq1.getName()); SequenceMediator seq2 = createSequence("seq2", null); synapseConfig.addSequence(seq2.getName(), seq2); ProxyService proxy = createProxy("proxy", seq1.getName(), null, null); synapseConfig.addProxyService(proxy.getName(), proxy); assertDependency(ConfigurationObject.TYPE_SEQUENCE, seq1.getName(), proxy.getName()); synapseConfig.removeProxyService(proxy.getName()); proxy = createProxy("proxy", null, seq2.getName(), null); synapseConfig.addProxyService(proxy.getName(), proxy); assertNoDependency(ConfigurationObject.TYPE_SEQUENCE, seq1.getName()); assertDependency(ConfigurationObject.TYPE_SEQUENCE, seq2.getName(), proxy.getName()); System.out.println("All tests were successful..."); } public void testInactiveDependency() { SynapseConfiguration synapseConfig = createSynapseConfig(); Endpoint endpoint = createEndpoint("endpoint"); initEndpoint(endpoint, null); synapseConfig.addEndpoint(endpoint.getName(), endpoint); SequenceMediator sequence = createSequence("sequence", null); SendMediator send = new SendMediator(); IndirectEndpoint target = new IndirectEndpoint(); target.setKey(endpoint.getName()); send.setEndpoint(target); sequence.addChild(send); synapseConfig.addSequence(sequence.getName(), sequence); assertDependency(ConfigurationObject.TYPE_ENDPOINT, endpoint.getName(), sequence.getName()); SequenceMediator sequence2 = createSequence("sequence2", sequence.getName()); synapseConfig.addSequence(sequence2.getName(), sequence2); assertDependency(ConfigurationObject.TYPE_SEQUENCE, sequence.getName(), sequence2.getName()); synapseConfig.removeSequence(sequence.getName()); assertDependency(ConfigurationObject.TYPE_ENDPOINT, endpoint.getName(), sequence.getName()); assertNoActiveDependency(ConfigurationObject.TYPE_ENDPOINT, endpoint.getName()); } private Entry createEntry(String key) { return new Entry(key); } }