SQOOP-3169: Evaluate and fix SQLServer Manual tests
(Boglarka Egyed via Anna Szonyi)
diff --git a/build.xml b/build.xml
index 73db28b..10deb83 100644
--- a/build.xml
+++ b/build.xml
@@ -224,6 +224,9 @@
<property name="sqoop.test.sqlserver.connectstring.host_url"
value="jdbc:sqlserver://sqlserverhost:1433"/>
+ <property name="sqoop.test.sqlserver.database"
+ value="sqooptest"/>
+
<property name="java.security.krb5.realm"
value="OX.AC.UK"/>
@@ -850,6 +853,9 @@
<sysproperty key="sqoop.test.sqlserver.connectstring.host_url"
value="${sqoop.test.sqlserver.connectstring.host_url}"/>
+ <sysproperty key="sqoop.test.sqlserver.database"
+ value="${sqoop.test.sqlserver.database}"/>
+
<sysproperty key="sqoop.test.msserver.connector.factory"
value="${sqoop.test.msserver.connector.factory}"/>
diff --git a/src/test/com/cloudera/sqoop/hive/TestHiveImport.java b/src/test/com/cloudera/sqoop/hive/TestHiveImport.java
index 33e0cc4..a624f52 100644
--- a/src/test/com/cloudera/sqoop/hive/TestHiveImport.java
+++ b/src/test/com/cloudera/sqoop/hive/TestHiveImport.java
@@ -104,7 +104,7 @@
setColNames(cols);
}
- protected String[] getTypesNewLineTest() {
+ protected String[] getTypes() {
String[] types = { "VARCHAR(32)", "INTEGER", "CHAR(64)" };
return types;
}
@@ -295,7 +295,7 @@
final String TABLE_NAME = "NORMAL_HIVE_IMPORT_AS_PARQUET";
setCurTableName(TABLE_NAME);
setNumCols(3);
- String [] types = { "VARCHAR(32)", "INTEGER", "CHAR(64)" };
+ String [] types = getTypes();
String [] vals = { "'test'", "42", "'somestring'" };
String [] extraArgs = {"--as-parquetfile"};
@@ -382,7 +382,7 @@
final String TABLE_NAME = "CREATE_OVERWRITE_HIVE_IMPORT_AS_PARQUET";
setCurTableName(TABLE_NAME);
setNumCols(3);
- String [] types = { "VARCHAR(32)", "INTEGER", "CHAR(64)" };
+ String [] types = getTypes();
String [] vals = { "'test'", "42", "'somestring'" };
String [] extraArgs = {"--as-parquetfile"};
ImportTool tool = new ImportTool();
@@ -441,7 +441,7 @@
final String TABLE_NAME = "APPEND_HIVE_IMPORT_AS_PARQUET";
setCurTableName(TABLE_NAME);
setNumCols(3);
- String [] types = { "VARCHAR(32)", "INTEGER", "CHAR(64)" };
+ String [] types = getTypes();
String [] vals = { "'test'", "42", "'somestring'" };
String [] extraArgs = {"--as-parquetfile"};
String [] args = getArgv(false, extraArgs);
@@ -560,7 +560,7 @@
LOG.info("Doing import of single row into FIELD_WITH_NL_HIVE_IMPORT table");
setCurTableName(TABLE_NAME);
setNumCols(3);
- String[] types = getTypesNewLineTest();
+ String[] types = getTypes();
String[] vals = { "'test with \n new lines \n'", "42",
"'oh no " + '\01' + " field delims " + '\01' + "'", };
String[] moreArgs = { "--"+ BaseSqoopTool.HIVE_DROP_DELIMS_ARG };
@@ -609,7 +609,7 @@
+ "FIELD_WITH_NL_REPLACEMENT_HIVE_IMPORT table");
setCurTableName(TABLE_NAME);
setNumCols(3);
- String[] types = getTypesNewLineTest();
+ String[] types = getTypes();
String[] vals = { "'test with\nnew lines\n'", "42",
"'oh no " + '\01' + " field delims " + '\01' + "'", };
String[] moreArgs = { "--"+BaseSqoopTool.HIVE_DELIMS_REPLACEMENT_ARG, " "};
diff --git a/src/test/com/cloudera/sqoop/manager/SQLServerManagerExportManualTest.java b/src/test/com/cloudera/sqoop/manager/SQLServerManagerExportManualTest.java
index 9a92479..668a3a9 100644
--- a/src/test/com/cloudera/sqoop/manager/SQLServerManagerExportManualTest.java
+++ b/src/test/com/cloudera/sqoop/manager/SQLServerManagerExportManualTest.java
@@ -53,10 +53,16 @@
static final String HOST_URL = System.getProperty(
"sqoop.test.sqlserver.connectstring.host_url",
"jdbc:sqlserver://sqlserverhost:1433");
+ static final String DATABASE_NAME = System.getProperty(
+ "sqoop.test.sqlserver.database",
+ "sqooptest");
+ static final String DATABASE_USER = System.getProperty(
+ "ms.sqlserver.username",
+ "sqoopuser");
+ static final String DATABASE_PASSWORD = System.getProperty(
+ "ms.sqlserver.password",
+ "password");
- static final String DATABASE_NAME = "SQOOPTEST";
- static final String DATABASE_USER = "SQOOPUSER";
- static final String DATABASE_PASSWORD = "PASSWORD";
static final String SCHEMA_DBO = "dbo";
static final String DBO_TABLE_NAME = "EMPLOYEES_MSSQL";
static final String DBO_BINARY_TABLE_NAME = "BINARYTYPE_MSSQL";
@@ -84,6 +90,11 @@
return false;
}
+ private String getDropTableStatement(String schema, String tableName) {
+ return "DROP TABLE IF EXISTS " + manager.escapeObjectName(schema)
+ + "." + manager.escapeObjectName(tableName);
+ }
+
@Before
public void setUp() {
super.setUp();
@@ -247,6 +258,14 @@
@After
public void tearDown() {
+ try {
+ Statement stmt = conn.createStatement();
+ stmt.executeUpdate(getDropTableStatement(SCHEMA_DBO, DBO_TABLE_NAME));
+ stmt.executeUpdate(getDropTableStatement(SCHEMA_SCH, SCH_TABLE_NAME));
+ } catch (SQLException e) {
+ LOG.error("Can't clean up the database:", e);
+ }
+
super.tearDown();
try {
conn.close();
@@ -382,11 +401,11 @@
});
// first time will be insert.
runExport(getArgv(SCH_TABLE_NAME, "--update-key", "id",
- "--update-mode", "allowinsert"));
+ "--update-mode", "allowinsert", "--", "--schema", SCHEMA_SCH));
// second time will be update.
runExport(getArgv(SCH_TABLE_NAME, "--update-key", "id",
- "--update-mode", "allowinsert"));
- assertRowCount(2, escapeObjectName(SCH_TABLE_NAME), conn);
+ "--update-mode", "allowinsert", "--", "--schema", SCHEMA_SCH));
+ assertRowCount(2, escapeObjectName(SCHEMA_SCH) + "." + escapeObjectName(SCH_TABLE_NAME), conn);
}
public static void checkSQLBinaryTableContent(String[] expected, String tableName, Connection connection){
diff --git a/src/test/com/cloudera/sqoop/manager/SQLServerManagerImportManualTest.java b/src/test/com/cloudera/sqoop/manager/SQLServerManagerImportManualTest.java
index 1f69725..abc0479 100644
--- a/src/test/com/cloudera/sqoop/manager/SQLServerManagerImportManualTest.java
+++ b/src/test/com/cloudera/sqoop/manager/SQLServerManagerImportManualTest.java
@@ -75,10 +75,16 @@
static final String HOST_URL = System.getProperty(
"sqoop.test.sqlserver.connectstring.host_url",
"jdbc:sqlserver://sqlserverhost:1433");
+ static final String DATABASE_NAME = System.getProperty(
+ "sqoop.test.sqlserver.database",
+ "sqooptest");
+ static final String DATABASE_USER = System.getProperty(
+ "ms.sqlserver.username",
+ "sqoopuser");
+ static final String DATABASE_PASSWORD = System.getProperty(
+ "ms.sqlserver.password",
+ "password");
- static final String DATABASE_NAME = "SQOOPTEST";
- static final String DATABASE_USER = "SQOOPUSER";
- static final String DATABASE_PASSWORD = "PASSWORD";
static final String SCHEMA_DBO = "dbo";
static final String DBO_TABLE_NAME = "EMPLOYEES_MSSQL";
static final String SCHEMA_SCH = "sch";
@@ -94,6 +100,7 @@
private SQLServerManager manager;
private Configuration conf = new Configuration();
+ private Connection conn = null;
@Override
protected Configuration getConf() {
@@ -105,6 +112,11 @@
return false;
}
+ private String getDropTableStatement(String schema, String tableName) {
+ return "DROP TABLE IF EXISTS " + manager.escapeObjectName(schema)
+ + "." + manager.escapeObjectName(tableName);
+ }
+
@Before
public void setUp() {
super.setUp();
@@ -130,7 +142,6 @@
String fulltableName = manager.escapeObjectName(schema)
+ "." + manager.escapeObjectName(table);
- Connection conn = null;
Statement stmt = null;
// Create schema if needed
@@ -208,6 +219,14 @@
@After
public void tearDown() {
+ try {
+ Statement stmt = conn.createStatement();
+ stmt.executeUpdate(getDropTableStatement(SCHEMA_DBO, DBO_TABLE_NAME));
+ stmt.executeUpdate(getDropTableStatement(SCHEMA_SCH, SCH_TABLE_NAME));
+ } catch (SQLException e) {
+ LOG.error("Can't clean up the database:", e);
+ }
+
super.tearDown();
try {
manager.close();
diff --git a/src/test/org/apache/sqoop/manager/sqlserver/MSSQLTestUtils.java b/src/test/org/apache/sqoop/manager/sqlserver/MSSQLTestUtils.java
index 851bf49..2220b7d 100644
--- a/src/test/org/apache/sqoop/manager/sqlserver/MSSQLTestUtils.java
+++ b/src/test/org/apache/sqoop/manager/sqlserver/MSSQLTestUtils.java
@@ -17,9 +17,6 @@
*/
package org.apache.sqoop.manager.sqlserver;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
@@ -27,9 +24,6 @@
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -47,10 +41,15 @@
"ms.sqlserver.username", "SQOOPUSER");
static final String DATABASE_PASSWORD = System.getProperty(
"ms.sqlserver.password", "PASSWORD");
+ static final String DATABASE_NAME = System.getProperty(
+ "sqoop.test.sqlserver.database",
+ "sqooptest");
public static final String HOST_URL = System.getProperty(
"sqoop.test.sqlserver.connectstring.host_url",
"jdbc:sqlserver://sqlserverhost:1433");
+ public static final String CONNECT_STRING = HOST_URL + ";database=" + DATABASE_NAME;
+
public static final String CREATE_TALBE_LINEITEM
= "CREATE TABLE TPCH1M_LINEITEM"
+ "( [L_ORDERKEY] [int] NULL, [L_PARTKEY] "
@@ -70,7 +69,7 @@
if (conn == null) {
try {
- Connection con = DriverManager.getConnection(HOST_URL,
+ Connection con = DriverManager.getConnection(CONNECT_STRING,
DATABASE_USER, DATABASE_PASSWORD);
conn = con;
return con;
@@ -158,6 +157,14 @@
return DATABASE_PASSWORD;
}
+ public static String getDBDatabaseName() {
+ return DATABASE_NAME;
+ }
+
+ public static String getDBConnectString() {
+ return CONNECT_STRING;
+ }
+
public void dropTableIfExists(String table) throws SQLException {
conn = getConnection();
System.out.println("Dropping table : " + table);
diff --git a/src/test/org/apache/sqoop/manager/sqlserver/ManagerCompatExport.java b/src/test/org/apache/sqoop/manager/sqlserver/ManagerCompatExport.java
index 8c5176a..be2b22c 100644
--- a/src/test/org/apache/sqoop/manager/sqlserver/ManagerCompatExport.java
+++ b/src/test/org/apache/sqoop/manager/sqlserver/ManagerCompatExport.java
@@ -40,7 +40,6 @@
import com.cloudera.sqoop.tool.ExportTool;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
@@ -117,162 +116,162 @@
public abstract void createFile(DATATYPES dt, String data) throws Exception;
@Test
- public void testVarBinary() {
+ public void testVarBinary() throws Exception {
exportTestMethod(DATATYPES.VARBINARY);
}
@Test
- public void testTime() {
+ public void testTime() throws Exception {
exportTestMethod(DATATYPES.TIME);
}
@Test
- public void testSmalldatetime() {
+ public void testSmalldatetime() throws Exception {
exportTestMethod(DATATYPES.SMALLDATETIME);
}
@Test
- public void testdatetime2() {
+ public void testdatetime2() throws Exception {
exportTestMethod(DATATYPES.DATETIME2);
}
@Test
- public void testdatetime() {
+ public void testdatetime() throws Exception {
exportTestMethod(DATATYPES.DATETIME);
}
@Test
- public void testdatetimeoffset() {
+ public void testdatetimeoffset() throws Exception {
exportTestMethod(DATATYPES.DATETIMEOFFSET);
}
@Test
- public void testDecimal() {
+ public void testDecimal() throws Exception {
exportTestMethod(DATATYPES.DECIMAL);
}
@Test
- public void testNumeric() {
+ public void testNumeric() throws Exception {
exportTestMethod(DATATYPES.NUMERIC);
}
@Test
- public void testBigInt() {
+ public void testBigInt() throws Exception {
exportTestMethod(DATATYPES.BIGINT);
}
@Test
- public void testInt() {
+ public void testInt() throws Exception {
exportTestMethod(DATATYPES.INT);
}
@Test
- public void testSmallInt() {
+ public void testSmallInt() throws Exception {
exportTestMethod(DATATYPES.SMALLINT);
}
@Test
- public void testTinyint() {
+ public void testTinyint() throws Exception {
exportTestMethod(DATATYPES.TINYINT);
}
@Test
- public void testFloat() {
+ public void testFloat() throws Exception {
exportTestMethod(DATATYPES.FLOAT);
}
@Test
- public void testReal() {
+ public void testReal() throws Exception {
exportTestMethod(DATATYPES.REAL);
}
@Test
- public void testDate() {
+ public void testDate() throws Exception {
exportTestMethod(DATATYPES.DATE);
}
@Test
- public void testMoney() {
+ public void testMoney() throws Exception {
exportTestMethod(DATATYPES.MONEY);
}
@Test
- public void testSmallMoney() {
+ public void testSmallMoney() throws Exception {
exportTestMethod(DATATYPES.SMALLMONEY);
}
@Test
- public void testText() {
+ public void testText() throws Exception {
exportTestMethod(DATATYPES.TEXT);
}
@Test
- public void testVarchar() {
+ public void testVarchar() throws Exception {
exportTestMethod(DATATYPES.VARCHAR);
}
@Test
- public void testChar() {
+ public void testChar() throws Exception {
exportTestMethod(DATATYPES.CHAR);
}
@Test
- public void testNText() {
+ public void testNText() throws Exception {
exportTestMethod(DATATYPES.NTEXT);
}
@Test
- public void testNChar() {
+ public void testNChar() throws Exception {
exportTestMethod(DATATYPES.NCHAR);
}
@Test
- public void testNVarchar() {
+ public void testNVarchar() throws Exception {
exportTestMethod(DATATYPES.NVARCHAR);
}
@Test
- public void testImage() {
+ public void testImage() throws Exception {
exportTestMethod(DATATYPES.IMAGE);
}
@Test
- public void testBinary() {
+ public void testBinary() throws Exception {
exportTestMethod(DATATYPES.BINARY);
}
- public void exportTestMethod(DATATYPES dt) {
+ public void exportTestMethod(DATATYPES dt) throws SQLException {
int exceptionCount = 0;
List testdata = tdfs.getTestdata(dt);
@@ -370,6 +369,8 @@
} catch (Error e) {
addToReport(current, e);
exceptionCount++;
+ } finally {
+ dropTableIfExists(getTableName(dt));
}
}
if (exceptionCount > 0) {
@@ -377,7 +378,7 @@
System.out.println("There were failures for :" + dt.toString());
System.out.println("Failed for " + exceptionCount + "/"
+ testdata.size() + " test data samples\n");
- System.out.println("Sroll up for detailed errors");
+ System.out.println("Scroll up for detailed errors");
System.out
.println("----------------------------------------------------------"
+ "-");
@@ -387,25 +388,6 @@
}
- /*
-
- */
-
- public String[] extractData(List data, String negPosFlag,
- KEY_STRINGS readBackType) {
- List<String> filtered = new ArrayList<String>();
- for (Iterator<MSSQLTestData> itr = data.iterator(); itr.hasNext();) {
- MSSQLTestData current = itr.next();
- if (current.getData(KEY_STRINGS.NEG_POS_FLAG).toString().equals(
- negPosFlag)) {
- filtered.add(current.getData(readBackType));
- }
- }
- String[] ret = new String[filtered.size()];
- filtered.toArray(ret);
- return ret;
- }
-
public void verifyExport(DATATYPES dt, String[] data) throws SQLException {
LOG.info("Verifying export: " + getTableName());
// Check that we got back the correct number of records.
@@ -446,43 +428,6 @@
}
- public void verifyNegativeExport(DATATYPES dt, String[] data)
- throws SQLException {
- LOG.info("Verifying export: " + getTableName());
- // Check that we got back the correct number of records.
- Connection conn = getManager().getConnection();
-
- PreparedStatement statement = conn.prepareStatement("SELECT "
- + getColName() + " FROM " + getTableName(dt),
- ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
- System.out.println("data samples being compared : " + data.length);
-
- ResultSet rs = null;
- try {
- rs = statement.executeQuery();
- int cnt = 0;
- try {
- while (rs.next()) {
- String tmp = rs.getString(1);
- String expected = data[cnt++];
- System.out.println("Readback, expected" + tmp + " :"
- + expected);
- if (tmp == null) {
- assertNull("Must be null", expected);
- } else {
- assertNotSame("Data must match", expected, tmp);
- }
- }
-
- } finally {
- rs.close();
- }
- } finally {
- statement.close();
- }
-
- }
-
public void verifyExport(DATATYPES dt, String data) throws SQLException {
verifyExport(dt, new String[] { data });
@@ -568,10 +513,9 @@
return false;
}
+ @Override
protected String getConnectString() {
- return System.getProperty(
- "sqoop.test.sqlserver.connectstring.host_url",
- "jdbc:sqlserver://sqlserverhost:1433");
+ return MSSQLTestUtils.getDBConnectString();
}
/**
diff --git a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerDatatypeExportDelimitedFileManualTest.java b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerDatatypeExportDelimitedFileManualTest.java
index 099d734..539eeb3 100644
--- a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerDatatypeExportDelimitedFileManualTest.java
+++ b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerDatatypeExportDelimitedFileManualTest.java
@@ -22,7 +22,6 @@
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
-import org.apache.sqoop.manager.sqlserver.MSSQLTestUtils.*;
import org.apache.sqoop.manager.sqlserver.MSSQLTestDataFileParser.DATATYPES;
import java.io.OutputStream;
@@ -30,11 +29,29 @@
import java.io.BufferedWriter;
/**
-* Export delimited file SQL Server.
-*/
+ * Test to export delimited file to SQL Server.
+ *
+ * This uses JDBC to export data to an SQLServer database from HDFS.
+ *
+ * Since this requires an SQLServer installation,
+ * this class is named in such a way that Sqoop's default QA process does
+ * not run it. You need to run this manually with
+ * -Dtestcase=SQLServerDatatypeExportDelimitedFileManualTest.
+ *
+ * You need to put SQL Server JDBC driver library (sqljdbc4.jar) in a location
+ * where Sqoop will be able to access it (since this library cannot be checked
+ * into Apache's tree for licensing reasons).
+ *
+ * To set up your test environment:
+ * Install SQL Server Express 2012
+ * Create a database SQOOPTEST
+ * Create a login SQOOPUSER with password PASSWORD and grant all
+ * access for SQOOPTEST to SQOOPUSER.
+ */
public class SQLServerDatatypeExportDelimitedFileManualTest
extends ManagerCompatExport {
+ @Override
public void createFile(DATATYPES dt, String[] data) throws IOException {
Path tablePath = getTablePath(dt);
Path filePath = new Path(tablePath, "part0000");
@@ -60,10 +77,12 @@
os.close();
}
+ @Override
public void createFile(DATATYPES dt, String data) throws IOException {
createFile(dt, new String[] { data });
}
+ @Override
public String getOutputFileName() {
return "ManagerCompatExportDelim.txt";
}
diff --git a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerDatatypeExportSequenceFileManualTest.java b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerDatatypeExportSequenceFileManualTest.java
index 21676f0..0f206d0 100644
--- a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerDatatypeExportSequenceFileManualTest.java
+++ b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerDatatypeExportSequenceFileManualTest.java
@@ -29,7 +29,6 @@
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.util.ReflectionUtils;
-import org.apache.sqoop.manager.sqlserver.MSSQLTestUtils.*;
import org.apache.sqoop.manager.sqlserver.MSSQLTestDataFileParser.DATATYPES;
import com.cloudera.sqoop.SqoopOptions;
@@ -43,14 +42,31 @@
import static org.junit.Assert.assertTrue;
/**
-* Export sequence file to SQL Server test.
-*/
+ * Test to export sequence file to SQL Server.
+ *
+ * This uses JDBC to export data to an SQLServer database from HDFS.
+ *
+ * Since this requires an SQLServer installation,
+ * this class is named in such a way that Sqoop's default QA process does
+ * not run it. You need to run this manually with
+ * -Dtestcase=SQLServerDatatypeExportSequenceFileManualTest.
+ *
+ * You need to put SQL Server JDBC driver library (sqljdbc4.jar) in a location
+ * where Sqoop will be able to access it (since this library cannot be checked
+ * into Apache's tree for licensing reasons).
+ *
+ * To set up your test environment:
+ * Install SQL Server Express 2012
+ * Create a database SQOOPTEST
+ * Create a login SQOOPUSER with password PASSWORD and grant all
+ * access for SQOOPTEST to SQOOPUSER.
+ */
public class SQLServerDatatypeExportSequenceFileManualTest
extends ManagerCompatExport {
private static Map jars = new HashMap();
- @Override
+ @Override
public void createFile(DATATYPES dt, String[] data) throws Exception {
try {
codeGen(dt);
@@ -142,11 +158,9 @@
jars.put(dt, jarFileName);
return (getArgv(dt, "--class-name", className, "--jar-file",
jarFileName));
-
-
-
}
+ @Override
protected String[] getArgv(DATATYPES dt) {
String[] args = super.getArgv(dt);
@@ -177,7 +191,7 @@
codeGenArgv.add("--table");
codeGenArgv.add(getTableName(dt));
codeGenArgv.add("--connect");
- codeGenArgv.add(getConnectString());
+ codeGenArgv.add(MSSQLTestUtils.getDBConnectString());
codeGenArgv.add("--fields-terminated-by");
codeGenArgv.add("\\t");
codeGenArgv.add("--lines-terminated-by");
@@ -225,7 +239,7 @@
args.add("--export-dir");
args.add(getTablePath(dt).toString());
args.add("--connect");
- args.add(getConnectString());
+ args.add(MSSQLTestUtils.getDBConnectString());
args.add("--fields-terminated-by");
args.add("\\t");
args.add("--lines-terminated-by");
diff --git a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerDatatypeImportDelimitedFileManualTest.java b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerDatatypeImportDelimitedFileManualTest.java
index 519fb52..9c20bca 100644
--- a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerDatatypeImportDelimitedFileManualTest.java
+++ b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerDatatypeImportDelimitedFileManualTest.java
@@ -30,7 +30,6 @@
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.util.StringUtils;
-import org.apache.sqoop.manager.sqlserver.MSSQLTestUtils.*;
import org.apache.sqoop.manager.sqlserver.MSSQLTestDataFileParser.DATATYPES;
import com.cloudera.sqoop.Sqoop;
import com.cloudera.sqoop.SqoopOptions;
@@ -38,13 +37,31 @@
import com.cloudera.sqoop.testutil.CommonArgs;
import com.cloudera.sqoop.tool.ImportTool;
import com.cloudera.sqoop.util.ClassLoaderStack;
+import org.junit.Ignore;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
/**
- * Test import delimited file from SQL Server.
+ * Test to import delimited file from SQL Server.
+ *
+ * This uses JDBC to import data from an SQLServer database to HDFS.
+ *
+ * Since this requires an SQLServer installation,
+ * this class is named in such a way that Sqoop's default QA process does
+ * not run it. You need to run this manually with
+ * -Dtestcase=SQLServerDatatypeImportDelimitedFileManualTest.
+ *
+ * You need to put SQL Server JDBC driver library (sqljdbc4.jar) in a location
+ * where Sqoop will be able to access it (since this library cannot be checked
+ * into Apache's tree for licensing reasons).
+ *
+ * To set up your test environment:
+ * Install SQL Server Express 2012
+ * Create a database SQOOPTEST
+ * Create a login SQOOPUSER with password PASSWORD and grant all
+ * access for SQOOPTEST to SQOOPUSER.
*/
public class SQLServerDatatypeImportDelimitedFileManualTest
extends SQLServerDatatypeImportSequenceFileManualTest {
@@ -88,7 +105,7 @@
args.add("--warehouse-dir");
args.add(getWarehouseDir());
args.add("--connect");
- args.add(getConnectString());
+ args.add(MSSQLTestUtils.getDBConnectString());
args.add("--num-mappers");
args.add("2");
@@ -190,13 +207,13 @@
} finally {
IOUtils.closeStream(reader);
}
- LOG.info("Read back from sequencefile: " + line);
+ LOG.info("Read back from delimited file: " + line);
foundRecord = true;
// Add trailing '\n' to expected value since
// SqoopRecord.toString()
// encodes the record delim.
if (null == expectedVal) {
- assertEquals("Error validating result from SeqFile",
+ assertEquals("Error validating result from delimited file",
"null\n", line);
}
} catch (EOFException eoe) {
@@ -209,7 +226,7 @@
}
if (!foundRecord) {
- fail("Couldn't read any records from SequenceFiles");
+ fail("Couldn't read any records from delimited file");
}
} catch (IOException ioe) {
LOG.error(StringUtils.stringifyException(ioe));
@@ -221,15 +238,6 @@
}
}
-
- @Test
- public void testVarBinary() {
- if (!supportsVarBinary()) {
- return;
- }
- dataTypeTest(DATATYPES.VARBINARY);
- }
-
@Test
public void testTime() {
if (!supportsTime()) {
@@ -240,6 +248,56 @@
dataTypeTest(DATATYPES.TIME);
}
+ @Ignore("Ignored as used type is not supported for table splitting.")
+ @Test
+ public void testVarBinary() {
+ }
+
+ @Ignore("Ignored as used type is not supported for table splitting.")
+ @Test
+ public void testBit() {
+ }
+
+ @Ignore("Ignored as used type is not supported for table splitting.")
+ @Test
+ public void testBit2() {
+ }
+
+ @Ignore("Ignored as used type is not supported for table splitting.")
+ @Test
+ public void testBit3() {
+ }
+
+ @Ignore("Ignored as used type is not supported for table splitting.")
+ @Test
+ public void testNChar() {
+ }
+
+ @Ignore("Ignored as used type is not supported for table splitting.")
+ @Test
+ public void testChar() {
+ }
+
+ @Ignore("Ignored as used type is not supported for table splitting.")
+ @Test
+ public void testVarchar() {
+ }
+
+ @Ignore("Ignored as used type is not supported for table splitting.")
+ @Test
+ public void testNVarchar() {
+ }
+
+ @Ignore("Ignored as used type is not supported for table splitting.")
+ @Test
+ public void testBinary() {
+ }
+
+ @Ignore("Ignored as used type is not supported for table splitting.")
+ @Test
+ public void testTimestamp3() {
+ }
+
public String getResportFileName(){
return this.getClass().toString()+".txt";
}
diff --git a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerDatatypeImportSequenceFileManualTest.java b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerDatatypeImportSequenceFileManualTest.java
index a0dad8a..9cd3176 100644
--- a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerDatatypeImportSequenceFileManualTest.java
+++ b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerDatatypeImportSequenceFileManualTest.java
@@ -42,7 +42,24 @@
import static org.junit.Assert.fail;
/**
- * Testing import of a sequence file to SQL Server.
+ * Test importing sequence file from SQL Server.
+ *
+ * This uses JDBC to import data from an SQLServer database to HDFS.
+ *
+ * Since this requires an SQLServer installation,
+ * this class is named in such a way that Sqoop's default QA process does
+ * not run it. You need to run this manually with
+ * -Dtestcase=SQLServerDatatypeImportSequenceFileManualTest.
+ *
+ * You need to put SQL Server JDBC driver library (sqljdbc4.jar) in a location
+ * where Sqoop will be able to access it (since this library cannot be checked
+ * into Apache's tree for licensing reasons).
+ *
+ * To set up your test environment:
+ * Install SQL Server Express 2012
+ * Create a database SQOOPTEST
+ * Create a login SQOOPUSER with password PASSWORD and grant all
+ * access for SQOOPTEST to SQOOPUSER.
*/
public class SQLServerDatatypeImportSequenceFileManualTest extends
ManagerCompatTestCase {
@@ -89,9 +106,7 @@
}
protected String getConnectString() {
- return System.getProperty(
- "sqoop.test.sqlserver.connectstring.host_url",
- "jdbc:sqlserver://sqlserverhost:1433");
+ return MSSQLTestUtils.getDBConnectString();
}
/**
diff --git a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerHiveImportManualTest.java b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerHiveImportManualTest.java
index 1999272..ab3dd08 100644
--- a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerHiveImportManualTest.java
+++ b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerHiveImportManualTest.java
@@ -23,22 +23,37 @@
import java.sql.SQLException;
import java.util.ArrayList;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.util.StringUtils;
-import org.apache.sqoop.manager.sqlserver.MSSQLTestUtils.*;
import com.cloudera.sqoop.SqoopOptions;
import com.cloudera.sqoop.hive.TestHiveImport;
import com.cloudera.sqoop.testutil.CommonArgs;
import com.cloudera.sqoop.tool.SqoopTool;
+import org.junit.After;
import org.junit.Before;
import static org.junit.Assert.fail;
/**
* Test import to Hive from SQL Server.
+ *
+ * This uses JDBC to import data from an SQLServer database to HDFS.
+ *
+ * Since this requires an SQLServer installation,
+ * this class is named in such a way that Sqoop's default QA process does
+ * not run it. You need to run this manually with
+ * -Dtestcase=SQLServerHiveImportManualTest.
+ *
+ * You need to put SQL Server JDBC driver library (sqljdbc4.jar) in a location
+ * where Sqoop will be able to access it (since this library cannot be checked
+ * into Apache's tree for licensing reasons).
+ *
+ * To set up your test environment:
+ * Install SQL Server Express 2012
+ * Create a database SQOOPTEST
+ * Create a login SQOOPUSER with password PASSWORD and grant all
+ * access for SQOOPTEST to SQOOPUSER.
*/
public class SQLServerHiveImportManualTest extends TestHiveImport {
@@ -47,18 +62,28 @@
super.setUp();
}
+ @After
+ public void tearDown() {
+ try {
+ dropTableIfExists(getTableName());
+ } catch (SQLException sqle) {
+ LOG.info("Table clean-up failed: " + sqle);
+ } finally {
+ super.tearDown();
+ }
+ }
+
protected boolean useHsqldbTestServer() {
return false;
}
protected String getConnectString() {
- return System.getProperty(
- "sqoop.test.sqlserver.connectstring.host_url",
- "jdbc:sqlserver://sqlserverhost:1433");
+ return MSSQLTestUtils.getDBConnectString();
}
//SQL Server pads out
- protected String[] getTypesNewLineTest() {
+ @Override
+ protected String[] getTypes() {
String[] types = { "VARCHAR(32)", "INTEGER", "VARCHAR(64)" };
return types;
}
@@ -115,7 +140,7 @@
protected String[] getArgv(boolean includeHadoopFlags, String[] moreArgs) {
ArrayList<String> args = new ArrayList<String>();
- System.out.println("Ovverdien getArgv is called..");
+ System.out.println("Overridden getArgv is called..");
if (includeHadoopFlags) {
CommonArgs.addHadoopFlags(args);
}
diff --git a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerManagerManualTest.java b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerManagerManualTest.java
index 1178e3c..8cc5a0b 100644
--- a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerManagerManualTest.java
+++ b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerManagerManualTest.java
@@ -30,7 +30,6 @@
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.util.StringUtils;
-import org.apache.sqoop.manager.sqlserver.MSSQLTestUtils.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -49,8 +48,25 @@
/**
* Test methods of the generic SqlManager implementation.
+ *
+ * This uses JDBC to import data from an SQLServer database to HDFS.
+ *
+ * Since this requires an SQLServer installation,
+ * this class is named in such a way that Sqoop's default QA process does
+ * not run it. You need to run this manually with
+ * -Dtestcase=SQLServerManagerManualTest.
+ *
+ * You need to put SQL Server JDBC driver library (sqljdbc4.jar) in a location
+ * where Sqoop will be able to access it (since this library cannot be checked
+ * into Apache's tree for licensing reasons).
+ *
+ * To set up your test environment:
+ * Install SQL Server Express 2012
+ * Create a database SQOOPTEST
+ * Create a login SQOOPUSER with password PASSWORD and grant all
+ * access for SQOOPTEST to SQOOPUSER.
*/
-public class SQLServerManagerManualTest {
+public class SQLServerManagerManualTest {
public static final Log LOG = LogFactory.getLog(
SQLServerManagerManualTest.class.getName());
@@ -282,9 +298,7 @@
}
protected String getConnectString() {
- return System.getProperty(
- "sqoop.test.sqlserver.connectstring.host_url",
- "jdbc:sqlserver://sqlserverhost:1433");
+ return MSSQLTestUtils.getDBConnectString();
}
/**
diff --git a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerMultiColsManualTest.java b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerMultiColsManualTest.java
index 6a8ab51..51d5f75 100644
--- a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerMultiColsManualTest.java
+++ b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerMultiColsManualTest.java
@@ -22,14 +22,31 @@
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.hadoop.conf.Configuration;
-import org.apache.sqoop.manager.sqlserver.MSSQLTestUtils.*;
import com.cloudera.sqoop.SqoopOptions;
import com.cloudera.sqoop.TestMultiCols;
+import org.junit.After;
import org.junit.Test;
/**
- * Test multiple columns SQL Server.
+ * Test multiple columns in SQL Server.
+ *
+ * This uses JDBC to import data from an SQLServer database to HDFS.
+ *
+ * Since this requires an SQLServer installation,
+ * this class is named in such a way that Sqoop's default QA process does
+ * not run it. You need to run this manually with
+ * -Dtestcase=SQLServerMultiColsManualTest.
+ *
+ * You need to put SQL Server JDBC driver library (sqljdbc4.jar) in a location
+ * where Sqoop will be able to access it (since this library cannot be checked
+ * into Apache's tree for licensing reasons).
+ *
+ * To set up your test environment:
+ * Install SQL Server Express 2012
+ * Create a database SQOOPTEST
+ * Create a login SQOOPUSER with password PASSWORD and grant all
+ * access for SQOOPTEST to SQOOPUSER.
*/
public class SQLServerMultiColsManualTest extends TestMultiCols {
@@ -38,9 +55,7 @@
}
protected String getConnectString() {
- return System.getProperty(
- "sqoop.test.sqlserver.connectstring.host_url",
- "jdbc:sqlserver://sqlserverhost:1433");
+ return MSSQLTestUtils.getDBConnectString();
}
/**
@@ -77,6 +92,17 @@
}
+ @After
+ public void tearDown() {
+ try {
+ dropTableIfExists(getTableName());
+ } catch (SQLException sqle) {
+ LOG.info("Table clean-up failed: " + sqle);
+ } finally {
+ super.tearDown();
+ }
+ }
+
@Test
public void testMixed4() {
// Overridden to bypass test case invalid for MSSQL server
diff --git a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerMultiMapsManualTest.java b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerMultiMapsManualTest.java
index c9a5b5e..fc9e20d 100644
--- a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerMultiMapsManualTest.java
+++ b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerMultiMapsManualTest.java
@@ -26,8 +26,6 @@
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.cli.ParseException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
@@ -37,7 +35,6 @@
import org.apache.hadoop.mapred.Utils;
import org.apache.hadoop.util.ReflectionUtils;
import org.apache.hadoop.util.StringUtils;
-import org.apache.sqoop.manager.sqlserver.MSSQLTestUtils.*;
import com.cloudera.sqoop.SqoopOptions;
import com.cloudera.sqoop.SqoopOptions.InvalidOptionsException;
@@ -56,7 +53,24 @@
import static org.junit.Assert.fail;
/**
- * Test that using multiple mapper splits works.
+ * Test multiple mapper splits in SQL Server.
+ *
+ * This uses JDBC to import data from an SQLServer database to HDFS.
+ *
+ * Since this requires an SQLServer installation,
+ * this class is named in such a way that Sqoop's default QA process does
+ * not run it. You need to run this manually with
+ * -Dtestcase=SQLServerMultiMapsManualTest.
+ *
+ * You need to put SQL Server JDBC driver library (sqljdbc4.jar) in a location
+ * where Sqoop will be able to access it (since this library cannot be checked
+ * into Apache's tree for licensing reasons).
+ *
+ * To set up your test environment:
+ * Install SQL Server Express 2012
+ * Create a database SQOOPTEST
+ * Create a login SQOOPUSER with password PASSWORD and grant all
+ * access for SQOOPTEST to SQOOPUSER.
*/
public class SQLServerMultiMapsManualTest extends ImportJobTestCase {
@@ -247,9 +261,7 @@
}
protected String getConnectString() {
- return System.getProperty(
- "sqoop.test.sqlserver.connectstring.host_url",
- "jdbc:sqlserver://sqlserverhost:1433");
+ return MSSQLTestUtils.getDBConnectString();
}
/**
diff --git a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerParseMethodsManualTest.java b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerParseMethodsManualTest.java
index cd05aec..b28c165 100644
--- a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerParseMethodsManualTest.java
+++ b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerParseMethodsManualTest.java
@@ -25,8 +25,6 @@
import java.sql.SQLException;
import java.util.ArrayList;
import org.apache.commons.cli.ParseException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
@@ -37,7 +35,6 @@
import org.apache.hadoop.mapred.JobClient;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.util.StringUtils;
-import org.apache.sqoop.manager.sqlserver.MSSQLTestUtils.*;
import com.cloudera.sqoop.SqoopOptions;
import com.cloudera.sqoop.SqoopOptions.InvalidOptionsException;
@@ -48,6 +45,7 @@
import com.cloudera.sqoop.testutil.ReparseMapper;
import com.cloudera.sqoop.tool.ImportTool;
import com.cloudera.sqoop.util.ClassLoaderStack;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -55,7 +53,24 @@
/**
* Test that the parse() methods generated in user SqoopRecord implementations
- * work.
+ * work in SQL Server.
+ *
+ * This uses JDBC to import data from an SQLServer database to HDFS.
+ *
+ * Since this requires an SQLServer installation,
+ * this class is named in such a way that Sqoop's default QA process does
+ * not run it. You need to run this manually with
+ * -Dtestcase=SQLServerParseMethodsManualTest.
+ *
+ * You need to put SQL Server JDBC driver library (sqljdbc4.jar) in a location
+ * where Sqoop will be able to access it (since this library cannot be checked
+ * into Apache's tree for licensing reasons).
+ *
+ * To set up your test environment:
+ * Install SQL Server Express 2012
+ * Create a database SQOOPTEST
+ * Create a login SQOOPUSER with password PASSWORD and grant all
+ * access for SQOOPTEST to SQOOPUSER.
*/
public class SQLServerParseMethodsManualTest extends ImportJobTestCase {
@@ -72,6 +87,17 @@
}
}
+ @After
+ public void tearDown() {
+ try {
+ dropTableIfExists(getTableName());
+ } catch (SQLException sqle) {
+ LOG.info("Table clean-up failed: " + sqle);
+ } finally {
+ super.tearDown();
+ }
+ }
+
/**
* Create the argv to pass to Sqoop.
*
@@ -220,9 +246,7 @@
}
protected String getConnectString() {
- return System.getProperty(
- "sqoop.test.sqlserver.connectstring.host_url",
- "jdbc:sqlserver://sqlserverhost:1433");
+ return MSSQLTestUtils.getDBConnectString();
}
/**
diff --git a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerQueryManualTest.java b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerQueryManualTest.java
index 0057ac9..d891c2b 100644
--- a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerQueryManualTest.java
+++ b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerQueryManualTest.java
@@ -25,14 +25,11 @@
import java.sql.SQLException;
import java.util.ArrayList;
import org.apache.commons.cli.ParseException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.util.ReflectionUtils;
import org.apache.hadoop.util.StringUtils;
-import org.apache.sqoop.manager.sqlserver.MSSQLTestUtils.*;
import com.cloudera.sqoop.SqoopOptions;
import com.cloudera.sqoop.SqoopOptions.InvalidOptionsException;
@@ -50,7 +47,24 @@
import static org.junit.Assert.fail;
/**
- * Test that --query works in Sqoop.
+ * Test that --query works in SQL Server.
+ *
+ * This uses JDBC to import data from an SQLServer database to HDFS.
+ *
+ * Since this requires an SQLServer installation,
+ * this class is named in such a way that Sqoop's default QA process does
+ * not run it. You need to run this manually with
+ * -Dtestcase=SQLServerQueryManualTest.
+ *
+ * You need to put SQL Server JDBC driver library (sqljdbc4.jar) in a location
+ * where Sqoop will be able to access it (since this library cannot be checked
+ * into Apache's tree for licensing reasons).
+ *
+ * To set up your test environment:
+ * Install SQL Server Express 2012
+ * Create a database SQOOPTEST
+ * Create a login SQOOPUSER with password PASSWORD and grant all
+ * access for SQOOPTEST to SQOOPUSER.
*/
public class SQLServerQueryManualTest extends ImportJobTestCase {
@@ -244,9 +258,7 @@
}
protected String getConnectString() {
- return System.getProperty(
- "sqoop.test.sqlserver.connectstring.host_url",
- "jdbc:sqlserver://sqlserverhost:1433");
+ return MSSQLTestUtils.getDBConnectString();
}
/**
diff --git a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerSplitByManualTest.java b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerSplitByManualTest.java
index f85245a..67e2cae 100644
--- a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerSplitByManualTest.java
+++ b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerSplitByManualTest.java
@@ -25,14 +25,11 @@
import java.sql.SQLException;
import java.util.ArrayList;
import org.apache.commons.cli.ParseException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.util.ReflectionUtils;
import org.apache.hadoop.util.StringUtils;
-import org.apache.sqoop.manager.sqlserver.MSSQLTestUtils.*;
import com.cloudera.sqoop.SqoopOptions;
import com.cloudera.sqoop.SqoopOptions.InvalidOptionsException;
@@ -50,7 +47,24 @@
import static org.junit.Assert.fail;
/**
- * Test that --split-by works.
+ * Test that --split-by works in SQL Server.
+ *
+ * This uses JDBC to import data from an SQLServer database to HDFS.
+ *
+ * Since this requires an SQLServer installation,
+ * this class is named in such a way that Sqoop's default QA process does
+ * not run it. You need to run this manually with
+ * -Dtestcase=SQLServerSplitByManualTest.
+ *
+ * You need to put SQL Server JDBC driver library (sqljdbc4.jar) in a location
+ * where Sqoop will be able to access it (since this library cannot be checked
+ * into Apache's tree for licensing reasons).
+ *
+ * To set up your test environment:
+ * Install SQL Server Express 2012
+ * Create a database SQOOPTEST
+ * Create a login SQOOPUSER with password PASSWORD and grant all
+ * access for SQOOPTEST to SQOOPUSER.
*/
public class SQLServerSplitByManualTest extends ImportJobTestCase {
@@ -213,9 +227,7 @@
}
protected String getConnectString() {
- return System.getProperty(
- "sqoop.test.sqlserver.connectstring.host_url",
- "jdbc:sqlserver://sqlserverhost:1433");
+ return MSSQLTestUtils.getDBConnectString();
}
protected String getTableName() {
diff --git a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerWhereManualTest.java b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerWhereManualTest.java
index 10ae03b..700fbba 100644
--- a/src/test/org/apache/sqoop/manager/sqlserver/SQLServerWhereManualTest.java
+++ b/src/test/org/apache/sqoop/manager/sqlserver/SQLServerWhereManualTest.java
@@ -25,18 +25,14 @@
import java.sql.SQLException;
import java.util.ArrayList;
import org.apache.commons.cli.ParseException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.util.ReflectionUtils;
import org.apache.hadoop.util.StringUtils;
-import org.apache.sqoop.manager.sqlserver.MSSQLTestUtils.*;
import com.cloudera.sqoop.SqoopOptions;
import com.cloudera.sqoop.SqoopOptions.InvalidOptionsException;
-import com.cloudera.sqoop.manager.JdbcMySQLExportTest;
import com.cloudera.sqoop.orm.CompilationManager;
import com.cloudera.sqoop.testutil.CommonArgs;
import com.cloudera.sqoop.testutil.ImportJobTestCase;
@@ -51,8 +47,24 @@
import static org.junit.Assert.fail;
/**
- * Test that --where works in Sqoop. Methods essentially copied out of the other
- * Test* classes.
+ * Test that --where works in SQL Server.
+ *
+ * This uses JDBC to import data from an SQLServer database to HDFS.
+ *
+ * Since this requires an SQLServer installation,
+ * this class is named in such a way that Sqoop's default QA process does
+ * not run it. You need to run this manually with
+ * -Dtestcase=SQLServerWhereManualTest.
+ *
+ * You need to put SQL Server JDBC driver library (sqljdbc4.jar) in a location
+ * where Sqoop will be able to access it (since this library cannot be checked
+ * into Apache's tree for licensing reasons).
+ *
+ * To set up your test environment:
+ * Install SQL Server Express 2012
+ * Create a database SQOOPTEST
+ * Create a login SQOOPUSER with password PASSWORD and grant all
+ * access for SQOOPTEST to SQOOPUSER.
*/
public class SQLServerWhereManualTest extends ImportJobTestCase {
@@ -235,9 +247,7 @@
}
protected String getConnectString() {
- return System.getProperty(
- "sqoop.test.sqlserver.connectstring.host_url",
- "jdbc:sqlserver://sqlserverhost:1433");
+ return MSSQLTestUtils.getDBConnectString();
}
/**