Got it. I will apply the change.
Thanks, Chanaka On Mon, Feb 16, 2015 at 9:14 AM, Nuwan Wimalasekara <nuw...@wso2.com> wrote: > > > On Sun, Feb 15, 2015 at 7:39 PM, Chanaka Fernando <chana...@wso2.com> > wrote: > >> Hi Krishantha, >> >> Sure. Here is the code. >> >> /* >> *Copyright (c) 2005-2010, 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.esb.mediator.test.db.dblookup; >> >> import org.apache.axiom.om.OMElement; >> import org.apache.axiom.om.util.AXIOMUtil; >> import org.apache.commons.io.FileUtils; >> import org.testng.Assert; >> import org.testng.annotations.AfterClass; >> import org.testng.annotations.BeforeClass; >> import org.testng.annotations.BeforeMethod; >> import org.testng.annotations.Test; >> import org.wso2.carbon.automation.engine.annotations.ExecutionEnvironment; >> import org.wso2.carbon.automation.engine.annotations.SetEnvironment; >> import org.wso2.carbon.automation.engine.context.AutomationContext; >> import org.wso2.carbon.automation.extensions.XPathConstants; >> import org.wso2.carbon.automation.test.utils.dbutils.MySqlDatabaseManager; >> import >> org.wso2.carbon.integration.common.utils.mgt.ServerConfigurationManager; >> import org.wso2.esb.integration.common.utils.ESBIntegrationTest; >> >> import java.io.File; >> import java.net.URL; >> import java.sql.SQLException; >> >> public class DBlookupMediatorTestCase extends ESBIntegrationTest { >> private MySqlDatabaseManager mySqlDatabaseManager; >> private ServerConfigurationManager serverConfigurationManager; >> // private final DataSource dbConfig = new >> EnvironmentBuilder().getFrameworkSettings() >> // .getDataSource(); >> // private H2DataBaseManager h2DatabaseManager; >> private String JDBC_URL; >> private String DB_USER; >> private String DB_PASSWORD; >> private String DATASOURCE_NAME; >> >> >> private final double WSO2_PRICE = 200.0; >> private final String MYSQL_JAR = "mysql-connector-java-5.1.6.jar"; >> // private final String H2_JAR >> ="h2-database-engine_1.2.140.wso2v3.jar"; >> >> >> @BeforeClass(alwaysRun = true) >> public void setEnvironment() throws Exception { >> super.init(); >> >> AutomationContext automationContext = new AutomationContext(); >> DATASOURCE_NAME = >> automationContext.getConfigurationValue(XPathConstants.DATA_SOURCE_NAME); >> DB_PASSWORD = >> automationContext.getConfigurationValue(XPathConstants.DATA_SOURCE_DB_PASSWORD); >> JDBC_URL = >> automationContext.getConfigurationValue(XPathConstants.DATA_SOURCE_URL); >> DB_USER = >> automationContext.getConfigurationValue(XPathConstants.DATA_SOURCE_DB_USER_NAME); >> // >> automationContext.getConfigurationValue(XPathConstants.DATA_SOURCE_DRIVER_CLASS_NAME); >> serverConfigurationManager = new >> ServerConfigurationManager(context); >> copyJDBCDriverToClassPath(); >> mySqlDatabaseManager = new MySqlDatabaseManager(JDBC_URL, >> DB_USER, DB_PASSWORD); >> mySqlDatabaseManager.executeUpdate("DROP DATABASE IF EXISTS >> SampleDBForAutomation"); >> >> // mySqlDatabaseManager = new MySqlDatabaseManager(JDBC_URL, >> DB_USER, DB_PASSWORD); >> // mySqlDatabaseManager.executeUpdate("DROP DATABASE IF EXISTS >> SampleDBForAutomation"); >> >> >> super.init(); >> >> >> } >> >> /* >> entries under columns 'price' & 'name'. Insert a row with "WSO2" >> as a value in 'name' & >> respective price as "200" >> */ >> >> @BeforeMethod(alwaysRun = true) >> public void createDatabase() throws SQLException { >> mySqlDatabaseManager.executeUpdate("DROP DATABASE IF EXISTS >> SampleDBForAutomation"); >> mySqlDatabaseManager.executeUpdate("Create DATABASE >> SampleDBForAutomation"); >> mySqlDatabaseManager.executeUpdate("USE SampleDBForAutomation"); >> mySqlDatabaseManager.executeUpdate("CREATE TABLE company(price >> double, name varchar(20))"); >> >> } >> >> @SetEnvironment(executionEnvironments = >> {ExecutionEnvironment.STANDALONE}) >> @Test(groups = "wso2.esb", description = "Test with more than one >> result") >> public void dbLookupMediatorTestWithMultipleResults() throws >> Exception { >> >> mySqlDatabaseManager.executeUpdate("INSERT INTO company >> VALUES(100.0,'ABC')"); >> mySqlDatabaseManager.executeUpdate("INSERT INTO company >> VALUES(2000.0,'XYZ')"); >> mySqlDatabaseManager.executeUpdate("INSERT INTO company VALUES(" >> + WSO2_PRICE + ",'WSO2')"); >> mySqlDatabaseManager.executeUpdate("INSERT INTO company >> VALUES(0,'WSO2')"); >> mySqlDatabaseManager.executeUpdate("INSERT INTO company >> VALUES(300.0,'MNO')"); >> mySqlDatabaseManager.executeUpdate("CREATE PROCEDURE `getId` (" + >> "IN nameVar VARCHAR(20))" + >> "BEGIN " + >> "select * from company where >> name =nameVar;" + >> "END"); >> //first row of the result set should be taken into account >> URL url = >> >> getClass().getResource("/artifacts/ESB/mediatorconfig/dblookup/sample_360_multiple_results_test.xml"); >> String s = FileUtils.readFileToString(new File(url.toURI())); >> s = updateDatabaseInfo(s); >> updateESBConfiguration(AXIOMUtil.stringToOM(s)); >> OMElement response = >> axis2Client.sendSimpleStockQuoteRequest(getMainSequenceURL(), null, "WSO2"); >> Assert.assertTrue(response.toString().contains("WSO2")); >> >> } >> >> @SetEnvironment(executionEnvironments = >> {ExecutionEnvironment.STANDALONE}) >> @Test(groups = "wso2.esb", description = "Test with multiple SQL >> statements") >> public void dbLookupMediatorTestMultipleStatements() throws Exception >> { >> mySqlDatabaseManager.executeUpdate("INSERT INTO company >> VALUES(100.0,'IBM')"); >> mySqlDatabaseManager.executeUpdate("INSERT INTO company >> VALUES(2000.0,'XYZ')"); >> mySqlDatabaseManager.executeUpdate("INSERT INTO company VALUES(" >> + WSO2_PRICE + ",'WSO2')"); >> mySqlDatabaseManager.executeUpdate("INSERT INTO company >> VALUES(300.0,'MNO')"); >> >> URL url = >> >> getClass().getResource("/artifacts/ESB/mediatorconfig/dblookup/sample_360_multiple_SQL_statements.xml"); >> String s = FileUtils.readFileToString(new File(url.toURI())); >> s = updateDatabaseInfo(s); >> updateESBConfiguration(AXIOMUtil.stringToOM(s)); >> OMElement response = >> axis2Client.sendSimpleStockQuoteRequest(getMainSequenceURL(), null, "WSO2"); >> Assert.assertTrue(response.toString().contains("WSO2")); >> } >> >> @SetEnvironment(executionEnvironments = >> {ExecutionEnvironment.STANDALONE}) >> @Test(groups = "wso2.esb", description = "Select rows from DB table >> while mediating messages.") >> public void dbLookupTestSelectRows() throws Exception { >> mySqlDatabaseManager.executeUpdate("INSERT INTO company >> VALUES(100.0,'ABC')"); >> mySqlDatabaseManager.executeUpdate("INSERT INTO company >> VALUES(2000.0,'XYZ')"); >> mySqlDatabaseManager.executeUpdate("INSERT INTO company VALUES(" >> + WSO2_PRICE + ",'WSO2')"); >> mySqlDatabaseManager.executeUpdate("INSERT INTO company >> VALUES(300.0,'MNO')"); >> URL url = >> >> getClass().getResource("/artifacts/ESB/mediatorconfig/dblookup/sample_360.xml"); >> String s = FileUtils.readFileToString(new File(url.toURI())); >> s = updateDatabaseInfo(s); >> updateESBConfiguration(AXIOMUtil.stringToOM(s)); >> OMElement response = >> axis2Client.sendSimpleStockQuoteRequest(getMainSequenceURL(), null, "WSO2"); >> Assert.assertTrue(response.toString().contains("WSO2")); >> } >> >> @SetEnvironment(executionEnvironments = >> {ExecutionEnvironment.STANDALONE}) >> @Test(groups = "wso2.esb", description = "Test with stored >> finctions") >> public void dbLookupTestStoredFunctions() throws Exception { >> mySqlDatabaseManager.executeUpdate("INSERT INTO company >> VALUES(100.0,'ABC')"); >> mySqlDatabaseManager.executeUpdate("INSERT INTO company >> VALUES(2000.0,'XYZ')"); >> mySqlDatabaseManager.executeUpdate("INSERT INTO company VALUES(" >> + WSO2_PRICE + ",'WSO2')"); >> mySqlDatabaseManager.executeUpdate("INSERT INTO company >> VALUES(300.0,'MNO')"); >> mySqlDatabaseManager.executeUpdate("CREATE FUNCTION getID(s >> VARCHAR(20))" + " RETURNS VARCHAR(50)" >> + " RETURN CONCAT('Hello, >> ',s,'!');"); >> >> URL url = >> >> getClass().getResource("/artifacts/ESB/mediatorconfig/dblookup/sample_360_stored_function_test.xml"); >> String s = FileUtils.readFileToString(new File(url.toURI())); >> s = updateDatabaseInfo(s); >> updateESBConfiguration(AXIOMUtil.stringToOM(s)); >> OMElement response = >> axis2Client.sendSimpleStockQuoteRequest(getMainSequenceURL(), null, "WSO2"); >> Assert.assertTrue(response.toString().contains("WSO2")); >> >> } >> >> @SetEnvironment(executionEnvironments = >> {ExecutionEnvironment.STANDALONE}) >> @Test(groups = "wso2.esb", description = "Test with stored >> procedures") >> public void dbLookupTestStoredProcedures() throws Exception { >> mySqlDatabaseManager.executeUpdate("INSERT INTO company >> VALUES(100.0,'ABC')"); >> mySqlDatabaseManager.executeUpdate("INSERT INTO company >> VALUES(2000.0,'XYZ')"); >> mySqlDatabaseManager.executeUpdate("INSERT INTO company VALUES(" >> + WSO2_PRICE + ",'WSO2')"); >> mySqlDatabaseManager.executeUpdate("INSERT INTO company >> VALUES(300.0,'MNO')"); >> mySqlDatabaseManager.executeUpdate("CREATE PROCEDURE `getId` (" + >> "IN nameVar VARCHAR(20))" + >> "BEGIN " + >> "select * from company where >> name =nameVar;" + >> "END"); >> URL url = >> >> getClass().getResource("/artifacts/ESB/mediatorconfig/dblookup/sample_360_stored_procedure.xml"); >> String s = FileUtils.readFileToString(new File(url.toURI())); >> s = updateDatabaseInfo(s); >> updateESBConfiguration(AXIOMUtil.stringToOM(s)); >> OMElement response = >> axis2Client.sendSimpleStockQuoteRequest(getMainSequenceURL(), null, "WSO2"); >> Assert.assertTrue(response.toString().contains("WSO2")); >> >> } >> >> @AfterClass(alwaysRun = true) >> public void close() throws Exception { >> >> try { >> mySqlDatabaseManager.executeUpdate("DROP DATABASE IF EXISTS >> SampleDBForAutomation"); >> } finally { >> mySqlDatabaseManager.disconnect(); >> >> } >> mySqlDatabaseManager = null; >> loadSampleESBConfiguration(0); >> serverConfigurationManager.removeFromComponentLib(MYSQL_JAR); >> serverConfigurationManager.restartGracefully(); >> serverConfigurationManager = null; >> super.cleanup(); >> } >> > > problem is you are tying to cleanup the artifact after server restarted. > Then the session cookie used by cleanup is no longer valid. So do the > cleanup before loadSampleESBConfiguration(0); > > mySqlDatabaseManager = null; > super.cleanup(); > loadSampleESBConfiguration(0); > serverConfigurationManager.removeFromComponentLib(MYSQL_JAR); > serverConfigurationManager.restartGracefully(); > serverConfigurationManager = null; > > > > >> >> private void copyJDBCDriverToClassPath() throws Exception { >> File jarFile; >> jarFile = new File(getClass().getResource("/artifacts/ESB/jar/" + >> MYSQL_JAR + "").getPath()); >> System.out.println(jarFile.getName()); >> serverConfigurationManager.copyToComponentLib(jarFile); >> serverConfigurationManager.restartGracefully(); >> } >> >> private String updateDatabaseInfo(String synapseConfig) { >> synapseConfig = synapseConfig.replace("$SampleDBForAutomation", >> JDBC_URL + "/SampleDBForAutomation"); >> synapseConfig = synapseConfig.replace("####", DB_USER); >> synapseConfig = synapseConfig.replace("$$$$", DB_PASSWORD); >> return synapseConfig; >> } >> } >> >> >> Thanks, >> Chanaka >> >> On Mon, Feb 16, 2015 at 9:07 AM, Krishantha Samaraweera < >> krishan...@wso2.com> wrote: >> >>> Hi Chanaka, >>> >>> Can you share the full test class code >>> >>> Thanks, >>> Krishantha. >>> >>> On Mon, Feb 16, 2015 at 9:05 AM, Chanaka Fernando <chana...@wso2.com> >>> wrote: >>> >>>> Hi Nuwan, >>>> >>>> >>>> Here is the code inside the close method of the test class. >>>> >>>> >>>> @AfterClass(alwaysRun = true) >>>> public void close() throws Exception { >>>> >>>> try { >>>> mySqlDatabaseManager.executeUpdate("DROP DATABASE >>>> SampleDBForAutomation"); >>>> } finally { >>>> mySqlDatabaseManager.disconnect(); >>>> >>>> >>>> } >>>> loadSampleESBConfiguration(0); >>>> serverConfigurationManager.removeFromComponentLib(MYSQL_JAR); >>>> serverConfigurationManager.restartGracefully(); >>>> super.cleanup(); >>>> } >>>> >>>> >>>> Thanks, >>>> Chanaka >>>> >>>> On Mon, Feb 16, 2015 at 9:01 AM, Nuwan Wimalasekara <nuw...@wso2.com> >>>> wrote: >>>> >>>>> Hi Chanaka, >>>>> Did you restart the server or change any configuration within your >>>>> test class? >>>>> >>>>> Thanks, >>>>> Nuwanw >>>>> >>>>> On Sun, Feb 15, 2015 at 7:28 PM, Chanaka Fernando <chana...@wso2.com> >>>>> wrote: >>>>> >>>>>> Hi All, >>>>>> >>>>>> I'm getting the below exception when running the integration test for >>>>>> dblookup and dbreport mediators. >>>>>> >>>>>> FAILED CONFIGURATION: @AfterClass close >>>>>> org.apache.axis2.AxisFault: Transport error: 401 Error: Unauthorized >>>>>> at >>>>>> org.apache.axis2.transport.http.HTTPSender.handleResponse(HTTPSender.java:330) >>>>>> at >>>>>> org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:196) >>>>>> at >>>>>> org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:77) >>>>>> at >>>>>> org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:451) >>>>>> at >>>>>> org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:278) >>>>>> at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442) >>>>>> at >>>>>> org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:430) >>>>>> at >>>>>> org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:225) >>>>>> at >>>>>> org.apache.axis2.client.OperationClient.execute(OperationClient.java:149) >>>>>> at >>>>>> org.wso2.carbon.sequences.stub.types.SequenceAdminServiceStub.getSequences(SequenceAdminServiceStub.java:5040) >>>>>> at >>>>>> org.wso2.esb.integration.common.clients.sequences.SequenceAdminServiceClient.getSequences(SequenceAdminServiceClient.java:197) >>>>>> at >>>>>> org.wso2.esb.integration.common.utils.ESBTestCaseUtils.deleteArtifact(ESBTestCaseUtils.java:1794) >>>>>> at >>>>>> org.wso2.esb.integration.common.utils.ESBIntegrationTest.cleanup(ESBIntegrationTest.java:106) >>>>>> at >>>>>> org.wso2.carbon.esb.mediator.test.db.dblookup.DBlookupMediatorTestCase.close(DBlookupMediatorTestCase.java:209) >>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>>> at >>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >>>>>> at >>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>>>>> at java.lang.reflect.Method.invoke(Method.java:597) >>>>>> at >>>>>> org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80) >>>>>> at >>>>>> org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:525) >>>>>> at >>>>>> org.testng.internal.Invoker.invokeConfigurations(Invoker.java:202) >>>>>> at >>>>>> org.testng.internal.Invoker.invokeConfigurations(Invoker.java:130) >>>>>> at >>>>>> org.testng.internal.TestMethodWorker.invokeAfterClassMethods(TestMethodWorker.java:222) >>>>>> at >>>>>> org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112) >>>>>> at org.testng.TestRunner.runWorkers(TestRunner.java:1178) >>>>>> at org.testng.TestRunner.privateRun(TestRunner.java:757) >>>>>> at org.testng.TestRunner.run(TestRunner.java:608) >>>>>> at org.testng.SuiteRunner.runTest(SuiteRunner.java:334) >>>>>> at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329) >>>>>> at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291) >>>>>> at org.testng.SuiteRunner.run(SuiteRunner.java:240) >>>>>> at >>>>>> org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) >>>>>> at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) >>>>>> at org.testng.TestNG.runSuitesSequentially(TestNG.java:1158) >>>>>> at org.testng.TestNG.runSuitesLocally(TestNG.java:1083) >>>>>> at org.testng.TestNG.run(TestNG.java:999) >>>>>> at >>>>>> org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:178) >>>>>> at >>>>>> org.apache.maven.surefire.testng.TestNGXmlTestSuite.execute(TestNGXmlTestSuite.java:92) >>>>>> at >>>>>> org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:96) >>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>>> at >>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >>>>>> at >>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>>>>> at java.lang.reflect.Method.invoke(Method.java:597) >>>>>> at >>>>>> org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189) >>>>>> at >>>>>> org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165) >>>>>> at >>>>>> org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85) >>>>>> at >>>>>> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115) >>>>>> at >>>>>> org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75) >>>>>> >>>>>> >>>>>> Did anyone experienced similar issue before? Appreciate any help on >>>>>> this. >>>>>> >>>>>> >>>>>> >>>>>> Thanks, >>>>>> Chanaka >>>>>> >>>>>> -- >>>>>> -- >>>>>> Chanaka Fernando >>>>>> Technical Lead >>>>>> WSO2, Inc.; http://wso2.com >>>>>> lean.enterprise.middleware >>>>>> >>>>>> mobile: +94 773337238 >>>>>> Blog : http://soatutorials.blogspot.com >>>>>> LinkedIn:http://www.linkedin.com/pub/chanaka-fernando/19/a20/5b0 >>>>>> Twitter:https://twitter.com/chanakaudaya >>>>>> Wordpress:http://chanakaudaya.wordpress.com >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Nuwan Wimalasekara >>>>> Senior Software Engineer - Test Automation >>>>> WSO2, Inc.: http://wso2.com >>>>> lean. enterprise. middleware >>>>> >>>>> phone: +94 71 668 4620 >>>>> >>>>> >>>>> >>>>> >>>> >>>> >>>> -- >>>> -- >>>> Chanaka Fernando >>>> Technical Lead >>>> WSO2, Inc.; http://wso2.com >>>> lean.enterprise.middleware >>>> >>>> mobile: +94 773337238 >>>> Blog : http://soatutorials.blogspot.com >>>> LinkedIn:http://www.linkedin.com/pub/chanaka-fernando/19/a20/5b0 >>>> Twitter:https://twitter.com/chanakaudaya >>>> Wordpress:http://chanakaudaya.wordpress.com >>>> >>>> >>>> >>>> >>> >>> >>> -- >>> Krishantha Samaraweera >>> Senior Technical Lead - Test Automation >>> Mobile: +94 77 7759918 >>> WSO2, Inc.; http://wso2.com/ >>> lean . enterprise . middlewear. >>> >> >> >> >> -- >> -- >> Chanaka Fernando >> Technical Lead >> WSO2, Inc.; http://wso2.com >> lean.enterprise.middleware >> >> mobile: +94 773337238 >> Blog : http://soatutorials.blogspot.com >> LinkedIn:http://www.linkedin.com/pub/chanaka-fernando/19/a20/5b0 >> Twitter:https://twitter.com/chanakaudaya >> Wordpress:http://chanakaudaya.wordpress.com >> >> >> >> > > > -- > Nuwan Wimalasekara > Senior Software Engineer - Test Automation > WSO2, Inc.: http://wso2.com > lean. enterprise. middleware > > phone: +94 71 668 4620 > > > > -- -- Chanaka Fernando Technical Lead WSO2, Inc.; http://wso2.com lean.enterprise.middleware mobile: +94 773337238 Blog : http://soatutorials.blogspot.com LinkedIn:http://www.linkedin.com/pub/chanaka-fernando/19/a20/5b0 Twitter:https://twitter.com/chanakaudaya Wordpress:http://chanakaudaya.wordpress.com
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev