/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF 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 com.cloudera.sqoop.manager; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.cloudera.sqoop.SqoopOptions; /** * Helper methods for Oracle testing. */ public final class OracleUtils { public static final Log LOG = LogFactory.getLog(OracleUtils.class.getName()); // Express edition hardcoded name. public static final String ORACLE_DATABASE_NAME = "xe"; public static final String CONNECT_STRING = System.getProperty("sqoop.test.oracle.connectstring", "jdbc:oracle:thin:@//localhost/" + ORACLE_DATABASE_NAME); public static final String ORACLE_USER_NAME = System.getProperty("sqoop.test.oracle.username", "SQOOPTEST"); public static final String ORACLE_USER_PASS = System.getProperty("sqoop.test.oracle.password", "12345"); public static final String ORACLE_SECONDARY_USER_NAME = "SQOOPTEST2"; public static final String ORACLE_SECONDARY_USER_PASS = "ABCDEF"; public static final String ORACLE_INVALID_USER_NAME = "invalidusr"; public static final String SYSTEMTEST_TABLE_NAME = "ORAOOP_TEST"; public static final int SYSTEMTEST_NUM_ROWS = 100; public static final int INTEGRATIONTEST_NUM_ROWS = 10000; // Number of mappers if wanting to override default setting public static final int NUM_MAPPERS = 0; // Oracle degree of parallelism to use when creating table. // If 0 we will calculate a recommended value public static final int ORACLE_PARALLEL_DEGREE = 0; private OracleUtils() { } public static void setOracleAuth(SqoopOptions options) { options.setUsername(ORACLE_USER_NAME); options.setPassword(ORACLE_USER_PASS); } public static void setOracleSecondaryUserAuth(SqoopOptions options) { options.setUsername(ORACLE_SECONDARY_USER_NAME); options.setPassword(ORACLE_SECONDARY_USER_PASS); } /** * Drop a table if it exists. */ public static void dropTable(String tableName, ConnManager manager) throws SQLException { Connection connection = null; Statement st = null; try { connection = manager.getConnection(); connection.setAutoCommit(false); st = connection.createStatement(); // create the database table and populate it with data. st.executeUpdate(getDropTableStatement(tableName)); connection.commit(); } finally { try { if (null != st) { st.close(); } } catch (SQLException sqlE) { LOG.warn("Got SQLException when closing connection: " + sqlE); } } } public static String getDropTableStatement(String tableName) { return "BEGIN EXECUTE IMMEDIATE 'DROP TABLE " + tableName + "'; " + "exception when others then null; end;"; } }