/* * Copyright (c) 2005-2014, 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.esb.integration.common.utils; import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.io.Input; import org.apache.axiom.om.OMAbstractFactory; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMFactory; import org.apache.axiom.om.OMNamespace; import org.apache.axiom.om.impl.builder.StAXOMBuilder; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.synapse.aspects.flow.statistics.publishing.PublishingPayload; import org.apache.synapse.config.xml.XMLConfigConstants; import org.testng.Assert; import org.wso2.carbon.endpoint.stub.types.EndpointAdminEndpointAdminException; import org.wso2.carbon.inbound.stub.types.carbon.InboundEndpointDTO; import org.wso2.carbon.localentry.stub.types.LocalEntryAdminException; import org.wso2.carbon.mediation.library.stub.MediationLibraryAdminServiceException; import org.wso2.carbon.mediation.library.stub.upload.types.carbon.LibraryFileItem; import org.wso2.carbon.proxyadmin.stub.ProxyServiceAdminProxyAdminException; import org.wso2.carbon.rest.api.stub.RestApiAdminAPIException; import org.wso2.carbon.sequences.stub.types.SequenceEditorException; import org.wso2.carbon.task.stub.TaskManagementException; import org.wso2.esb.integration.common.clients.connector.MediationLibraryAdminServiceClient; import org.wso2.esb.integration.common.clients.connector.MediationLibraryUploaderClient; import org.wso2.esb.integration.common.clients.endpoint.EndPointAdminClient; import org.wso2.esb.integration.common.clients.executor.PriorityMediationAdminClient; import org.wso2.esb.integration.common.clients.inbound.endpoint.InboundAdminClient; import org.wso2.esb.integration.common.clients.localentry.LocalEntriesAdminClient; import org.wso2.esb.integration.common.clients.mediation.MessageProcessorClient; import org.wso2.esb.integration.common.clients.mediation.MessageStoreAdminClient; import org.wso2.esb.integration.common.clients.proxy.admin.ProxyServiceAdminClient; import org.wso2.esb.integration.common.clients.rest.api.RestApiAdminClient; import org.wso2.esb.integration.common.clients.sequences.SequenceAdminServiceClient; import org.wso2.esb.integration.common.clients.service.mgt.ServiceAdminClient; import org.wso2.esb.integration.common.clients.tasks.TaskAdminClient; import org.wso2.esb.integration.common.clients.template.EndpointTemplateAdminServiceClient; import org.wso2.esb.integration.common.clients.template.SequenceTemplateAdminServiceClient; import org.wso2.esb.integration.common.utils.common.TestConfigurationProvider; import javax.xml.bind.DatatypeConverter; import javax.xml.namespace.QName; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.nio.channels.FileChannel; import java.rmi.RemoteException; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.zip.GZIPInputStream; public class ESBTestCaseUtils { protected Log log = LogFactory.getLog(getClass()); private static int SERVICE_DEPLOYMENT_DELAY = TestConfigurationProvider.getServiceDeploymentDelay(); private static final String PROXY = "proxy"; private static final String LOCAL_ENTRY = "localEntry"; private static final String ENDPOINT = "endpoint"; private static final String SEQUENCE = "sequence"; private static final String MESSAGE_STORE = "messageStore"; private static final String MESSAGE_PROCESSOR = "messageProcessor"; private static final String TEMPLATE = "template"; private static final String API = "api"; private static final String PRIORITY_EXECUTOR = "priorityExecutor"; private static final String KEY = "key"; private static final String NAME = "name"; private static final String TASK = "task"; /** * Loads the specified resource from the classpath and returns its content as an OMElement. * * @param path A relative path to the resource file * @return An OMElement containing the resource content */ public OMElement loadResource(String path) throws FileNotFoundException, XMLStreamException { OMElement documentElement = null; FileInputStream inputStream = null; XMLStreamReader parser = null; StAXOMBuilder builder = null; path = TestConfigurationProvider.getResourceLocation() + path; File file = new File(path); if (file.exists()) { try { inputStream = new FileInputStream(file); parser = XMLInputFactory.newInstance().createXMLStreamReader(inputStream); //create the builder builder = new StAXOMBuilder(parser); //get the root element (in this case the envelope) documentElement = builder.getDocumentElement().cloneOMElement(); } finally { if (builder != null) { builder.close(); } if (parser != null) { try { parser.close(); } catch (XMLStreamException e) { //ignore } } if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { //ignore } } } } else { throw new FileNotFoundException("File Not Exist at " + path); } return documentElement; } /** * Loads the specified ESB configuration file from the classpath and deploys it into the ESB. * * @param synapseFilePath A relative path to the configuration file * @throws java.rmi.RemoteException If an error occurs while loading the specified configuration */ public void loadESBConfigurationFrom(String synapseFilePath, String backendURL, String sessionCookie) throws Exception { OMElement configElement = loadResource(synapseFilePath); updateESBConfiguration(configElement, backendURL, sessionCookie); } /** * Loads the configuration of the specified sample into the ESB. * * @param number Sample number * @throws Exception If an error occurs while loading the sample configuration */ public OMElement loadESBSampleConfiguration(int number) throws Exception { String filePath = TestConfigurationProvider.getResourceLocation("ESB") + File.separator + "samples" + File.separator + "synapse_sample_" + number + ".xml"; File configFile = new File(filePath); FileInputStream inputStream = null; XMLStreamReader parser = null; StAXOMBuilder builder = null; OMElement documentElement = null; try { inputStream = new FileInputStream(configFile.getAbsolutePath()); parser = XMLInputFactory.newInstance().createXMLStreamReader(inputStream); builder = new StAXOMBuilder(parser); documentElement = builder.getDocumentElement().cloneOMElement(); } finally { if (builder != null) { builder.close(); } if (parser != null) { try { parser.close(); } catch (XMLStreamException e) { //ignore } } if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { //ignore } } } return documentElement; } /** * load synapse configuration from OMElement * * @param synapseConfig synapse configuration * @param backendURL server backEnd url * @param sessionCookie session Cookie * @throws java.rmi.RemoteException * @throws javax.xml.stream.XMLStreamException * @throws javax.servlet.ServletException */ public void updateESBConfiguration(OMElement synapseConfig, String backendURL, String sessionCookie) throws Exception { ProxyServiceAdminClient proxyAdmin = new ProxyServiceAdminClient(backendURL, sessionCookie); EndPointAdminClient endPointAdminClient = new EndPointAdminClient(backendURL, sessionCookie); SequenceAdminServiceClient sequenceAdminClient = new SequenceAdminServiceClient(backendURL, sessionCookie); LocalEntriesAdminClient localEntryAdminServiceClient = new LocalEntriesAdminClient(backendURL, sessionCookie); MessageProcessorClient messageProcessorClient = new MessageProcessorClient(backendURL, sessionCookie); MessageStoreAdminClient messageStoreAdminClient = new MessageStoreAdminClient(backendURL, sessionCookie); ServiceAdminClient adminServiceService = new ServiceAdminClient(backendURL, sessionCookie); EndpointTemplateAdminServiceClient endpointTemplateAdminServiceClient = new EndpointTemplateAdminServiceClient(backendURL, sessionCookie); SequenceTemplateAdminServiceClient sequenceTemplateAdminServiceClient = new SequenceTemplateAdminServiceClient(backendURL, sessionCookie); RestApiAdminClient apiAdminClient = new RestApiAdminClient(backendURL, sessionCookie); PriorityMediationAdminClient priorityMediationAdminClient = new PriorityMediationAdminClient(backendURL, sessionCookie); TaskAdminClient taskAdminClient = new TaskAdminClient(backendURL, sessionCookie); Iterator<OMElement> localEntries = synapseConfig.getChildrenWithLocalName(LOCAL_ENTRY); while (localEntries.hasNext()) { OMElement localEntry = localEntries.next(); String le = localEntry.getAttributeValue(new QName(KEY)); if (ArrayUtils.contains(localEntryAdminServiceClient.getEntryNames(), le)) { Assert.assertTrue(localEntryAdminServiceClient.deleteLocalEntry(le), le + " Local Entry deletion failed"); Assert.assertTrue(isLocalEntryUnDeployed(backendURL, sessionCookie, le), le + " Local Entry undeployment failed"); } Assert.assertTrue(localEntryAdminServiceClient.addLocalEntry(localEntry), " Local Entry addition failed"); Assert.assertTrue(isLocalEntryDeployed(backendURL, sessionCookie, le), " Local Entry deployment failed"); log.info(le + " LocalEntry Uploaded"); } Iterator<OMElement> endpoints = synapseConfig.getChildrenWithLocalName(ENDPOINT); while (endpoints.hasNext()) { OMElement endpoint = endpoints.next(); String ep = endpoint.getAttributeValue(new QName(NAME)); if (ArrayUtils.contains(endPointAdminClient.getEndpointNames(), ep)) { Assert.assertTrue(endPointAdminClient.deleteEndpoint(ep), ep + " Endpoint deletion failed"); Assert.assertTrue(isEndpointUnDeployed(backendURL, sessionCookie, ep), ep + " Endpoint undeployment failed"); } Assert.assertTrue(endPointAdminClient.addEndPoint(endpoint)," Endpoint addition failed"); Assert.assertTrue(isEndpointDeployed(backendURL, sessionCookie, ep), " Endpoint deployment failed"); log.info(ep + " Endpoint Uploaded"); } Iterator<OMElement> sequences = synapseConfig.getChildrenWithLocalName(SEQUENCE); while (sequences.hasNext()) { OMElement sequence = sequences.next(); String sqn = sequence.getAttributeValue(new QName(NAME)); boolean isSequenceExist = ArrayUtils.contains(sequenceAdminClient.getSequences(), sqn); if (("main".equalsIgnoreCase(sqn) || "fault".equalsIgnoreCase(sqn)) && isSequenceExist) { sequenceAdminClient.updateSequence(sequence); } else { if (isSequenceExist) { sequenceAdminClient.deleteSequence(sqn); Assert.assertTrue(isSequenceUnDeployed(backendURL, sessionCookie, sqn), sqn + " Sequence undeployment failed"); } sequenceAdminClient.addSequence(sequence); Assert.assertTrue(isSequenceDeployed(backendURL, sessionCookie, sqn), " Sequence deployment failed"); } log.info(sqn + " Sequence Uploaded"); } Iterator<OMElement> proxies = synapseConfig.getChildrenWithLocalName(PROXY); while (proxies.hasNext()) { OMElement proxy = proxies.next(); String proxyName = proxy.getAttributeValue(new QName(NAME)); if (adminServiceService.isServiceExists(proxyName)) { proxyAdmin.deleteProxy(proxyName); Assert.assertTrue(isProxyUnDeployed(backendURL, sessionCookie, proxyName), proxyName + " Undeployment failed"); } proxyAdmin.addProxyService(proxy); Assert.assertTrue(isProxyDeployed(backendURL, sessionCookie, proxyName), proxyName + " deployment failed"); log.info(proxyName + " Proxy Uploaded"); } Iterator<OMElement> messageStores = synapseConfig.getChildrenWithLocalName(MESSAGE_STORE); while (messageStores.hasNext()) { OMElement messageStore = messageStores.next(); String mStore = messageStore.getAttributeValue(new QName(NAME)); if (ArrayUtils.contains(messageStoreAdminClient.getMessageStores(), mStore)) { messageStoreAdminClient.deleteMessageStore(mStore); Assert.assertTrue(isMessageStoreUnDeployed(backendURL, sessionCookie, mStore), mStore + " Message Store undeployment failed"); } messageStoreAdminClient.addMessageStore(messageStore); Assert.assertTrue(isMessageStoreDeployed(backendURL, sessionCookie, mStore), " Message Store deployment " + "failed"); log.info(mStore + " Message Store Uploaded"); } Iterator<OMElement> messageProcessors = synapseConfig.getChildrenWithLocalName(MESSAGE_PROCESSOR); while (messageProcessors.hasNext()) { OMElement messageProcessor = messageProcessors.next(); String mProcessor = messageProcessor.getAttributeValue(new QName(NAME)); if (ArrayUtils.contains(messageProcessorClient.getMessageProcessorNames(), mProcessor)) { messageProcessorClient.deleteMessageProcessor(mProcessor); Assert.assertTrue(isMessageProcessorUnDeployed(backendURL, sessionCookie, mProcessor) , mProcessor + " Message Processor undeployment failed"); } messageProcessorClient.addMessageProcessor(messageProcessor); Assert.assertTrue(isMessageProcessorDeployed(backendURL, sessionCookie, mProcessor), " Message Processor " + " deployment" + " failed"); log.info(mProcessor + " Message Processor Uploaded"); } Iterator<OMElement> templates = synapseConfig.getChildrenWithLocalName(TEMPLATE); while (templates.hasNext()) { OMElement template = templates.next(); String templateName = template.getAttributeValue(new QName(NAME)); if (template.getFirstChildWithName(new QName(template.getNamespace().getNamespaceURI(), SEQUENCE)) != null) { if (ArrayUtils.contains(sequenceTemplateAdminServiceClient.getSequenceTemplates(), templateName)) { sequenceTemplateAdminServiceClient.deleteTemplate(templateName); Assert.assertTrue(isSequenceTemplateUnDeployed(backendURL, sessionCookie, templateName) , templateName + " Sequence Template undeployment failed"); } sequenceTemplateAdminServiceClient.addSequenceTemplate(template); Assert.assertTrue(isSequenceTemplateDeployed(backendURL, sessionCookie, templateName), " Sequence " + " Template " + " deployment " + " failed"); } else { if (ArrayUtils.contains(endpointTemplateAdminServiceClient.getEndpointTemplates(), templateName)) { endpointTemplateAdminServiceClient.deleteEndpointTemplate(templateName); Assert.assertTrue(isEndpointTemplateUnDeployed(backendURL, sessionCookie, templateName) , templateName + " Endpoint Template undeployment failed"); } endpointTemplateAdminServiceClient.addEndpointTemplate(template); Assert.assertTrue(isEndpointTemplateDeployed(backendURL, sessionCookie, templateName), " Endpoint " + " Template " + " deployment " + " failed"); } log.info(templateName + " Template Uploaded"); } Iterator<OMElement> apiElements = synapseConfig.getChildrenWithLocalName(API); while (apiElements.hasNext()) { OMElement api = apiElements.next(); String apiName = api.getAttributeValue(new QName(NAME)); if (ArrayUtils.contains(apiAdminClient.getApiNames(), apiName)) { apiAdminClient.deleteApi(apiName); Assert.assertTrue(isApiUnDeployed(backendURL, sessionCookie, apiName) , apiName + " Api undeployment failed"); } apiAdminClient.add(api); Assert.assertTrue(isApiDeployed(backendURL, sessionCookie, apiName), " Api deployment failed"); log.info(apiName + " API Uploaded"); } Iterator<OMElement> priorityExecutorList = synapseConfig.getChildrenWithLocalName(PRIORITY_EXECUTOR); while (priorityExecutorList.hasNext()) { OMElement executor = priorityExecutorList.next(); String executorName = executor.getAttributeValue(new QName(NAME)); if (ArrayUtils.contains(priorityMediationAdminClient.getExecutorList(), executorName)) { priorityMediationAdminClient.remove(executorName); Assert.assertTrue(isPriorityExecutorUnDeployed(backendURL, sessionCookie, executorName) , executorName + " Priority Executor undeployment failed"); } priorityMediationAdminClient.addPriorityMediator(executorName, executor); Assert.assertTrue(isPriorityExecutorDeployed(backendURL, sessionCookie, executorName), " Priority " + "Executor failed"); log.info(executorName + " Priority Executor Uploaded"); } Iterator<OMElement> taskList = synapseConfig.getChildrenWithLocalName(TASK); while (taskList.hasNext()) { OMElement task = taskList.next(); String taskName = task.getAttributeValue(new QName(NAME)); if (taskAdminClient.getScheduleTaskList().contains(taskName)) { taskAdminClient.updateTask(task); continue; } taskAdminClient.addTask(task); Assert.assertTrue(isScheduleTaskDeployed(backendURL, sessionCookie, taskName), " Task deployment failed"); log.info(taskName + " Task Uploaded"); } Thread.sleep(1000); verifySynapseDeployment(synapseConfig, backendURL, sessionCookie); log.info("Synapse configuration Deployed"); } /** * @param backEndUrl * @param sessionCookie * @param proxyConfig * @throws javax.xml.stream.XMLStreamException * @throws java.io.IOException * @throws org.wso2.carbon.proxyadmin.stub.ProxyServiceAdminProxyAdminException * @throws InterruptedException */ public void addProxyService(String backEndUrl, String sessionCookie, OMElement proxyConfig) throws Exception { ProxyServiceAdminClient proxyAdmin = new ProxyServiceAdminClient(backEndUrl, sessionCookie); proxyAdmin.addProxyService(proxyConfig); String proxyName = proxyConfig.getAttributeValue(new QName(NAME)); Assert.assertTrue(isProxyDeployed(backEndUrl, sessionCookie, proxyName), "Proxy Deployment failed or time out"); } public void addInboundEndpoint(String backEndUrl, String sessionCookie, OMElement inboundEndpoint) throws Exception { InboundAdminClient inboundAdmin = new InboundAdminClient(backEndUrl, sessionCookie); inboundAdmin.addInboundEndpoint(inboundEndpoint.toString()); isInboundEndpointDeployed(backEndUrl, sessionCookie, inboundEndpoint.getAttributeValue(new QName("name"))); } /** * Adds Inbound Endpoint using parameters * @param backEndUrl * @param sessionCookie * @param inboundEndpoint * @throws Exception */ public void addInboundEndpointFromParams(String backEndUrl, String sessionCookie, OMElement inboundEndpoint) throws Exception { InboundAdminClient inboundAdmin = new InboundAdminClient(backEndUrl, sessionCookie); Map<String, String> mParams = generateParameterMap(inboundEndpoint); inboundAdmin.addInboundEndpoint(inboundEndpoint.getAttribute(new QName("name")).getAttributeValue(), inboundEndpoint.getAttribute(new QName("sequence")).getAttributeValue(), inboundEndpoint.getAttribute(new QName("onError")).getAttributeValue(), inboundEndpoint.getAttribute(new QName("protocol")).getAttributeValue(), null, mParams); isInboundEndpointDeployed(backEndUrl, sessionCookie, inboundEndpoint.getAttributeValue(new QName("name"))); } /** * Updates inbound Endpoint Using Parameters * @param backEndUrl * @param sessionCookie * @param inboundEndpoint * @throws Exception */ public void updateInboundEndpoint(String backEndUrl, String sessionCookie, OMElement inboundEndpoint) throws Exception { InboundAdminClient inboundAdmin = new InboundAdminClient(backEndUrl, sessionCookie); Map<String, String> mParams = generateParameterMap(inboundEndpoint); if(inboundEndpoint.getAttribute(new QName("protocol")).getAttributeValue() != null) { inboundAdmin.updateInboundEndpoint(inboundEndpoint.getAttribute(new QName("name")).getAttributeValue(), inboundEndpoint.getAttribute(new QName("sequence")).getAttributeValue(), inboundEndpoint.getAttribute(new QName("onError")).getAttributeValue(), inboundEndpoint.getAttribute(new QName("protocol")).getAttributeValue(), null, mParams); } else { inboundAdmin.updateInboundEndpoint(inboundEndpoint.getAttribute(new QName("name")).getAttributeValue(), inboundEndpoint.getAttribute(new QName("sequence")).getAttributeValue(), inboundEndpoint.getAttribute(new QName("onError")).getAttributeValue(), null, inboundEndpoint.getAttribute(new QName("classImpl")).getAttributeValue(), mParams); } isInboundEndpointDeployed(backEndUrl, sessionCookie, inboundEndpoint.getAttributeValue(new QName("name"))); } /** * populates endpoint parameter map * @param element * @return created Inbound Endpoint parametr map */ private Map<String,String> generateParameterMap(OMElement element) { Map<String,String> paramMap = new HashMap<String, String>(); OMElement params = element.getFirstChildWithName(new QName(XMLConfigConstants.SYNAPSE_NAMESPACE, "parameters")); if (params != null) { Iterator<OMElement> iterator = params.getChildrenWithName(new QName(XMLConfigConstants.SYNAPSE_NAMESPACE,"parameter")); while (iterator.hasNext()) { OMElement parametreElement = iterator.next(); String nameAttr = parametreElement.getAttribute(new QName("name")).getAttributeValue(); String valueAttr = parametreElement.getText(); paramMap.put(nameAttr,valueAttr); } } return paramMap; } /** * Checks whether inbound endpoint exists till time interval specified by SERVICE_DEPLOYMENT_DELAY. * * @param backEndUrl backendURL * @param sessionCookie session Cookie for the Test * @param name name of the inbound Endpoint * @throws Exception If an error occurs while checking for inbound */ public void isInboundEndpointDeployed(String backEndUrl, String sessionCookie, String name) throws Exception { InboundAdminClient inboundAdmin = new InboundAdminClient(backEndUrl, sessionCookie); InboundEndpointDTO inboundEndpointDTO = null; log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for Inbound Endpoint " + name); Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { inboundEndpointDTO = inboundAdmin.getInboundEndpointbyName(name); if (inboundEndpointDTO != null) { log.info(name + "Inbound Endpoint Found in " + time + " millis"); break; } try { Thread.sleep(500); } catch (InterruptedException e) { //ignore } } Assert.assertNotNull(inboundEndpointDTO); } public void isInboundEndpointUndeployed(String backEndUrl, String sessionCookie, String name) throws Exception { InboundAdminClient inboundAdmin = new InboundAdminClient(backEndUrl, sessionCookie); InboundEndpointDTO inboundEndpointDTO = inboundAdmin.getInboundEndpointbyName(name); Assert.assertNull(inboundEndpointDTO); } public void deleteInboundEndpointDeployed(String backEndUrl, String sessionCookie, String name) throws Exception { InboundAdminClient inboundAdmin = new InboundAdminClient(backEndUrl, sessionCookie); inboundAdmin.removeInboundEndpoint(name); InboundEndpointDTO inboundEndpointDTO = inboundAdmin.getInboundEndpointbyName(name); Assert.assertNull(inboundEndpointDTO); } public InboundEndpointDTO[] getAllInboundEndpoints(String backEndUrl, String sessionCookie) throws Exception { InboundAdminClient inboundAdmin = new InboundAdminClient(backEndUrl, sessionCookie); return inboundAdmin.getAllInboundEndpointNames(); } /** * Upload connector zip to file system * @param backEndUrl * @param sessionCookie * @param fileItems * @throws java.rmi.RemoteException */ public void uploadConnector(String backEndUrl, String sessionCookie, LibraryFileItem[] fileItems) throws RemoteException { MediationLibraryUploaderClient mediationLibraryUploaderClient = new MediationLibraryUploaderClient( backEndUrl, sessionCookie); mediationLibraryUploaderClient.uploadConnector(fileItems); } /** * Update connector status * @param backEndUrl * @param sessionCookie * @param libQName * @param libName * @param packageName * @param status * @throws java.rmi.RemoteException */ public void updateConnectorStatus(String backEndUrl, String sessionCookie, String libQName, String libName, String packageName, String status) throws RemoteException { MediationLibraryAdminServiceClient mediationLibraryAdminServiceClient = new MediationLibraryAdminServiceClient( backEndUrl, sessionCookie); mediationLibraryAdminServiceClient.updateStatus(libQName,libName,packageName,status); } /** * Provide All Imports * @param backEndUrl * @param sessionCookie * @return * @throws java.rmi.RemoteException */ public String[] getAllImports(String backEndUrl, String sessionCookie) throws RemoteException { MediationLibraryAdminServiceClient mediationLibraryAdminServiceClient = new MediationLibraryAdminServiceClient( backEndUrl, sessionCookie); return mediationLibraryAdminServiceClient.getAllImports(); } /** * Delete connector from file system * @param backEndUrl * @param sessionCookie * @param liqQualifiedname * @throws java.rmi.RemoteException * @throws org.wso2.carbon.mediation.library.stub.MediationLibraryAdminServiceException */ public void deleteLibrary(String backEndUrl, String sessionCookie, String liqQualifiedname) throws RemoteException, MediationLibraryAdminServiceException { MediationLibraryAdminServiceClient mediationLibraryAdminServiceClient = new MediationLibraryAdminServiceClient( backEndUrl, sessionCookie); mediationLibraryAdminServiceClient.deleteLibrary(liqQualifiedname); } /** * @param backEndUrl * @param sessionCookie * @param endpointConfig * @throws Exception */ public void addEndpoint(String backEndUrl, String sessionCookie, OMElement endpointConfig) throws Exception { EndPointAdminClient endPointAdminClient = new EndPointAdminClient(backEndUrl, sessionCookie); endPointAdminClient.addEndPoint(endpointConfig); String ep = endpointConfig.getAttributeValue(new QName(NAME)); Assert.assertTrue(isEndpointDeployed(backEndUrl, sessionCookie, ep), ep + "Endpoint deployment not found or time out"); } /** * @param backEndUrl * @param sessionCookie * @param localEntryConfig * @return * @throws Exception */ public void addLocalEntry(String backEndUrl, String sessionCookie, OMElement localEntryConfig) throws Exception { LocalEntriesAdminClient localEntryAdminServiceClient = new LocalEntriesAdminClient(backEndUrl, sessionCookie); boolean value = localEntryAdminServiceClient.addLocalEntry(localEntryConfig); Assert.assertTrue(value, "LocalEntry Addition failed"); if (value) { String le = localEntryConfig.getAttributeValue(new QName(KEY)); Assert.assertTrue(isLocalEntryDeployed(backEndUrl, sessionCookie, le), le + "LocalEntry deployment not found or time out"); } } /** * @param backEndUrl * @param sessionCookie * @param sequenceConfig * @throws Exception */ public void addSequence(String backEndUrl, String sessionCookie, OMElement sequenceConfig) throws Exception { SequenceAdminServiceClient sequenceAdminClient = new SequenceAdminServiceClient(backEndUrl, sessionCookie); sequenceAdminClient.addSequence(sequenceConfig); String sqn = sequenceConfig.getAttributeValue(new QName(NAME)); Assert.assertTrue(isSequenceDeployed(backEndUrl, sessionCookie, sqn), sqn + "Sequence deployment not found or time out"); } /** * @param backEndUrl * @param sessionCookie * @param messageStore * @throws java.rmi.RemoteException */ public void addMessageStore(String backEndUrl, String sessionCookie, OMElement messageStore) throws Exception { MessageStoreAdminClient messageStoreAdminClient = new MessageStoreAdminClient(backEndUrl, sessionCookie); messageStoreAdminClient.addMessageStore(messageStore); String mStoreName = messageStore.getAttributeValue(new QName(NAME)); Assert.assertTrue(isMessageStoreDeployed(backEndUrl, sessionCookie, mStoreName), "Message Store Deployment failed"); } /** * @param backEndUrl * @param sessionCookie * @param messageProcessor * @throws java.rmi.RemoteException */ public void addMessageProcessor(String backEndUrl, String sessionCookie, OMElement messageProcessor) throws Exception { MessageProcessorClient messageProcessorClient = new MessageProcessorClient(backEndUrl, sessionCookie); messageProcessorClient.addMessageProcessor(messageProcessor); String mProcessorName = messageProcessor.getAttributeValue(new QName(NAME)); Assert.assertTrue(isMessageProcessorDeployed(backEndUrl, sessionCookie, mProcessorName), "Message Processor deployment failed"); } public void addSequenceTemplate(String backEndUrl, String sessionCookie, OMElement sequenceTemplate) throws RemoteException { SequenceTemplateAdminServiceClient sequenceTemplateAdminServiceClient = new SequenceTemplateAdminServiceClient(backEndUrl, sessionCookie); sequenceTemplateAdminServiceClient.addSequenceTemplate(sequenceTemplate); String seqTmpName = sequenceTemplate.getAttributeValue(new QName(NAME)); Assert.assertTrue(isSequenceTemplateDeployed(backEndUrl, sessionCookie, seqTmpName), "Sequence Template deployment failed"); } public void addEndpointTemplate(String backEndUrl, String sessionCookie, OMElement endpointTemplate) throws RemoteException { EndpointTemplateAdminServiceClient endpointTemplateAdminServiceClient = new EndpointTemplateAdminServiceClient(backEndUrl, sessionCookie); endpointTemplateAdminServiceClient.addEndpointTemplate(endpointTemplate); String endpointTmpName = endpointTemplate.getAttributeValue(new QName(NAME)); Assert.assertTrue(isEndpointTemplateDeployed(backEndUrl, sessionCookie, endpointTmpName), "Endpoint Template deployment failed"); } public void addAPI(String backEndUrl, String sessionCookie, OMElement api) throws RemoteException, RestApiAdminAPIException { RestApiAdminClient apiAdminClient = new RestApiAdminClient(backEndUrl, sessionCookie); apiAdminClient.add(api); String apiName = api.getAttributeValue(new QName(NAME)); Assert.assertTrue(isApiDeployed(backEndUrl, sessionCookie, apiName), "Rest Api deployment failed"); } public void addPriorityExecutor(String backEndUrl, String sessionCookie, OMElement priorityExecutor) throws RemoteException { PriorityMediationAdminClient priorityMediationAdminClient = new PriorityMediationAdminClient(backEndUrl, sessionCookie); String executorName = priorityExecutor.getAttributeValue(new QName(NAME)); priorityMediationAdminClient.addPriorityMediator(executorName, priorityExecutor); Assert.assertTrue(isPriorityExecutorDeployed(backEndUrl, sessionCookie, executorName), "Priority Executor deployment failed"); } /** * @param backEndUrl * @param sessionCookie * @param taskDescription * @throws org.wso2.carbon.task.stub.TaskManagementException * @throws java.rmi.RemoteException */ public void addScheduleTask(String backEndUrl, String sessionCookie, OMElement taskDescription) throws TaskManagementException, RemoteException { TaskAdminClient taskAdminClient = new TaskAdminClient(backEndUrl, sessionCookie); taskAdminClient.addTask(taskDescription); Assert.assertTrue(isScheduleTaskDeployed(backEndUrl, sessionCookie , taskDescription.getAttributeValue(new QName("name"))), "ScheduleTask deployment failed" ); } /** * Waiting for proxy to deploy * * @param backEndUrl * @param sessionCookie * @param proxyName * @return * @throws java.rmi.RemoteException */ public boolean isProxyDeployed(String backEndUrl, String sessionCookie, String proxyName) throws RemoteException { log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for Proxy deployment " + proxyName); boolean isServiceDeployed = false; ServiceAdminClient adminServiceService = new ServiceAdminClient(backEndUrl, sessionCookie); Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { if (adminServiceService.isServiceExists(proxyName)) { isServiceDeployed = true; log.info(proxyName + " Proxy Deployed in " + time + " millis"); break; } try { Thread.sleep(500); } catch (InterruptedException ignored) { } } return isServiceDeployed; } /** * @param backEndUrl * @param sessionCookie * @param endpointName * @return * @throws org.wso2.carbon.endpoint.stub.types.EndpointAdminEndpointAdminException * @throws java.rmi.RemoteException */ public boolean isEndpointDeployed(String backEndUrl, String sessionCookie, String endpointName) throws EndpointAdminEndpointAdminException, RemoteException { EndPointAdminClient endPointAdminClient = new EndPointAdminClient(backEndUrl, sessionCookie); log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for Endpoint " + endpointName); boolean isEndpointExist = false; Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { String[] endpoints = endPointAdminClient.getEndpointNames(); if (endpoints != null && endpoints.length > 0) { for (String endpoint : endpoints) { if (endpointName.equals(endpoint)) { isEndpointExist = true; log.info(endpointName + " Endpoint Found in " + time + " millis"); break; } } } if (isEndpointExist) { break; } try { Thread.sleep(500); } catch (InterruptedException e) { //ignore } } return isEndpointExist; } /** * @param backEndUrl * @param sessionCookie * @param messageProcessorName * @return * @throws org.wso2.carbon.sequences.stub.types.SequenceEditorException * @throws java.rmi.RemoteException */ public boolean isMessageProcessorDeployed(String backEndUrl, String sessionCookie, String messageProcessorName) throws SequenceEditorException, RemoteException { MessageProcessorClient messageProcessorClient = new MessageProcessorClient(backEndUrl, sessionCookie); log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for Message Processor " + messageProcessorName); boolean isMessageStoreExist = false; Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { String[] messageProcessors = messageProcessorClient.getMessageProcessorNames(); if (messageProcessors != null && messageProcessors.length > 0) { for (String mp : messageProcessors) { if (mp.equals(messageProcessorName)) { isMessageStoreExist = true; log.info(messageProcessorName + " Message Processor Found in " + time + " millis"); break; } } } if (isMessageStoreExist) { break; } try { Thread.sleep(500); } catch (InterruptedException e) { //ignore } } return isMessageStoreExist; } /** * @param backEndUrl * @param sessionCookie * @param sequenceName * @return * @throws org.wso2.carbon.sequences.stub.types.SequenceEditorException * @throws java.rmi.RemoteException */ public boolean isSequenceDeployed(String backEndUrl, String sessionCookie, String sequenceName) throws SequenceEditorException, RemoteException { SequenceAdminServiceClient sequenceAdminServiceClient = new SequenceAdminServiceClient(backEndUrl, sessionCookie); log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for Sequence " + sequenceName); boolean isSequenceExist = false; Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { String[] sequences = sequenceAdminServiceClient.getSequences(); if (sequences != null && sequences.length > 0) { for (String sequence : sequences) { if (sequence.equals(sequenceName)) { isSequenceExist = true; log.info(sequenceName + " Sequence Found in " + time + " millis"); break; } } } if (isSequenceExist) { break; } try { Thread.sleep(500); } catch (InterruptedException e) { //ignore } } return isSequenceExist; } /** * @param backEndUrl * @param sessionCookie * @param messageStoreName * @return * @throws org.wso2.carbon.sequences.stub.types.SequenceEditorException * @throws java.rmi.RemoteException */ public boolean isMessageStoreDeployed(String backEndUrl, String sessionCookie, String messageStoreName) throws SequenceEditorException, RemoteException { MessageStoreAdminClient messageStoreAdminClient = new MessageStoreAdminClient(backEndUrl, sessionCookie); log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for Message Store " + messageStoreName); boolean isMessageStoreExist = false; Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { String[] messageStores = messageStoreAdminClient.getMessageStores(); if (messageStores != null && messageStores.length > 0) { for (String ms : messageStores) { if (ms.equals(messageStoreName)) { isMessageStoreExist = true; log.info(messageStoreName + " Message Store Found in " + time + " millis"); break; } } } if (isMessageStoreExist) { break; } try { Thread.sleep(500); } catch (InterruptedException e) { //ignore } } return isMessageStoreExist; } public boolean isSequenceTemplateDeployed(String backEndUrl, String sessionCookie, String sequenceTemplateName) throws RemoteException { SequenceTemplateAdminServiceClient sequenceTemplateAdminServiceClient = new SequenceTemplateAdminServiceClient(backEndUrl, sessionCookie); log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for Sequence Template " + sequenceTemplateName); boolean isSequenceTmpFound = false; Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { String[] templates = sequenceTemplateAdminServiceClient.getSequenceTemplates(); if (templates != null && templates.length > 0) { for (String tmpl : templates) { if (tmpl.equals(sequenceTemplateName)) { isSequenceTmpFound = true; log.info(sequenceTemplateName + " Sequence Template Found in " + time + " millis"); break; } } } if (isSequenceTmpFound) { break; } try { Thread.sleep(500); } catch (InterruptedException e) { //ignore } } return isSequenceTmpFound; } public boolean isEndpointTemplateDeployed(String backEndUrl, String sessionCookie, String endpointTemplateName) throws RemoteException { EndpointTemplateAdminServiceClient endpointTemplateAdminServiceClient = new EndpointTemplateAdminServiceClient(backEndUrl, sessionCookie); log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for Endpoint Template " + endpointTemplateName); boolean isEndpointTmpFound = false; Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { String[] templates = endpointTemplateAdminServiceClient.getEndpointTemplates(); if (templates != null && templates.length > 0) { for (String tmpl : templates) { if (tmpl.equals(endpointTemplateName)) { isEndpointTmpFound = true; log.info(endpointTemplateName + " Endpoint Template Found in " + time + " millis"); break; } } } if (isEndpointTmpFound) { break; } try { Thread.sleep(500); } catch (InterruptedException e) { //ignore } } return isEndpointTmpFound; } public boolean isApiDeployed(String backEndUrl, String sessionCookie, String apiName) throws RemoteException, RestApiAdminAPIException { RestApiAdminClient apiAdminClient = new RestApiAdminClient(backEndUrl, sessionCookie); log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for API " + apiName); boolean isApiFound = false; Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { String[] apiList = apiAdminClient.getApiNames(); if (apiList != null && apiList.length > 0) { for (String restApi : apiList) { if (restApi.equals(apiName)) { isApiFound = true; log.info(apiName + " API Found in " + time + " millis"); break; } } } if (isApiFound) { break; } try { Thread.sleep(500); } catch (InterruptedException e) { //ignore } } return isApiFound; } public boolean isPriorityExecutorDeployed(String backEndUrl, String sessionCookie, String executorName) throws RemoteException { PriorityMediationAdminClient priorityMediationAdminClient = new PriorityMediationAdminClient(backEndUrl, sessionCookie); log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for Priority Executor " + executorName); boolean isExecutorFound = false; Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { String[] executorList = priorityMediationAdminClient.getExecutorList(); if (executorList != null && executorList.length > 0) { for (String executor : executorList) { if (executor.equals(executorName)) { isExecutorFound = true; log.info(executorName + " Priority Executor Found in " + time + " millis"); break; } } } if (isExecutorFound) { break; } try { Thread.sleep(500); } catch (InterruptedException e) { //ignore } } return isExecutorFound; } /** * Wait for task to to deploy and return true once it deploy * * @param backEndUrl * @param sessionCookie * @param taskName * @return * @throws java.rmi.RemoteException * @throws org.wso2.carbon.task.stub.TaskManagementException */ public boolean isScheduleTaskDeployed(String backEndUrl, String sessionCookie, String taskName) throws RemoteException, TaskManagementException { log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for Task deployment " + taskName); boolean isTaskDeployed = false; TaskAdminClient taskAdminClient = new TaskAdminClient(backEndUrl, sessionCookie); Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { if (taskAdminClient.getScheduleTaskList().contains(taskName)) { isTaskDeployed = true; log.info(taskName + " Task Deployed in " + time + " millis"); break; } try { Thread.sleep(500); } catch (InterruptedException ignored) { } } return isTaskDeployed; } /** * @param backEndUrl * @param sessionCookie * @param proxyName * @return * @throws java.rmi.RemoteException */ public boolean isProxyServiceExist(String backEndUrl, String sessionCookie, String proxyName) throws RemoteException { ServiceAdminClient adminServiceService = new ServiceAdminClient(backEndUrl, sessionCookie); return adminServiceService.isServiceExists(proxyName); } /** * @param backEndUrl * @param sessionCookie * @param localEntryName * @return * @throws org.wso2.carbon.localentry.stub.types.LocalEntryAdminException * @throws java.rmi.RemoteException */ public boolean isLocalEntryExist(String backEndUrl, String sessionCookie, String localEntryName) throws LocalEntryAdminException, RemoteException { LocalEntriesAdminClient localEntryAdminServiceClient = new LocalEntriesAdminClient(backEndUrl, sessionCookie); String[] localEntries = localEntryAdminServiceClient.getEntryNames(); if (localEntries == null || localEntries.length == 0) { return false; } return ArrayUtils.contains(localEntries, localEntryName); } /** * @param backEndUrl * @param sessionCookie * @param sequenceName * @return * @throws org.wso2.carbon.sequences.stub.types.SequenceEditorException * @throws java.rmi.RemoteException */ public boolean isSequenceExist(String backEndUrl, String sessionCookie, String sequenceName) throws SequenceEditorException, RemoteException { SequenceAdminServiceClient sequenceAdminServiceClient = new SequenceAdminServiceClient(backEndUrl, sessionCookie); String[] sequences = sequenceAdminServiceClient.getSequences(); if (sequences == null || sequences.length == 0) { return false; } return ArrayUtils.contains(sequences, sequenceName); } /** * @param backEndUrl * @param sessionCookie * @param endpointName * @return * @throws org.wso2.carbon.endpoint.stub.types.EndpointAdminEndpointAdminException * @throws java.rmi.RemoteException */ public boolean isEndpointExist(String backEndUrl, String sessionCookie, String endpointName) throws EndpointAdminEndpointAdminException, RemoteException { EndPointAdminClient endPointAdminClient = new EndPointAdminClient(backEndUrl, sessionCookie); String[] endpoints = endPointAdminClient.getEndpointNames(); if (endpoints == null || endpoints.length == 0) { return false; } return ArrayUtils.contains(endpoints, endpointName); } /** * @param backEndUrl * @param sessionCookie * @param messageProcessor * @return * @throws java.rmi.RemoteException */ public boolean isMessageStoreExist(String backEndUrl, String sessionCookie, String messageProcessor) throws RemoteException { MessageStoreAdminClient messageStoreAdminClient = new MessageStoreAdminClient(backEndUrl, sessionCookie); return ArrayUtils.contains(messageStoreAdminClient.getMessageStores(), messageProcessor); } /** * @param backEndUrl * @param sessionCookie * @param messageProcessor * @return * @throws java.rmi.RemoteException */ public boolean isMessageProcessorExist(String backEndUrl, String sessionCookie, String messageProcessor) throws RemoteException { MessageProcessorClient messageProcessorClient = new MessageProcessorClient(backEndUrl, sessionCookie); return ArrayUtils.contains(messageProcessorClient.getMessageProcessorNames(), messageProcessor); } public boolean isSequenceTemplateExist(String backEndUrl, String sessionCookie, String sequenceTemplate) throws RemoteException { SequenceTemplateAdminServiceClient sequenceTemplateAdminServiceClient = new SequenceTemplateAdminServiceClient(backEndUrl, sessionCookie); return ArrayUtils.contains(sequenceTemplateAdminServiceClient.getSequenceTemplates(), sequenceTemplate); } public boolean isEndpointTemplateExist(String backEndUrl, String sessionCookie, String endpointTemplate) throws RemoteException { EndpointTemplateAdminServiceClient endpointTemplateAdminServiceClient = new EndpointTemplateAdminServiceClient(backEndUrl, sessionCookie); return ArrayUtils.contains(endpointTemplateAdminServiceClient.getEndpointTemplates(), endpointTemplate); } public boolean isApiExist(String backEndUrl, String sessionCookie, String apiName) throws RemoteException, RestApiAdminAPIException { RestApiAdminClient apiAdminClient = new RestApiAdminClient(backEndUrl, sessionCookie); return ArrayUtils.contains(apiAdminClient.getApiNames(), apiName); } public boolean isPriorityExecutorExist(String backEndUrl, String sessionCookie, String priorityExecutorName) throws RemoteException { PriorityMediationAdminClient priorityMediationAdminClient = new PriorityMediationAdminClient(backEndUrl, sessionCookie); return ArrayUtils.contains(priorityMediationAdminClient.getExecutorList(), priorityExecutorName); } public boolean isScheduleTaskExist(String backEndUrl, String sessionCookie, String taskName) throws RemoteException, TaskManagementException { TaskAdminClient taskAdminClient = new TaskAdminClient(backEndUrl, sessionCookie); return taskAdminClient.getScheduleTaskList().contains(taskName); } /** * @param backEndUrl * @param sessionCookie * @param proxyServiceName * @throws org.wso2.carbon.proxyadmin.stub.ProxyServiceAdminProxyAdminException * @throws java.rmi.RemoteException */ public void deleteProxyService(String backEndUrl, String sessionCookie, String proxyServiceName) throws ProxyServiceAdminProxyAdminException, RemoteException { ProxyServiceAdminClient proxyAdmin = new ProxyServiceAdminClient(backEndUrl, sessionCookie); proxyAdmin.deleteProxy(proxyServiceName); Assert.assertTrue(isProxyUnDeployed(backEndUrl, sessionCookie, proxyServiceName), "Proxy service undeployment failed"); } /** * @param backEndUrl * @param sessionCookie * @param localEntryName * @throws org.wso2.carbon.localentry.stub.types.LocalEntryAdminException * @throws java.rmi.RemoteException */ public void deleteLocalEntry(String backEndUrl, String sessionCookie, String localEntryName) throws LocalEntryAdminException, RemoteException { LocalEntriesAdminClient localEntryAdminServiceClient = new LocalEntriesAdminClient(backEndUrl, sessionCookie); Assert.assertTrue(localEntryAdminServiceClient.deleteLocalEntry(localEntryName), "LocalEntry Deletion failed"); Assert.assertTrue(isLocalEntryUnDeployed(backEndUrl, sessionCookie, localEntryName), "LocalEntry undeployment failed"); } /** * @param backEndUrl * @param sessionCookie * @param endpointName * @throws org.wso2.carbon.endpoint.stub.types.EndpointAdminEndpointAdminException * @throws java.rmi.RemoteException */ public void deleteEndpoint(String backEndUrl, String sessionCookie, String endpointName) throws EndpointAdminEndpointAdminException, RemoteException { EndPointAdminClient endPointAdminClient = new EndPointAdminClient(backEndUrl, sessionCookie); Assert.assertTrue(endPointAdminClient.deleteEndpoint(endpointName), "Endpoint deletion failed"); Assert.assertTrue(isEndpointUnDeployed(backEndUrl, sessionCookie, endpointName), "Endpoint undeployment failed"); } /** * @param backEndUrl * @param sessionCookie * @param sequenceName * @throws org.wso2.carbon.sequences.stub.types.SequenceEditorException * @throws java.rmi.RemoteException */ public void deleteSequence(String backEndUrl, String sessionCookie, String sequenceName) throws SequenceEditorException, RemoteException { SequenceAdminServiceClient sequenceAdminServiceClient = new SequenceAdminServiceClient(backEndUrl, sessionCookie); sequenceAdminServiceClient.deleteSequence(sequenceName); Assert.assertTrue(isSequenceUnDeployed(backEndUrl, sessionCookie, sequenceName), "Sequence undeployment failed"); } /** * @param backEndUrl * @param sessionCookie * @param messageStore * @throws java.rmi.RemoteException */ public void deleteMessageStore(String backEndUrl, String sessionCookie, String messageStore) throws RemoteException, SequenceEditorException { MessageStoreAdminClient messageStoreAdminClient = new MessageStoreAdminClient(backEndUrl, sessionCookie); messageStoreAdminClient.deleteMessageStore(messageStore); Assert.assertTrue(isMessageStoreUnDeployed(backEndUrl, sessionCookie, messageStore), "Message Store undeployment failed"); } /** * @param backEndUrl * @param sessionCookie * @param messageProcessor * @throws java.rmi.RemoteException */ public void deleteMessageProcessor(String backEndUrl, String sessionCookie, String messageProcessor) throws RemoteException, SequenceEditorException { MessageProcessorClient messageProcessorClient = new MessageProcessorClient(backEndUrl, sessionCookie); messageProcessorClient.deleteMessageProcessor(messageProcessor); Assert.assertTrue(isMessageProcessorUnDeployed(backEndUrl, sessionCookie, messageProcessor), "Message Processor undeployment failed"); } public void deleteEndpointTemplate(String backEndUrl, String sessionCookie, String endpointTemplate) throws RemoteException, SequenceEditorException, EndpointAdminEndpointAdminException { EndpointTemplateAdminServiceClient endpointTemplateAdminServiceClient = new EndpointTemplateAdminServiceClient(backEndUrl, sessionCookie); endpointTemplateAdminServiceClient.deleteEndpointTemplate(endpointTemplate); Assert.assertTrue(isEndpointTemplateUnDeployed(backEndUrl, sessionCookie, endpointTemplate), "Endpoint Template undeployment failed"); } public void deleteSequenceTemplate(String backEndUrl, String sessionCookie, String sequenceTemplateName) throws RemoteException, SequenceEditorException, EndpointAdminEndpointAdminException { SequenceTemplateAdminServiceClient sequenceTemplateAdminServiceClient = new SequenceTemplateAdminServiceClient(backEndUrl, sessionCookie); sequenceTemplateAdminServiceClient.deleteTemplate(sequenceTemplateName); Assert.assertTrue(isSequenceTemplateUnDeployed(backEndUrl, sessionCookie, sequenceTemplateName), "Sequence Template undeployment failed"); } public void deleteApi(String backEndUrl, String sessionCookie, String apiName) throws RemoteException, RestApiAdminAPIException { RestApiAdminClient apiAdminClient = new RestApiAdminClient(backEndUrl, sessionCookie); apiAdminClient.deleteApi(apiName); Assert.assertTrue(isApiUnDeployed(backEndUrl, sessionCookie, apiName), "API undeployment failed"); } public void deletePriorityExecutor(String backEndUrl, String sessionCookie, String executorName) throws RemoteException { PriorityMediationAdminClient priorityMediationAdminClient = new PriorityMediationAdminClient(backEndUrl, sessionCookie); priorityMediationAdminClient.remove(executorName); Assert.assertTrue(isPriorityExecutorUnDeployed(backEndUrl, sessionCookie, executorName), "Priority Executor undeployment failed"); } /** * @param backEndUrl * @param sessionCookie * @param taskName name of the ScheduleTask * @param group group of the ScheduleTask * @throws org.wso2.carbon.task.stub.TaskManagementException * @throws java.rmi.RemoteException */ public void deleteScheduleTask(String backEndUrl, String sessionCookie, String taskName, String group) throws TaskManagementException, RemoteException { TaskAdminClient taskAdminClient = new TaskAdminClient(backEndUrl, sessionCookie); taskAdminClient.deleteTask(taskName, group); Assert.assertTrue(isScheduleTaskUnDeployed(backEndUrl, sessionCookie, taskName), "ScheduleTask deployment failed"); } /** * waiting for proxy to undeploy * * @param backEndUrl * @param sessionCookie * @param proxyName * @return * @throws java.rmi.RemoteException */ public boolean isProxyUnDeployed(String backEndUrl, String sessionCookie, String proxyName) throws RemoteException { log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for Proxy undeployment"); ServiceAdminClient adminServiceService = new ServiceAdminClient(backEndUrl, sessionCookie); boolean isServiceDeleted = false; Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { if (!adminServiceService.isServiceExists(proxyName)) { isServiceDeleted = true; log.info(proxyName + " Proxy undeployed in " + time + " millis"); break; } try { Thread.sleep(500); } catch (InterruptedException e) { } } return isServiceDeleted; } public boolean isMessageStoreUnDeployed(String backEndUrl, String sessionCookie, String messageStoreName) throws SequenceEditorException, RemoteException { MessageStoreAdminClient messageStoreAdminClient = new MessageStoreAdminClient(backEndUrl, sessionCookie); log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for Undeployment Message Store " + messageStoreName); boolean isMessageStoreDeleted = false; Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { String[] mStores = messageStoreAdminClient.getMessageStores(); if (!ArrayUtils.contains(mStores, messageStoreName)) { isMessageStoreDeleted = true; break; } try { Thread.sleep(500); } catch (InterruptedException e) { //ignore } } return isMessageStoreDeleted; } public boolean isMessageProcessorUnDeployed(String backEndUrl, String sessionCookie, String messageProcessorName) throws SequenceEditorException, RemoteException { MessageProcessorClient messageProcessorClient = new MessageProcessorClient(backEndUrl, sessionCookie); log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for Undeployment Message Processor " + messageProcessorName); boolean isMessageProcessorDeleted = false; Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { String[] mProcessors = messageProcessorClient.getMessageProcessorNames(); if (!ArrayUtils.contains(mProcessors, messageProcessorName)) { isMessageProcessorDeleted = true; break; } try { Thread.sleep(500); } catch (InterruptedException e) { //ignore } } return isMessageProcessorDeleted; } /** * @param backEndUrl * @param sessionCookie * @param localEntryName * @return * @throws org.wso2.carbon.localentry.stub.types.LocalEntryAdminException * @throws java.rmi.RemoteException */ public boolean isLocalEntryDeployed(String backEndUrl, String sessionCookie, String localEntryName) throws LocalEntryAdminException, RemoteException { LocalEntriesAdminClient localEntryAdminServiceClient = new LocalEntriesAdminClient(backEndUrl, sessionCookie); log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for LocalEntry " + localEntryName); boolean isLocalEntryExist = false; Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { String[] localEntries = localEntryAdminServiceClient.getEntryNames(); if (localEntries != null && localEntries.length > 0) { for (String localEntry : localEntries) { if (localEntryName.equals(localEntry)) { isLocalEntryExist = true; log.info(localEntryName + " LocalEntry Found in " + time + " millis"); break; } } } if (isLocalEntryExist) { break; } try { Thread.sleep(500); } catch (InterruptedException e) { //ignore } } return isLocalEntryExist; } /** * @param backEndUrl * @param sessionCookie * @param localEntryName * @return * @throws org.wso2.carbon.localentry.stub.types.LocalEntryAdminException * @throws java.rmi.RemoteException */ public boolean isLocalEntryUnDeployed(String backEndUrl, String sessionCookie, String localEntryName) throws LocalEntryAdminException, RemoteException { LocalEntriesAdminClient localEntryAdminServiceClient = new LocalEntriesAdminClient(backEndUrl, sessionCookie); log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for Undeployment LocalEntry " + localEntryName); boolean isLocalEntryUnDeployed = false; Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { String[] localEntries = localEntryAdminServiceClient.getEntryNames(); if (!ArrayUtils.contains(localEntries, localEntryName)) { isLocalEntryUnDeployed = true; break; } try { Thread.sleep(500); } catch (InterruptedException e) { //ignore } } return isLocalEntryUnDeployed; } /** * @param backEndUrl * @param sessionCookie * @param sequenceName * @return * @throws org.wso2.carbon.sequences.stub.types.SequenceEditorException * @throws java.rmi.RemoteException */ public boolean isSequenceUnDeployed(String backEndUrl, String sessionCookie, String sequenceName) throws SequenceEditorException, RemoteException { SequenceAdminServiceClient sequenceAdminServiceClient = new SequenceAdminServiceClient(backEndUrl, sessionCookie); log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for Undeployment Sequence " + sequenceName); boolean isSequenceUnDeployed = false; Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { String[] sequences = sequenceAdminServiceClient.getSequences(); if (!ArrayUtils.contains(sequences, sequenceName)) { isSequenceUnDeployed = true; break; } try { Thread.sleep(500); } catch (InterruptedException e) { //ignore } } return isSequenceUnDeployed; } /** * @param backEndUrl * @param sessionCookie * @param endpointName * @return * @throws org.wso2.carbon.endpoint.stub.types.EndpointAdminEndpointAdminException * @throws java.rmi.RemoteException */ public boolean isEndpointUnDeployed(String backEndUrl, String sessionCookie, String endpointName) throws EndpointAdminEndpointAdminException, RemoteException { EndPointAdminClient endPointAdminClient = new EndPointAdminClient(backEndUrl, sessionCookie); log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for Undeployment Endpoint " + endpointName); boolean isEndpointUnDeployed = false; Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { String[] endpoints = endPointAdminClient.getEndpointNames(); if (!ArrayUtils.contains(endpoints, endpointName)) { isEndpointUnDeployed = true; break; } try { Thread.sleep(500); } catch (InterruptedException e) { //ignore } } return isEndpointUnDeployed; } public boolean isEndpointTemplateUnDeployed(String backEndUrl, String sessionCookie, String endpointTemplateName) throws EndpointAdminEndpointAdminException, RemoteException { EndpointTemplateAdminServiceClient endpointTemplateAdminServiceClient = new EndpointTemplateAdminServiceClient(backEndUrl, sessionCookie); log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for Undeployment Endpoint Template " + endpointTemplateName); boolean isEndpointTemplateUnDeployed = false; Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { String[] endpointTemplates = endpointTemplateAdminServiceClient.getEndpointTemplates(); if (!ArrayUtils.contains(endpointTemplates, endpointTemplateName)) { isEndpointTemplateUnDeployed = true; break; } try { Thread.sleep(500); } catch (InterruptedException e) { //ignore } } return isEndpointTemplateUnDeployed; } public boolean isSequenceTemplateUnDeployed(String backEndUrl, String sessionCookie, String sequenceTemplateName) throws EndpointAdminEndpointAdminException, RemoteException { SequenceTemplateAdminServiceClient sequenceTemplateAdminServiceClient = new SequenceTemplateAdminServiceClient(backEndUrl, sessionCookie); log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for Undeployment Sequence Template " + sequenceTemplateName); boolean isSequenceTemplateUnDeployed = false; Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { String[] sequenceTemplates = sequenceTemplateAdminServiceClient.getSequenceTemplates(); if (!ArrayUtils.contains(sequenceTemplates, sequenceTemplateName)) { isSequenceTemplateUnDeployed = true; break; } try { Thread.sleep(500); } catch (InterruptedException e) { //ignore } } return isSequenceTemplateUnDeployed; } public boolean isApiUnDeployed(String backEndUrl, String sessionCookie, String apiName) throws RemoteException, RestApiAdminAPIException { RestApiAdminClient apiAdminClient = new RestApiAdminClient(backEndUrl, sessionCookie); log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for Undeployment API " + apiName); boolean isApiUnDeployed = false; Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { String[] apiList = apiAdminClient.getApiNames(); if (!ArrayUtils.contains(apiList, apiName)) { isApiUnDeployed = true; break; } try { Thread.sleep(500); } catch (InterruptedException e) { //ignore } } return isApiUnDeployed; } public boolean isPriorityExecutorUnDeployed(String backEndUrl, String sessionCookie, String executorName) throws RemoteException { PriorityMediationAdminClient priorityMediationAdminClient = new PriorityMediationAdminClient(backEndUrl, sessionCookie); log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for Undeployment Priority Executor " + executorName); boolean isExecutorUnDeployed = false; Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { String[] executorList = priorityMediationAdminClient.getExecutorList(); if (!ArrayUtils.contains(executorList, executorName)) { isExecutorUnDeployed = true; break; } try { Thread.sleep(500); } catch (InterruptedException e) { //ignore } } return isExecutorUnDeployed; } /** * wait for task to undeploy and return true once it is undeployed * * @param backEndUrl * @param sessionCookie * @param taskName * @return * @throws java.rmi.RemoteException * @throws org.wso2.carbon.task.stub.TaskManagementException */ public boolean isScheduleTaskUnDeployed(String backEndUrl, String sessionCookie, String taskName) throws RemoteException, TaskManagementException { log.info("waiting " + SERVICE_DEPLOYMENT_DELAY + " millis for Task Undeployment " + taskName); boolean isTaskUnDeployed = false; TaskAdminClient taskAdminClient = new TaskAdminClient(backEndUrl, sessionCookie); Calendar startTime = Calendar.getInstance(); long time; while ((time = (Calendar.getInstance().getTimeInMillis() - startTime.getTimeInMillis())) < SERVICE_DEPLOYMENT_DELAY) { if (!taskAdminClient.getScheduleTaskList().contains(taskName)) { isTaskUnDeployed = true; log.info(taskName + " Task UnDeployed in " + time + " millis"); break; } try { Thread.sleep(500); } catch (InterruptedException ignored) { } } return isTaskUnDeployed; } /** * @param synapseConfig * @param backendURL * @param sessionCookie * @throws org.wso2.carbon.localentry.stub.types.LocalEntryAdminException * @throws java.rmi.RemoteException * @throws org.wso2.carbon.endpoint.stub.types.EndpointAdminEndpointAdminException * @throws org.wso2.carbon.sequences.stub.types.SequenceEditorException */ public void verifySynapseDeployment(OMElement synapseConfig, String backendURL, String sessionCookie) throws LocalEntryAdminException, RemoteException, EndpointAdminEndpointAdminException, SequenceEditorException, RestApiAdminAPIException { Iterator<OMElement> localEntries = synapseConfig.getChildrenWithLocalName(LOCAL_ENTRY); while (localEntries.hasNext()) { String le = localEntries.next().getAttributeValue(new QName(KEY)); Assert.assertTrue(isLocalEntryDeployed(backendURL, sessionCookie, le), le + " LocalEntry deployment not found or time out"); } Iterator<OMElement> endpoints = synapseConfig.getChildrenWithLocalName(ENDPOINT); while (endpoints.hasNext()) { String ep = endpoints.next().getAttributeValue(new QName(NAME)); Assert.assertTrue(isEndpointDeployed(backendURL, sessionCookie, ep), ep + " Endpoint deployment not found or time out"); } Iterator<OMElement> sequences = synapseConfig.getChildrenWithLocalName(SEQUENCE); while (sequences.hasNext()) { String sqn = sequences.next().getAttributeValue(new QName(NAME)); Assert.assertTrue(isSequenceDeployed(backendURL, sessionCookie, sqn), sqn + " Sequence deployment not found or time out"); } Iterator<OMElement> proxies = synapseConfig.getChildrenWithLocalName(PROXY); while (proxies.hasNext()) { String proxy = proxies.next().getAttributeValue(new QName(NAME)); Assert.assertTrue(isProxyDeployed(backendURL, sessionCookie, proxy), proxy + " Proxy Deployment not found or time out"); } Iterator<OMElement> messageStores = synapseConfig.getChildrenWithLocalName(MESSAGE_STORE); while (messageStores.hasNext()) { String mStore = messageStores.next().getAttributeValue(new QName(NAME)); Assert.assertTrue(isMessageStoreDeployed(backendURL, sessionCookie, mStore), mStore + " Message Store Deployment not found or time out"); } Iterator<OMElement> messageProcessor = synapseConfig.getChildrenWithLocalName(MESSAGE_PROCESSOR); while (messageProcessor.hasNext()) { String mProcessor = messageProcessor.next().getAttributeValue(new QName(NAME)); Assert.assertTrue(isMessageProcessorDeployed(backendURL, sessionCookie, mProcessor), mProcessor + " Message Processor Deployment not found or time out"); } Iterator<OMElement> templates = synapseConfig.getChildrenWithLocalName(TEMPLATE); while (templates.hasNext()) { OMElement template = templates.next(); String templateName = template.getAttributeValue(new QName(NAME)); if (template.getFirstChildWithName(new QName(template.getNamespace().getNamespaceURI(), SEQUENCE)) != null) { Assert.assertTrue(isSequenceTemplateDeployed(backendURL, sessionCookie, templateName), templateName + " Sequence Template Deployment not found or time out"); } else { Assert.assertTrue(isEndpointTemplateDeployed(backendURL, sessionCookie, templateName), templateName + " Endpoint Template Deployment not found or time out"); } log.info("Template Uploaded"); } Iterator<OMElement> apiList = synapseConfig.getChildrenWithLocalName(API); while (apiList.hasNext()) { String apiName = apiList.next().getAttributeValue(new QName(NAME)); Assert.assertTrue(isApiDeployed(backendURL, sessionCookie, apiName), apiName + " API Deployment not found or time out"); } Iterator<OMElement> executorList = synapseConfig.getChildrenWithLocalName(PRIORITY_EXECUTOR); while (executorList.hasNext()) { String executorName = executorList.next().getAttributeValue(new QName(NAME)); Assert.assertTrue(isPriorityExecutorDeployed(backendURL, sessionCookie, executorName), executorName + " Priority Executor Deployment not found or time out"); } } public void deleteArtifact(OMElement synapseConfig, String backendURL, String sessionCookie) throws Exception { ProxyServiceAdminClient proxyAdmin = new ProxyServiceAdminClient(backendURL, sessionCookie); EndPointAdminClient endPointAdminClient = new EndPointAdminClient(backendURL, sessionCookie); SequenceAdminServiceClient sequenceAdminClient = new SequenceAdminServiceClient(backendURL, sessionCookie); LocalEntriesAdminClient localEntryAdminServiceClient = new LocalEntriesAdminClient(backendURL, sessionCookie); MessageProcessorClient messageProcessorClient = new MessageProcessorClient(backendURL, sessionCookie); MessageStoreAdminClient messageStoreAdminClient = new MessageStoreAdminClient(backendURL, sessionCookie); ServiceAdminClient adminServiceService = new ServiceAdminClient(backendURL, sessionCookie); RestApiAdminClient apiAdminClient = new RestApiAdminClient(backendURL, sessionCookie); PriorityMediationAdminClient priorityMediationAdminClient = new PriorityMediationAdminClient(backendURL, sessionCookie); Iterator<OMElement> localEntries = synapseConfig.getChildrenWithLocalName(LOCAL_ENTRY); while (localEntries.hasNext()) { OMElement localEntry = localEntries.next(); String le = localEntry.getAttributeValue(new QName(KEY)); if (ArrayUtils.contains(localEntryAdminServiceClient.getEntryNames(), le)) { Assert.assertTrue(localEntryAdminServiceClient.deleteLocalEntry(le), le + " Local Entry deletion failed"); Assert.assertTrue(isLocalEntryUnDeployed(backendURL, sessionCookie, le), le + " Local Entry undeployment failed"); } } Iterator<OMElement> endpoints = synapseConfig.getChildrenWithLocalName(ENDPOINT); while (endpoints.hasNext()) { OMElement endpoint = endpoints.next(); String ep = endpoint.getAttributeValue(new QName(NAME)); if (ArrayUtils.contains(endPointAdminClient.getEndpointNames(), ep)) { Assert.assertTrue(endPointAdminClient.deleteEndpoint(ep), ep + " Endpoint deletion failed"); Assert.assertTrue(isEndpointUnDeployed(backendURL, sessionCookie, ep), ep + " Endpoint undeployment failed"); } } Iterator<OMElement> sequences = synapseConfig.getChildrenWithLocalName(SEQUENCE); while (sequences.hasNext()) { OMElement sequence = sequences.next(); String sqn = sequence.getAttributeValue(new QName(NAME)); if (sqn.equalsIgnoreCase("fault") || sqn.equalsIgnoreCase("main")) { continue; } if (ArrayUtils.contains(sequenceAdminClient.getSequences(), sqn)) { sequenceAdminClient.deleteSequence(sqn); Assert.assertTrue(isSequenceUnDeployed(backendURL, sessionCookie, sqn), sqn + " Sequence undeployment failed"); } } Iterator<OMElement> proxies = synapseConfig.getChildrenWithLocalName(PROXY); while (proxies.hasNext()) { OMElement proxy = proxies.next(); String proxyName = proxy.getAttributeValue(new QName(NAME)); if (adminServiceService.isServiceExists(proxyName)) { proxyAdmin.deleteProxy(proxyName); Assert.assertTrue(isProxyUnDeployed(backendURL, sessionCookie, proxyName), proxyName + " Undeployment failed"); } } Iterator<OMElement> messageStores = synapseConfig.getChildrenWithLocalName(MESSAGE_STORE); while (messageStores.hasNext()) { OMElement messageStore = messageStores.next(); String mStore = messageStore.getAttributeValue(new QName(NAME)); if (ArrayUtils.contains(messageStoreAdminClient.getMessageStores(), mStore)) { messageStoreAdminClient.deleteMessageStore(mStore); Assert.assertTrue(isMessageStoreUnDeployed(backendURL, sessionCookie, mStore), mStore + " Message Store undeployment failed"); } } Iterator<OMElement> messageProcessors = synapseConfig.getChildrenWithLocalName(MESSAGE_PROCESSOR); while (messageProcessors.hasNext()) { OMElement messageProcessor = messageProcessors.next(); String mProcessor = messageProcessor.getAttributeValue(new QName(NAME)); if (ArrayUtils.contains(messageProcessorClient.getMessageProcessorNames(), mProcessor)) { messageProcessorClient.deleteMessageProcessor(mProcessor); Assert.assertTrue(isMessageProcessorUnDeployed(backendURL, sessionCookie, mProcessor) , mProcessor + " Message Processor undeployment failed"); } } Iterator<OMElement> templates = synapseConfig.getChildrenWithLocalName(TEMPLATE); while (templates.hasNext()) { OMElement template = templates.next(); String templateName = template.getAttributeValue(new QName(NAME)); if (template.getFirstChildWithName(new QName(template.getNamespace().getNamespaceURI(), SEQUENCE)) != null) { deleteSequenceTemplate(backendURL, sessionCookie, templateName); } else { deleteEndpointTemplate(backendURL, sessionCookie, templateName); } log.info("Template UnUploaded"); } Iterator<OMElement> apiList = synapseConfig.getChildrenWithLocalName(API); while (apiList.hasNext()) { OMElement api = apiList.next(); String apiName = api.getAttributeValue(new QName(NAME)); if (ArrayUtils.contains(apiAdminClient.getApiNames(), apiName)) { apiAdminClient.deleteApi(apiName); Assert.assertTrue(isApiUnDeployed(backendURL, sessionCookie, apiName) , apiName + " API undeployment failed"); } } Iterator<OMElement> executorList = synapseConfig.getChildrenWithLocalName(PRIORITY_EXECUTOR); while (executorList.hasNext()) { OMElement executor = executorList.next(); String executorName = executor.getAttributeValue(new QName(NAME)); if (ArrayUtils.contains(priorityMediationAdminClient.getExecutorList(), executorName)) { priorityMediationAdminClient.remove(executorName); Assert.assertTrue(isPriorityExecutorUnDeployed(backendURL, sessionCookie, executorName) , executorName + " Priority Executor undeployment failed"); } } log.info("Synapse configuration unDeployed"); } public void deploySynapseArtifactsFromFileSystem(String directoryPath, String backendURL, String sessionCookie) throws Exception { File[] fileList = new File(directoryPath).listFiles(); HashMap<String, File[]> fileStructure = new HashMap<String, File[]>(); for (int x = 0; x <= fileList.length - 1; x++) { File FileName = fileList[x]; fileStructure.put(FileName.getName(), FileName.listFiles()); } for (Map.Entry<String, File[]> stringEntry : fileStructure.entrySet()) { Map.Entry entry = (Map.Entry) stringEntry; File[] fileArr = (File[]) entry.getValue(); if (entry.getKey().equals("api")) { OMElement apiOmElement; for (File aFileArr : fileArr) { //deploying the api to esb String filePathArr[] = aFileArr.getAbsolutePath().split(TestConfigurationProvider.getResourceLocation()); apiOmElement = loadResource(filePathArr[1]); String apiName = apiOmElement.getAttributeValue(new QName("name")); if (isApiExist(backendURL, sessionCookie, apiName)) { deleteApi(backendURL, sessionCookie, apiName); } addAPI(backendURL, sessionCookie, apiOmElement); Assert.assertTrue(isApiDeployed(backendURL, sessionCookie, apiName), "api " + apiName + "deployment failure"); } } else if (entry.getKey().equals("endpoints")) { OMElement endpointOmElement; for (File aFileArr : fileArr) { //deploying the endpoints to esb String filePathArr[] = aFileArr.getAbsolutePath().split(TestConfigurationProvider.getResourceLocation()); endpointOmElement = loadResource(filePathArr[1]); String endpointName = endpointOmElement.getAttributeValue(new QName("name")); if (isEndpointExist(backendURL, sessionCookie, endpointName)) { deleteEndpoint(backendURL, sessionCookie, endpointName); } addEndpoint(backendURL, sessionCookie, endpointOmElement); Assert.assertTrue(isEndpointDeployed(backendURL, sessionCookie, endpointName), "endpoint " + endpointName + "deployment failure"); } } else if (entry.getKey().equals("priority-executors")) { OMElement priorityExecutorsOmElement; for (File aFileArr : fileArr) { //deploying the priority-executors to esb String filePathArr[] = aFileArr.getAbsolutePath().split(TestConfigurationProvider.getResourceLocation()); priorityExecutorsOmElement = loadResource(filePathArr[1]); String proxyExecutorName = priorityExecutorsOmElement.getAttributeValue(new QName("name")); if (isPriorityExecutorExist(backendURL, sessionCookie, proxyExecutorName)) { deletePriorityExecutor(backendURL, sessionCookie, proxyExecutorName); } addPriorityExecutor(backendURL, sessionCookie, priorityExecutorsOmElement); Assert.assertTrue(isPriorityExecutorDeployed(backendURL, sessionCookie, proxyExecutorName), "priority-executor " + proxyExecutorName + "deployment failure"); } } else if (entry.getKey().equals("sequences")) { OMElement sequencesOmElement; for (File aFileArr : fileArr) { //deploying the sequences to esb String filePathArr[] = aFileArr.getAbsolutePath().split(TestConfigurationProvider.getResourceLocation()); sequencesOmElement = loadResource(filePathArr[1]); String sequenceName = sequencesOmElement.getAttributeValue(new QName("name")); if (isSequenceExist(backendURL, sessionCookie, sequenceName)) { deleteSequence(backendURL, sessionCookie, sequenceName); } addSequence(backendURL, sessionCookie, sequencesOmElement); Assert.assertTrue(isSequenceDeployed(backendURL, sessionCookie, sequenceName), "sequence " + sequenceName + "deployment failure"); } } else if (entry.getKey().equals("proxy-services")) { OMElement proxyServicesOmElement; for (File aFileArr : fileArr) { //deploying the proxy-services to esb String filePathArr[] = aFileArr.getAbsolutePath().split(TestConfigurationProvider.getResourceLocation()); proxyServicesOmElement = loadResource(filePathArr[1]); String proxyServiceName = proxyServicesOmElement.getAttributeValue(new QName("name")); if (isProxyServiceExist(backendURL, sessionCookie, proxyServiceName)) { deleteProxyService(backendURL, sessionCookie, proxyServiceName); } addProxyService(backendURL, sessionCookie, proxyServicesOmElement); Assert.assertTrue(isProxyDeployed(backendURL, sessionCookie, proxyServiceName), "proxy-service " + proxyServiceName + "deployment failure"); } } else if (entry.getKey().equals("local-entries")) { OMElement localEntriesOmElement; for (File aFileArr : fileArr) { //deploying the local-entries to esb String filePathArr[] = aFileArr.getAbsolutePath().split(TestConfigurationProvider.getResourceLocation()); localEntriesOmElement = loadResource(filePathArr[1]); String localEntryKey = localEntriesOmElement.getAttributeValue(new QName("key")); if (isLocalEntryExist(backendURL, sessionCookie, localEntryKey)) { deleteLocalEntry(backendURL, sessionCookie, localEntryKey); } addLocalEntry(backendURL, sessionCookie, localEntriesOmElement); Assert.assertTrue(isLocalEntryDeployed(backendURL, sessionCookie, localEntryKey), "local-entry " + localEntryKey + "deployment failure"); } } else if (entry.getKey().equals("tasks")) { OMElement taskOmElement; for (File aFileArr : fileArr) { //deploying the tasks to esb String filePathArr[] = aFileArr.getAbsolutePath().split(TestConfigurationProvider.getResourceLocation()); taskOmElement = loadResource(filePathArr[1]); if (taskOmElement.getNamespace().getPrefix().equals("")) { OMFactory fac = OMAbstractFactory.getOMFactory(); OMNamespace omNs = fac.createOMNamespace("http://www.wso2.org/products/wso2commons/tasks", "task"); taskOmElement.setNamespace(omNs); Iterator it = taskOmElement.getChildElements(); while (it.hasNext()) { ((OMElement) it.next()).setNamespace(omNs); } } String taskName = taskOmElement.getAttributeValue(new QName("name")); String taskGroup = taskOmElement.getAttributeValue(new QName("group")); if (isScheduleTaskExist(backendURL, sessionCookie, taskName)) { deleteScheduleTask(backendURL, sessionCookie, taskName, taskGroup); } addScheduleTask(backendURL, sessionCookie, taskOmElement); Assert.assertTrue(isScheduleTaskDeployed(backendURL, sessionCookie, taskName), "task " + taskName + "deployment failure"); } } else { log.info(entry.getKey() + " was not deployed"); } } } /** * Copy the given source file to the given destination * * @param sourceUri source file location * @param destUri destination file location * @throws IOException */ public static void copyFile(String sourceUri, String destUri) throws IOException { File sourceFile = new File(sourceUri); File destFile = new File(destUri); if (destFile.exists()) { destFile.delete(); } destFile.createNewFile(); FileInputStream fileInputStream = null; FileOutputStream fileOutputStream = null; try { fileInputStream = new FileInputStream(sourceFile); fileOutputStream = new FileOutputStream(destFile); FileChannel source = fileInputStream.getChannel(); FileChannel destination = fileOutputStream.getChannel(); destination.transferFrom(source, 0, source.size()); } finally { IOUtils.closeQuietly(fileInputStream); IOUtils.closeQuietly(fileOutputStream); } } /** * This method can be used to check whether file specified by the location has contents * * @param fullPath path to file * @return true if file has no contents */ public boolean isFileEmpty(String fullPath) { try { BufferedReader br = new BufferedReader(new FileReader(fullPath)); if (br.readLine() == null) { return true; } } catch (FileNotFoundException fileNotFoundException) { //synapse config is not found therefore it should copy original file to the location log.info("Synapse config file cannot be found in " + fullPath + " copying Backup Config to the location."); return true; } catch (IOException ioException) { //exception ignored log.info("Couldn't read the synapse config from the location " + fullPath); } return false; } /** * Decompress a compressed g gzip compressed string. * * @param str Compressed string * @return Decompressed string */ public static Map<String, Object> decompress(String str) { ByteArrayInputStream byteInputStream = null; GZIPInputStream gzipInputStream = null; try { ThreadLocal<Kryo> kryoTL = new ThreadLocal<Kryo>() { protected Kryo initialValue() { Kryo kryo = new Kryo(); // Class registering precedence matters. Hence intentionally giving a registration ID kryo.register(HashMap.class, 111); kryo.register(ArrayList.class, 222); kryo.register(PublishingPayload.class, 333); return kryo; } }; byteInputStream = new ByteArrayInputStream(DatatypeConverter.parseBase64Binary(str)); gzipInputStream = new GZIPInputStream(byteInputStream); byte[] unzippedBytes = IOUtils.toByteArray(gzipInputStream); Input input = new Input(unzippedBytes); return kryoTL.get().readObjectOrNull(input, HashMap.class); } catch (IOException e) { throw new RuntimeException("Error occured while decompressing events string: " + e.getMessage(), e); } finally { try { if (byteInputStream != null) { byteInputStream.close(); } if (gzipInputStream != null) { gzipInputStream.close(); } } catch (IOException e) { //ignore } } } }