/*! ****************************************************************************** * * Pentaho Data Integration * * Copyright (C) 2002-2013 by Pentaho : http://www.pentaho.com * ******************************************************************************* * * Licensed 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.pentaho.di.core.database; import junit.framework.TestCase; import org.junit.BeforeClass; import org.junit.Test; import org.pentaho.di.core.KettleEnvironment; import org.pentaho.di.trans.TransMeta; public class TablespaceDDLFragmentTest extends TestCase { public static final String h2DatabaseXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<connection>" + "<name>H2</name>" + "<server>127.0.0.1</server>" + "<type>H2</type>" + "<access>Native</access>" + "<database>mem:db</database>" + "<port></port>" + "<username>sa</username>" + "<password></password>" + "</connection>"; public static final String MySQLDatabaseXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<connection>" + "<name>MySQL</name>" + "<server>127.0.0.1</server>" + "<type>MySQL</type>" + "<access></access>" + "<database>test</database>" + "<port>3306</port>" + "<username>sa</username>" + "<password></password>" + "</connection>"; public static final String OracleDatabaseXMLWithoutTablespaces = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<connection>" + "<name>Oracle</name>" + "<server>127.0.0.1</server>" + "<type>Oracle</type>" + "<access>Native</access>" + "<database>test</database>" + "<port>1024</port>" + "<username>scott</username>" + "<password>tiger</password>" + "</connection>"; public static final String OracleDatabaseXMLWithTablespacesAsValues = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<connection>" + "<name>Oracle</name>" + "<server>127.0.0.1</server>" + "<type>Oracle</type>" + "<access>Native</access>" + "<database>test</database>" + "<port>1024</port>" + "<username>scott</username>" + "<password>tiger</password>" + "<data_tablespace>TABLES</data_tablespace>" + "<index_tablespace>INDEXES</index_tablespace>" + "</connection>"; public static final String OracleDatabaseXMLWithTablespacesAsVariables = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<connection>" + "<name>Oracle</name>" + "<server>127.0.0.1</server>" + "<type>Oracle</type>" + "<access>Native</access>" + "<database>test</database>" + "<port>1024</port>" + "<username>scott</username>" + "<password>tiger</password>" + "<data_tablespace>${TablespaceDDLFragmentTest_DATA_TABLESPACE_1}</data_tablespace>" + "<index_tablespace>${TablespaceDDLFragmentTest_INDEX_TABLESPACE_1}</index_tablespace>" + "</connection>"; @BeforeClass public static void setUpBeforeClass() throws Exception { KettleEnvironment.init( false ); } @Test public void testOracleDatabase() { try { // keep in mind that this execution will read a kettle.properties file TransMeta transMeta = new TransMeta(); // set up variables to be used for tablespace specification // the variables specified should not be specified in the kettle.proeprties file // these should not have quotes generated arounf them transMeta.setVariable( "TablespaceDDLFragmentTest_DATA_TABLESPACE_1", "TABLES" ); transMeta.setVariable( "TablespaceDDLFragmentTest_INDEX_TABLESPACE_1", "INDEXES" ); // these do have quotes generated around them transMeta.setVariable( "TablespaceDDLFragmentTest_DATA_TABLESPACE_2", "TABLE" ); transMeta.setVariable( "TablespaceDDLFragmentTest_INDEX_TABLESPACE_2", "INDEX" ); String ddlFragment = ""; // test without tablespaces not specified DatabaseMeta databaseMeta = new DatabaseMeta( OracleDatabaseXMLWithoutTablespaces ); ddlFragment = databaseMeta.getDatabaseInterface().getDataTablespaceDDL( transMeta, databaseMeta ); assertEquals( ddlFragment, "" ); ddlFragment = databaseMeta.getDatabaseInterface().getIndexTablespaceDDL( transMeta, databaseMeta ); assertEquals( ddlFragment, "" ); // test with tablespaces specified by value databaseMeta = new DatabaseMeta( OracleDatabaseXMLWithTablespacesAsValues ); ddlFragment = databaseMeta.getDatabaseInterface().getDataTablespaceDDL( transMeta, databaseMeta ); assertEquals( ddlFragment, "TABLESPACE TABLES" ); ddlFragment = databaseMeta.getDatabaseInterface().getIndexTablespaceDDL( transMeta, databaseMeta ); assertEquals( ddlFragment, "TABLESPACE INDEXES" ); // test with tablespaces specified as variables: TEST CASE 1 databaseMeta = new DatabaseMeta( OracleDatabaseXMLWithTablespacesAsVariables ); ddlFragment = databaseMeta.getDatabaseInterface().getDataTablespaceDDL( transMeta, databaseMeta ); assertEquals( ddlFragment, "TABLESPACE TABLES" ); ddlFragment = databaseMeta.getDatabaseInterface().getIndexTablespaceDDL( transMeta, databaseMeta ); assertEquals( ddlFragment, "TABLESPACE INDEXES" ); } catch ( Exception e ) { e.printStackTrace(); } } @Test public void testMySQLDatabase() { try { TransMeta transMeta = new TransMeta(); DatabaseMeta databaseMeta = new DatabaseMeta( MySQLDatabaseXML ); transMeta.setVariable( "TablespaceDDLFragmentTest_DATA_TABLESPACE", "TABLES" ); transMeta.setVariable( "TablespaceDDLFragmentTest_INDEX_TABLESPACE", "INDEXES" ); String ddlFragment = ""; ddlFragment = databaseMeta.getDatabaseInterface().getDataTablespaceDDL( transMeta, databaseMeta ); assertEquals( ddlFragment, "" ); ddlFragment = databaseMeta.getDatabaseInterface().getIndexTablespaceDDL( transMeta, databaseMeta ); assertEquals( ddlFragment, "" ); } catch ( Exception e ) { e.printStackTrace(); } } @Test public void testH2Database() { try { TransMeta transMeta = new TransMeta(); DatabaseMeta databaseMeta = new DatabaseMeta( h2DatabaseXML ); transMeta.setVariable( "TablespaceDDLFragmentTest_DATA_TABLESPACE", "TABLES" ); transMeta.setVariable( "TablespaceDDLFragmentTest_INDEX_TABLESPACE", "INDEXES" ); String ddlFragment = ""; ddlFragment = databaseMeta.getDatabaseInterface().getDataTablespaceDDL( transMeta, databaseMeta ); assertEquals( ddlFragment, "" ); ddlFragment = databaseMeta.getDatabaseInterface().getIndexTablespaceDDL( transMeta, databaseMeta ); assertEquals( ddlFragment, "" ); } catch ( Exception e ) { e.printStackTrace(); } } }