On Sun, Feb 15, 2015 at 7:39 PM, Chanaka Fernando <[email protected]> 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 <
> [email protected]> wrote:
>
>> Hi Chanaka,
>>
>> Can you share the full test class code
>>
>> Thanks,
>> Krishantha.
>>
>> On Mon, Feb 16, 2015 at 9:05 AM, Chanaka Fernando <[email protected]>
>> 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 <[email protected]>
>>> 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 <[email protected]>
>>>> 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
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to