/*! * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software * Foundation. * * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * Copyright (c) 2002-2013 Pentaho Corporation.. All rights reserved. */ package org.pentaho.test.platform.plugin; import org.pentaho.commons.connection.IPentahoResultSet; import org.pentaho.platform.api.data.IPreparedComponent; import org.pentaho.platform.api.engine.IActionParameter; import org.pentaho.platform.api.engine.IRuntimeContext; import org.pentaho.platform.plugin.services.messages.Messages; import org.pentaho.test.platform.engine.core.BaseTest; import org.pentaho.test.platform.utils.TestResourceLocation; import java.util.HashMap; /** * This class tests SQL, MDX, HQL, and XQuery PreparedComponent functionality. * * @author Will Gorman * */ @SuppressWarnings( "nls" ) public class IPreparedComponentIT extends BaseTest { private static final String SOLUTION_PATH = TestResourceLocation.TEST_RESOURCES + "/solution"; public String getSolutionPath() { return SOLUTION_PATH; } public void testIPreparedComponentSQLAvailable() { startTest(); info( "Expected: Successful execution with object available" ); //$NON-NLS-1$ IRuntimeContext context = run( "/test/ipreparedcomponents/ipreparedcomponent_sql_available.xaction" ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ assertEquals( Messages.getInstance().getString( "BaseTest.USER_RUNNING_ACTION_SEQUENCE" ), IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus() ); //$NON-NLS-1$ IActionParameter rtn = context.getOutputParameter( "prepared_component" ); //$NON-NLS-1$ assertNotNull( rtn ); IPreparedComponent preparedComponent = (IPreparedComponent) rtn.getValue(); assertNotNull( preparedComponent ); finishTest(); } /* * public void testIPreparedComponentSQLTempTables() { startTest(); * info("Expected: Successful execution with one row of data"); //$NON-NLS-1$ IRuntimeContext context = run("test", * "ipreparedcomponents", "ipreparedcomponent_sql_temptables.xaction"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ * assertEquals( Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"), * IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus()); //$NON-NLS-1$ * * IActionParameter rtn1 = context.getOutputParameter("a_result"); //$NON-NLS-1$ assertNotNull(rtn1); IPentahoResultSet * resultset1 = (IPentahoResultSet) rtn1.getValue(); assertEquals(1, resultset1.getRowCount()); assertEquals( * "Expected first row of 'a_result' to contain a 1 in the first column.", new Integer(1), resultset1.getValueAt(0, * 0)); //$NON-NLS-1$ * * IActionParameter rtn2 = context.getOutputParameter("no_results"); //$NON-NLS-1$ assertNotNull(rtn2); * IPentahoResultSet resultset2 = (IPentahoResultSet) rtn2.getValue(); assertEquals(1, resultset2.getRowCount()); * assertEquals( "Expected first row of 'no_results' to contain a 0 in the first column.", new Integer(0), * resultset2.getValueAt(0, 0)); //$NON-NLS-1$ * * finishTest(); } */ /* * public void testIPreparedComponentSQLPrepareLater() { startTest(); * info("Expected: Successful execution with object available"); //$NON-NLS-1$ IRuntimeContext context = run("test", * "ipreparedcomponents", "ipreparedcomponent_sql_preparelater.xaction"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ * assertEquals( Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"), * IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus()); //$NON-NLS-1$ * * IActionParameter rtn1 = context.getOutputParameter("prepared_component"); //$NON-NLS-1$ assertNotNull(rtn1); * IPreparedComponent preparedComponent1 = (IPreparedComponent) rtn1.getValue(); assertNotNull(preparedComponent1); * IPentahoResultSet resultset1 = preparedComponent1.executePrepared(null); assertEquals(1, resultset1.getRowCount()); * Number val1 = (Number) resultset1.getValueAt(0, 0); * * IActionParameter rtn2 = context.getOutputParameter("second_prepared_component"); //$NON-NLS-1$ assertNotNull(rtn2); * IPreparedComponent preparedComponent2 = (IPreparedComponent) rtn2.getValue(); assertNotNull(preparedComponent2); * HashMap map = new HashMap(); map.put("DEPARTMENT", "Sales"); //$NON-NLS-1$ //$NON-NLS-2$ map.put("REGION", * "Eastern"); //$NON-NLS-1$ //$NON-NLS-2$ IPentahoResultSet resultset2 = preparedComponent2.executePrepared(map); * assertEquals(1, resultset2.getRowCount()); Number val2 = (Number) resultset2.getValueAt(0, 0); * * assertEquals("Values from the first and second query should be equal", val1, val2); //$NON-NLS-1$ * * finishTest(); } */ /* * public void testIPreparedComponentMDXAvailable() { startTest(); * info("Expected: Successful execution with object available"); //$NON-NLS-1$ IRuntimeContext context = run("test", * "ipreparedcomponents", "ipreparedcomponent_mdx_available.xaction"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ * assertEquals( Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"), * IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus()); //$NON-NLS-1$ * * IActionParameter rtn = context.getOutputParameter("prepared_component"); //$NON-NLS-1$ assertNotNull(rtn); * IPreparedComponent preparedComponent = (IPreparedComponent) rtn.getValue(); * * assertNotNull(preparedComponent); * * finishTest(); } */ /* * public void testIPreparedComponentMDXShareConnection() { startTest(); * info("Expected: Successful execution with object available"); //$NON-NLS-1$ IRuntimeContext context = run("test", * "ipreparedcomponents", "ipreparedcomponent_mdx_shareconn.xaction"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ * assertEquals( Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"), * IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus()); //$NON-NLS-1$ * * IActionParameter rtn = context.getOutputParameter("prepared_component"); //$NON-NLS-1$ assertNotNull(rtn); * IPreparedComponent preparedComponent = (IPreparedComponent) rtn.getValue(); * * assertNotNull(preparedComponent); * * IPentahoResultSet resultset = preparedComponent.executePrepared(null); assertNotNull(resultset); * assertTrue(resultset.getRowCount() >= 1); Object val1 = resultset.getValueAt(0, 0); assertNotNull(val1); * * finishTest(); } */ /* * public void testIPreparedComponentMDXPrepareLater() { startTest(); * info("Expected: Successful execution with object available"); //$NON-NLS-1$ IRuntimeContext context = run("test", * "ipreparedcomponents", "ipreparedcomponent_mdx_preparelater.xaction"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ * assertEquals( Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"), * IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus()); //$NON-NLS-1$ * * IActionParameter rtn1 = context.getOutputParameter("prepared_component"); //$NON-NLS-1$ assertNotNull(rtn1); * IPreparedComponent preparedComponent1 = (IPreparedComponent) rtn1.getValue(); assertNotNull(preparedComponent1); * IPentahoResultSet resultset1 = preparedComponent1.executePrepared(null); assertNotNull(resultset1); * assertTrue(resultset1.getRowCount() >= 1); Object val1 = resultset1.getValueAt(0, 0); * * IActionParameter rtn2 = context.getOutputParameter("second_prepared_component"); //$NON-NLS-1$ assertNotNull(rtn2); * IPreparedComponent preparedComponent2 = (IPreparedComponent) rtn2.getValue(); assertNotNull(preparedComponent2); * HashMap map = new HashMap(); map.put("productline", "Classic Cars"); //$NON-NLS-1$ //$NON-NLS-2$ IPentahoResultSet * resultset2 = preparedComponent2.executePrepared(map); assertTrue(resultset2.getRowCount() >= 1); * assertEquals(resultset1.getRowCount(), resultset2.getRowCount()); * * Object val2 = resultset2.getValueAt(0, 0); * * assertEquals("Values from the first and second query should be equal", val1, val2); //$NON-NLS-1$ * * finishTest(); } */ public void testIPreparedComponentXQueryAvailable() { startTest(); info( "Expected: Successful execution with object available" ); //$NON-NLS-1$ IRuntimeContext context = run( "/test/ipreparedcomponents/ipreparedcomponent_xquery_available.xaction" ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ assertEquals( Messages.getInstance().getString( "BaseTest.USER_RUNNING_ACTION_SEQUENCE" ), IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus() ); //$NON-NLS-1$ IActionParameter rtn = context.getOutputParameter( "prepared_component" ); //$NON-NLS-1$ assertNotNull( rtn ); IPreparedComponent preparedComponent = (IPreparedComponent) rtn.getValue(); assertNotNull( preparedComponent ); finishTest(); } public void testIPreparedComponentXQueryAvailableErrorNoDocument() { startTest(); IRuntimeContext context = run( "/test/ipreparedcomponents/ipreparedcomponent_xquery_available_error_nodocument.xaction" ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ assertEquals( Messages.getInstance().getString( "BaseTest.USER_RUNNING_ACTION_SEQUENCE" ), IRuntimeContext.RUNTIME_STATUS_FAILURE, context.getStatus() ); //$NON-NLS-1$ IActionParameter rtn = context.getOutputParameter( "prepared_component" ); //$NON-NLS-1$ assertNotNull( rtn ); IPreparedComponent preparedComponent = (IPreparedComponent) rtn.getValue(); assertNull( preparedComponent ); finishTest(); } public void testIPreparedComponentXQueryAvailableErrorNoPrepareComponent() { startTest(); info( "Expected: Successful execution with object available" ); //$NON-NLS-1$ IRuntimeContext context = run( "/test/ipreparedcomponents/ipreparedcomponent_xquery_available_error_nopreparedcomponent.xaction" ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ assertEquals( Messages.getInstance().getString( "BaseTest.USER_RUNNING_ACTION_SEQUENCE" ), IRuntimeContext.RUNTIME_CONTEXT_VALIDATE_FAIL, context.getStatus() ); //$NON-NLS-1$ finishTest(); } public void testIPreparedComponentXQueryPrepareLater() { startTest(); info( "Expected: Successful execution with object available" ); //$NON-NLS-1$ IRuntimeContext context = run( "/test/ipreparedcomponents/ipreparedcomponent_xquery_preparelater.xaction" ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ assertEquals( Messages.getInstance().getString( "BaseTest.USER_RUNNING_ACTION_SEQUENCE" ), IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus() ); //$NON-NLS-1$ IActionParameter rtn1 = context.getOutputParameter( "prepared_component" ); //$NON-NLS-1$ assertNotNull( rtn1 ); IPreparedComponent preparedComponent1 = (IPreparedComponent) rtn1.getValue(); assertNotNull( preparedComponent1 ); IPentahoResultSet resultset1 = preparedComponent1.executePrepared( null ); assertTrue( resultset1.getRowCount() >= 1 ); Object val1 = resultset1.getValueAt( 0, 0 ); IActionParameter rtn2 = context.getOutputParameter( "second_prepared_component" ); //$NON-NLS-1$ assertNotNull( rtn2 ); IPreparedComponent preparedComponent2 = (IPreparedComponent) rtn2.getValue(); assertNotNull( preparedComponent2 ); HashMap map = new HashMap(); map.put( "POSITIONTITLE", "Engineer" ); //$NON-NLS-1$ //$NON-NLS-2$ IPentahoResultSet resultset2 = preparedComponent2.executePrepared( map ); assertTrue( resultset2.getRowCount() >= 1 ); assertEquals( resultset1.getRowCount(), resultset2.getRowCount() ); Object val2 = resultset2.getValueAt( 0, 0 ); assertEquals( "Values from the first and second query should be equal", val1, val2 ); //$NON-NLS-1$ finishTest(); } public void testIPreparedComponentXQueryShareConnection() { startTest(); info( "Expected: Successful execution with object available" ); //$NON-NLS-1$ IRuntimeContext context = run( "/test/ipreparedcomponents/ipreparedcomponent_xquery_shareconn.xaction" ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ assertEquals( Messages.getInstance().getString( "BaseTest.USER_RUNNING_ACTION_SEQUENCE" ), IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus() ); //$NON-NLS-1$ IActionParameter rtn1 = context.getOutputParameter( "prepared_component" ); //$NON-NLS-1$ assertNotNull( rtn1 ); IPreparedComponent preparedComponent1 = (IPreparedComponent) rtn1.getValue(); assertNotNull( preparedComponent1 ); IPentahoResultSet resultset1 = preparedComponent1.executePrepared( null ); assertTrue( resultset1.getRowCount() >= 1 ); Object val1 = resultset1.getValueAt( 0, 0 ); assertNotNull( val1 ); finishTest(); } /* * public void testIPreparedComponentHQLAvailable() { startTest(); * info("Expected: Successful execution with object available"); //$NON-NLS-1$ IRuntimeContext context = run("test", * "ipreparedcomponents", "ipreparedcomponent_hql_available.xaction"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ * assertEquals( Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"), * IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus()); //$NON-NLS-1$ * * IActionParameter rtn = context.getOutputParameter("prepared_component"); //$NON-NLS-1$ assertNotNull(rtn); * IPreparedComponent preparedComponent = (IPreparedComponent) rtn.getValue(); * * assertNotNull(preparedComponent); * * finishTest(); } * * public void testIPreparedComponentHQLPrepareLater() { startTest(); * info("Expected: Successful execution with object available"); //$NON-NLS-1$ IRuntimeContext context = run("test", * "ipreparedcomponents", "ipreparedcomponent_hql_preparelater.xaction"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ * assertEquals( Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"), * IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus()); //$NON-NLS-1$ * * IActionParameter rtn1 = context.getOutputParameter("prepared_component"); //$NON-NLS-1$ assertNotNull(rtn1); * IPreparedComponent preparedComponent1 = (IPreparedComponent) rtn1.getValue(); assertNotNull(preparedComponent1); * IPentahoResultSet resultset1 = preparedComponent1.executePrepared(null); assertTrue(resultset1.getRowCount() >= 1); * Object val1 = resultset1.getValueAt(0, 0); * * IActionParameter rtn2 = context.getOutputParameter("second_prepared_component"); //$NON-NLS-1$ assertNotNull(rtn2); * IPreparedComponent preparedComponent2 = (IPreparedComponent) rtn2.getValue(); assertNotNull(preparedComponent2); * HashMap map = new HashMap(); map.put("mimetypeval", "text/html"); //$NON-NLS-1$ //$NON-NLS-2$ IPentahoResultSet * resultset2 = preparedComponent2.executePrepared(map); assertTrue(resultset2.getRowCount() >= 1); * assertEquals(resultset1.getRowCount(), resultset2.getRowCount()); * * Object val2 = resultset2.getValueAt(0, 0); * * assertEquals("Values from the first and second query should be equal", val1, val2); //$NON-NLS-1$ * * finishTest(); } */ /* * public void testIPreparedComponentHQLShareConnection() { startTest(); * info("Expected: Successful execution with object available"); //$NON-NLS-1$ IRuntimeContext context = run("test", * "ipreparedcomponents", "ipreparedcomponent_hql_shareconn.xaction"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ * assertEquals( Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"), * IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus()); //$NON-NLS-1$ * * IActionParameter rtn1 = context.getOutputParameter("prepared_component"); //$NON-NLS-1$ assertNotNull(rtn1); * IPreparedComponent preparedComponent1 = (IPreparedComponent) rtn1.getValue(); assertNotNull(preparedComponent1); * IPentahoResultSet resultset1 = preparedComponent1.executePrepared(null); assertTrue(resultset1.getRowCount() >= 1); * Object val1 = resultset1.getValueAt(0, 0); * * assertNotNull(val1); * * finishTest(); } */ public static void main( String[] args ) { IPreparedComponentIT test = new IPreparedComponentIT(); try { test.setUp(); // test.testIPreparedComponentSQLTempTables(); // test.testIPreparedComponentSQLAvailable(); // test.testIPreparedComponentSQLPrepareLater(); // test.testIPreparedComponentMDXAvailable(); // test.testIPreparedComponentMDXPrepareLater(); // test.testIPreparedComponentMDXShareConnection(); test.testIPreparedComponentXQueryAvailable(); test.testIPreparedComponentXQueryAvailableErrorNoDocument(); test.testIPreparedComponentXQueryAvailableErrorNoPrepareComponent(); test.testIPreparedComponentXQueryPrepareLater(); test.testIPreparedComponentXQueryShareConnection(); // test.testIPreparedComponentHQLAvailable(); // test.testIPreparedComponentHQLPrepareLater(); // test.testIPreparedComponentHQLShareConnection(); } finally { test.tearDown(); BaseTest.shutdown(); } } }