blob: a23f088191b2485fce96b93c92f19aa5689a1a85 [file] [log] [blame]
/**
* 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.io.UnsupportedEncodingException;
import java.sql.SQLException;
import java.util.Formatter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import com.cloudera.sqoop.SqoopOptions;
import com.cloudera.sqoop.testutil.LobAvroImportTestCase;
import static org.junit.Assert.fail;
/**
* Tests BLOB/CLOB import for Avro with Oracle Db.
*/
public class OracleLobAvroImportTest extends LobAvroImportTestCase {
public static final Log LOG = LogFactory.getLog(
OracleCompatTest.class.getName());
@Override
protected Log getLogger() {
return LOG;
}
@Override
protected String getDbFriendlyName() {
return "Oracle";
}
@Override
protected String getConnectString() {
return OracleUtils.CONNECT_STRING;
}
@Override
protected SqoopOptions getSqoopOptions(Configuration conf) {
SqoopOptions opts = new SqoopOptions(conf);
OracleUtils.setOracleAuth(opts);
return opts;
}
@Override
protected void dropTableIfExists(String table) throws SQLException {
OracleUtils.dropTable(table, getManager());
}
@Override
protected String getBlobInsertStr(String blobData) {
// Oracle wants blob data encoded as hex (e.g. '01fca3b5').
StringBuilder sb = new StringBuilder();
sb.append("'");
Formatter fmt = new Formatter(sb);
try {
for (byte b : blobData.getBytes("UTF-8")) {
fmt.format("%02X", b);
}
} catch (UnsupportedEncodingException uee) {
// Should not happen; Java always supports UTF-8.
fail("Could not get utf-8 bytes for blob string");
return null;
}
sb.append("'");
return sb.toString();
}
}