Repository: sqoop Updated Branches: refs/heads/sqoop2 a53e682f0 -> 16c2cdcab
SQOOP-2725: Sqoop2: Integration Tests: Prefer using Timestamp types and PreparedStatements for inserting rows into test databases (Abraham Fine via Jarek Jarcec Cecho) Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/16c2cdca Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/16c2cdca Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/16c2cdca Branch: refs/heads/sqoop2 Commit: 16c2cdcab562d0e1929c0a1e8daad05d9ee0027a Parents: a53e682 Author: Jarek Jarcec Cecho <[email protected]> Authored: Tue Dec 15 09:18:00 2015 +0100 Committer: Jarek Jarcec Cecho <[email protected]> Committed: Tue Dec 15 09:18:00 2015 +0100 ---------------------------------------------------------------------- .../common/test/asserts/ProviderAsserts.java | 21 +-- .../sqoop/common/test/db/DatabaseProvider.java | 146 +++++++++++-------- .../jdbc/GenericJdbcFromInitializer.java | 51 ++++++- .../java/org/apache/sqoop/test/data/Cities.java | 12 +- .../apache/sqoop/test/data/UbuntuReleases.java | 46 +++--- .../test/infrastructure/SqoopTestCase.java | 10 -- .../sqoop/test/testcases/ConnectorTestCase.java | 17 +-- .../connector/hdfs/AppendModeTest.java | 24 +-- .../connector/hdfs/FromHDFSToHDFSTest.java | 8 +- .../connector/hdfs/HdfsIncrementalReadTest.java | 26 ++-- .../hdfs/InformalJobNameExecuteTest.java | 10 +- .../connector/hdfs/OutputDirectoryTest.java | 8 +- .../connector/jdbc/generic/AllTypesTest.java | 5 +- .../jdbc/generic/FromHDFSToRDBMSTest.java | 19 +-- .../jdbc/generic/FromRDBMSToHDFSTest.java | 16 +- .../jdbc/generic/IncrementalReadTest.java | 52 +++---- .../connector/jdbc/generic/PartitionerTest.java | 40 ++--- .../jdbc/generic/TableStagedRDBMSTest.java | 20 +-- .../connector/kafka/FromRDBMSToKafkaTest.java | 8 +- 19 files changed, 291 insertions(+), 248 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/common-test/src/main/java/org/apache/sqoop/common/test/asserts/ProviderAsserts.java ---------------------------------------------------------------------- diff --git a/common-test/src/main/java/org/apache/sqoop/common/test/asserts/ProviderAsserts.java b/common-test/src/main/java/org/apache/sqoop/common/test/asserts/ProviderAsserts.java index 0da7ea8..4e1ef6a 100644 --- a/common-test/src/main/java/org/apache/sqoop/common/test/asserts/ProviderAsserts.java +++ b/common-test/src/main/java/org/apache/sqoop/common/test/asserts/ProviderAsserts.java @@ -21,6 +21,7 @@ import org.apache.sqoop.common.test.db.DatabaseProvider; import org.apache.log4j.Logger; import org.apache.sqoop.common.test.db.TableName; +import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; @@ -44,23 +45,9 @@ public class ProviderAsserts { * @param conditions Conditions for identifying the row * @param values Values that should be present in the table */ - public static void assertRow(DatabaseProvider provider, TableName tableName, Object []conditions, Object ...values) { - assertRow(provider, tableName, true, conditions, values); - } - - /** - * Assert row in the table. - * - * @param provider Provider that should be used to query the database - * @param tableName Table name - * @param escapeValues Flag whether the values should be escaped based on their type when using in the generated queries or not - * @param conditions Conditions for identifying the row - * @param values Values that should be present in the table - */ - public static void assertRow(DatabaseProvider provider, TableName tableName, boolean escapeValues, Object []conditions, Object ...values) { - try (Statement stmt = provider.getConnection().createStatement(); - ResultSet rs = stmt.executeQuery(provider.getRowsSql(tableName, escapeValues, conditions))) { - + public static void assertRow(DatabaseProvider provider, TableName tableName, Object[] conditions, Object ...values) { + try (PreparedStatement preparedStatement = provider.getRowsPreparedStatement(tableName, conditions); + ResultSet rs = preparedStatement.executeQuery()) { if(! rs.next()) { fail("No rows found."); } http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/common-test/src/main/java/org/apache/sqoop/common/test/db/DatabaseProvider.java ---------------------------------------------------------------------- diff --git a/common-test/src/main/java/org/apache/sqoop/common/test/db/DatabaseProvider.java b/common-test/src/main/java/org/apache/sqoop/common/test/db/DatabaseProvider.java index f30d587..3b0b568 100644 --- a/common-test/src/main/java/org/apache/sqoop/common/test/db/DatabaseProvider.java +++ b/common-test/src/main/java/org/apache/sqoop/common/test/db/DatabaseProvider.java @@ -22,13 +22,16 @@ import org.apache.log4j.Logger; import org.apache.sqoop.common.test.db.types.DatabaseTypeList; import org.apache.sqoop.common.test.db.types.DefaultTypeList; +import java.math.BigDecimal; import java.sql.Connection; +import java.sql.Date; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; +import java.sql.Timestamp; import java.util.LinkedList; import java.util.List; @@ -40,7 +43,9 @@ import java.util.List; * supported database server have it's own concrete implementation that fills * the gaps in database differences. */ [email protected]("SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE") [email protected] + ({"SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE", + "SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING"}) abstract public class DatabaseProvider { private static final Logger LOG = Logger.getLogger(DatabaseProvider.class); @@ -266,86 +271,111 @@ abstract public class DatabaseProvider { * @param values List of objects that should be inserted */ public void insertRow(TableName tableName, Object ...values) { - insertRow(tableName, true, values); - } + try { + StringBuilder sb = new StringBuilder("INSERT INTO "); + sb.append(getTableFragment(tableName)); + sb.append(" VALUES ("); - /** - * Insert new row into the table. - * - * @param tableName Table name - * @param escapeValues Should the values be escaped based on their type or not - * @param values List of objects that should be inserted - */ - public void insertRow(TableName tableName, boolean escapeValues, Object ...values) { - StringBuilder sb = new StringBuilder("INSERT INTO "); - sb.append(getTableFragment(tableName)); - sb.append(" VALUES ("); + for (int i = 0; i < values.length - 1; i++) { + sb.append("?, "); + } + sb.append("?)"); - List<String> valueList = new LinkedList<String>(); - for(Object value : values) { - valueList.add(escapeValues ? convertObjectToQueryString(value) : value.toString()); - } + PreparedStatement statement = null; + try { + statement = databaseConnection.prepareStatement(sb.toString()); + for (int i = 0; i < values.length; i++) { + insertObjectIntoPreparedStatement(statement, i +1, values[i]); + } - sb.append(StringUtils.join(valueList, ", ")); - sb.append(")"); + statement.executeUpdate(); + } finally { + if (statement != null) { + statement.close(); + } + } + } catch (SQLException sqlException) { + throw new RuntimeException("can't insert row", sqlException); + } - executeUpdate(sb.toString()); } /** * Return rows that match given conditions. * * @param tableName Table name - * @param escapeValues Should the values be escaped based on their type or not * @param conditions Conditions in form of double values - column name and value, for example: "id", 1 or "last_update_date", null - * @return ResultSet with given criteria + * @return PreparedStatement representing the requested query */ - public String getRowsSql(TableName tableName, boolean escapeValues, Object []conditions) { - // Columns are in form of two strings - name and value - if(conditions.length % 2 != 0) { - throw new RuntimeException("Incorrect number of parameters."); - } + public PreparedStatement getRowsPreparedStatement(TableName tableName, Object[] conditions) { + try { + // Columns are in form of two strings - name and value + if(conditions.length % 2 != 0) { + throw new RuntimeException("Incorrect number of parameters."); + } - StringBuilder sb = new StringBuilder("SELECT * FROM "); - sb.append(getTableFragment(tableName)); + StringBuilder sb = new StringBuilder("SELECT * FROM "); + sb.append(getTableFragment(tableName)); + + List<String> conditionList = new LinkedList<String>(); + for(int i = 0; i < conditions.length; i += 2) { + Object columnName = conditions[i]; + Object value = conditions[i + 1]; + + if( !(columnName instanceof String)) { + throw new RuntimeException("Each odd item should be a string with column name."); + } - List<String> conditionList = new LinkedList<String>(); - for(int i = 0; i < conditions.length; i += 2) { - Object columnName = conditions[i]; - Object value = conditions[i + 1]; + if(value == null) { + conditionList.add(escapeColumnName((String) columnName) + " IS NULL"); + } else { + conditionList.add(escapeColumnName((String) columnName) + " = ?"); + } + } - if( !(columnName instanceof String)) { - throw new RuntimeException("Each odd item should be a string with column name."); + if(conditionList.size() != 0) { + sb.append(" WHERE ").append(StringUtils.join(conditionList, " AND ")); } - if(value == null) { - conditionList.add(escapeColumnName((String) columnName) + " IS NULL"); - } else { - conditionList.add(escapeColumnName((String) columnName) + " = " + (escapeValues ? convertObjectToQueryString(value) : value)); + PreparedStatement preparedStatement = getConnection().prepareStatement(sb.toString()); + for(int i = 1; i < conditions.length; i += 2) { + Object value = conditions[i]; + if (value != null) { + insertObjectIntoPreparedStatement(preparedStatement, i, value); + } } - } - if(conditionList.size() != 0) { - sb.append(" WHERE ").append(StringUtils.join(conditionList, " AND ")); + return preparedStatement; + } catch (SQLException sqlException) { + throw new RuntimeException("can't insert row", sqlException); } - - return sb.toString(); } - /** - * Convert given object to it's representation that can be safely used inside - * query. - * - * @param value Value to convert - * @return Query safe string representation - */ - public String convertObjectToQueryString(Object value) { - if(value == null) { - return nullConstant(); - } else if(value.getClass() == String.class) { - return escapeValueString((String)value); + private void insertObjectIntoPreparedStatement(PreparedStatement preparedStatement, int parameterIndex, Object value) throws SQLException { + if (value instanceof String) { + preparedStatement.setString(parameterIndex, (String) value); + } else if (value instanceof Short) { + preparedStatement.setShort(parameterIndex, ((Short) value).shortValue()); + } else if (value instanceof Integer) { + preparedStatement.setInt(parameterIndex, ((Integer) value).intValue()); + } else if (value instanceof Long) { + preparedStatement.setLong(parameterIndex, ((Long) value).longValue()); + } else if (value instanceof Float) { + preparedStatement.setFloat(parameterIndex, ((Float) value).floatValue()); + } else if (value instanceof Double) { + preparedStatement.setDouble(parameterIndex, ((Double) value).doubleValue()); + } else if (value instanceof Boolean) { + preparedStatement.setBoolean(parameterIndex, ((Boolean) value).booleanValue()); + } else if (value instanceof Byte) { + preparedStatement.setByte(parameterIndex, ((Byte) value).byteValue()); + } else if (value instanceof Character) { + preparedStatement.setString(parameterIndex, value.toString()); + } else if (value instanceof Timestamp) { + preparedStatement.setString(parameterIndex, value.toString()); + } else if (value instanceof BigDecimal) { + preparedStatement.setString(parameterIndex, value.toString()); } else { - return value.toString(); + preparedStatement.setObject(parameterIndex, value); } } http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcFromInitializer.java ---------------------------------------------------------------------- diff --git a/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcFromInitializer.java b/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcFromInitializer.java index fa26c14..41be8bb 100644 --- a/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcFromInitializer.java +++ b/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcFromInitializer.java @@ -17,11 +17,15 @@ */ package org.apache.sqoop.connector.jdbc; +import java.math.BigDecimal; +import java.sql.Date; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; +import java.sql.Timestamp; +import java.sql.Types; import java.util.List; import java.util.Set; @@ -162,6 +166,10 @@ public class GenericJdbcFromInitializer extends Initializer<LinkConfiguration, F // If this is incremental, then we need to get new maximal value and persist is a constant String incrementalMaxValue = null; + // and the partition column metadata + int checkColumnScale = 0; + int checkColumnType = 0; + if(incrementalImport) { sb.setLength(0); sb.append("SELECT "); @@ -172,13 +180,38 @@ public class GenericJdbcFromInitializer extends Initializer<LinkConfiguration, F String incrementalNewMaxValueQuery = sb.toString(); LOG.info("Incremental new max value query: " + incrementalNewMaxValueQuery); - try (Statement statement = executor.createStatement(); - ResultSet rs = statement.executeQuery(incrementalNewMaxValueQuery);) { + try ( + PreparedStatement columnTypeStatement = executor.prepareStatement("SELECT " + executor.encloseIdentifier(jobConf.incrementalRead.checkColumn) + " FROM " + fromFragment + " WHERE 1 = 2"); + ResultSet columnTypeResultSet = columnTypeStatement.executeQuery(); + Statement statement = executor.createStatement(); + ResultSet rs = statement.executeQuery(incrementalNewMaxValueQuery) + ) { + ResultSetMetaData checkColumnMetaData = columnTypeResultSet.getMetaData(); + checkColumnScale = checkColumnMetaData.getScale(1); + checkColumnType = checkColumnMetaData.getColumnType(1); + if (!rs.next()) { throw new SqoopException(GenericJdbcConnectorError.GENERIC_JDBC_CONNECTOR_0022); } - incrementalMaxValue = rs.getString(1); + switch (rs.getMetaData().getColumnType(1)) { + case Types.DATE: + incrementalMaxValue = rs.getDate(1).toString(); + break; + case Types.TIMESTAMP: + incrementalMaxValue = rs.getTimestamp(1).toString(); + break; + case Types.DECIMAL: + case Types.NUMERIC: + case Types.DOUBLE: + case Types.FLOAT: + case Types.REAL: + // Oracle drops precision data when using aggregate functions in the query + incrementalMaxValue = rs.getBigDecimal(1).setScale(checkColumnScale).toString(); + break; + default: + incrementalMaxValue = rs.getString(1); + } context.setString(GenericJdbcConnectorConstants.CONNECTOR_JDBC_LAST_INCREMENTAL_VALUE, incrementalMaxValue); LOG.info("New maximal value for incremental import is " + incrementalMaxValue); } @@ -209,8 +242,16 @@ public class GenericJdbcFromInitializer extends Initializer<LinkConfiguration, F try { ps = executor.prepareStatement(minMaxQuery); if (incrementalImport) { - ps.setString(1, jobConf.incrementalRead.lastValue); - ps.setString(2, incrementalMaxValue); + if (checkColumnType == Types.DATE) { + ps.setDate(1, Date.valueOf(jobConf.incrementalRead.lastValue)); + ps.setDate(2, Date.valueOf(incrementalMaxValue)); + } else if (checkColumnType == Types.TIMESTAMP) { + ps.setTimestamp(1, Timestamp.valueOf(jobConf.incrementalRead.lastValue)); + ps.setTimestamp(2, Timestamp.valueOf(incrementalMaxValue)); + } else { + ps.setBigDecimal(1, new BigDecimal(jobConf.incrementalRead.lastValue)); + ps.setBigDecimal(2, new BigDecimal(incrementalMaxValue)); + } } rs = ps.executeQuery(); http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/main/java/org/apache/sqoop/test/data/Cities.java ---------------------------------------------------------------------- diff --git a/test/src/main/java/org/apache/sqoop/test/data/Cities.java b/test/src/main/java/org/apache/sqoop/test/data/Cities.java index fbbd7ef..1703397 100644 --- a/test/src/main/java/org/apache/sqoop/test/data/Cities.java +++ b/test/src/main/java/org/apache/sqoop/test/data/Cities.java @@ -20,6 +20,8 @@ package org.apache.sqoop.test.data; import org.apache.sqoop.common.test.db.DatabaseProvider; import org.apache.sqoop.common.test.db.TableName; +import java.sql.Timestamp; + /** * Simple listing of few world's cities to do basic sanity tests. */ @@ -36,7 +38,7 @@ public class Cities extends DataSet { "id", "id", "int", "country", "varchar(50)", - "some_date", "date", + "some_date", "timestamp", "city", "varchar(50)" ); @@ -45,10 +47,10 @@ public class Cities extends DataSet { @Override public DataSet loadBasicData() { - provider.insertRow(tableBaseName, 1, "USA", "2004-10-23","San Francisco"); - provider.insertRow(tableBaseName, 2, "USA", "2004-10-24", "Sunnyvale"); - provider.insertRow(tableBaseName, 3, "Czech Republic", "2004-10-25", "Brno"); - provider.insertRow(tableBaseName, 4, "USA", "2004-10-26", "Palo Alto"); + provider.insertRow(tableBaseName, 1, "USA", Timestamp.valueOf("2004-10-23 00:00:00.000"),"San Francisco"); + provider.insertRow(tableBaseName, 2, "USA", Timestamp.valueOf("2004-10-24 00:00:00.000"), "Sunnyvale"); + provider.insertRow(tableBaseName, 3, "Czech Republic", Timestamp.valueOf("2004-10-25 00:00:00.000"), "Brno"); + provider.insertRow(tableBaseName, 4, "USA", Timestamp.valueOf("2004-10-26 00:00:00.000"), "Palo Alto"); return this; } http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/main/java/org/apache/sqoop/test/data/UbuntuReleases.java ---------------------------------------------------------------------- diff --git a/test/src/main/java/org/apache/sqoop/test/data/UbuntuReleases.java b/test/src/main/java/org/apache/sqoop/test/data/UbuntuReleases.java index 12bcad1..9b218e9 100644 --- a/test/src/main/java/org/apache/sqoop/test/data/UbuntuReleases.java +++ b/test/src/main/java/org/apache/sqoop/test/data/UbuntuReleases.java @@ -20,10 +20,12 @@ package org.apache.sqoop.test.data; import org.apache.sqoop.common.test.db.DatabaseProvider; import org.apache.sqoop.common.test.db.TableName; +import java.sql.Timestamp; + /** * Releases of Ubuntu Linux. * - * Purpose of this set is to cover most common data types (varchar, int, decimal, date, boolean). + * Purpose of this set is to cover most common data types (varchar, int, decimal, timestamp). */ public class UbuntuReleases extends DataSet { @@ -38,8 +40,8 @@ public class UbuntuReleases extends DataSet { "id", "id", "int", "code_name", "varchar(64)", - "version", "decimal(4,2)", - "release_date", "date" + "version", "numeric(4,2)", + "release_date", "timestamp" ); return this; @@ -47,25 +49,25 @@ public class UbuntuReleases extends DataSet { @Override public DataSet loadBasicData() { - provider.insertRow(tableBaseName, 1, "Warty Warthog", 4.10, "2004-10-20"); - provider.insertRow(tableBaseName, 2, "Hoary Hedgehog", 5.04, "2005-04-08"); - provider.insertRow(tableBaseName, 3, "Breezy Badger", 5.10, "2005-10-13"); - provider.insertRow(tableBaseName, 4, "Dapper Drake", 6.06, "2006-06-01"); - provider.insertRow(tableBaseName, 5, "Edgy Eft", 6.10, "2006-10-26"); - provider.insertRow(tableBaseName, 6, "Feisty Fawn", 7.04, "2007-04-19"); - provider.insertRow(tableBaseName, 7, "Gutsy Gibbon", 7.10, "2007-10-18"); - provider.insertRow(tableBaseName, 8, "Hardy Heron", 8.04, "2008-04-24"); - provider.insertRow(tableBaseName, 9, "Intrepid Ibex", 8.10, "2008-10-18"); - provider.insertRow(tableBaseName, 10, "Jaunty Jackalope", 9.04, "2009-04-23"); - provider.insertRow(tableBaseName, 11, "Karmic Koala", 9.10, "2009-10-29"); - provider.insertRow(tableBaseName, 12, "Lucid Lynx", 10.04, "2010-04-29"); - provider.insertRow(tableBaseName, 13, "Maverick Meerkat",10.10, "2010-10-10"); - provider.insertRow(tableBaseName, 14, "Natty Narwhal", 11.04, "2011-04-28"); - provider.insertRow(tableBaseName, 15, "Oneiric Ocelot", 11.10, "2011-10-10"); - provider.insertRow(tableBaseName, 16, "Precise Pangolin",12.04, "2012-04-26"); - provider.insertRow(tableBaseName, 17, "Quantal Quetzal", 12.10, "2012-10-18"); - provider.insertRow(tableBaseName, 18, "Raring Ringtail", 13.04, "2013-04-25"); - provider.insertRow(tableBaseName, 19, "Saucy Salamander",13.10, "2013-10-17"); + provider.insertRow(tableBaseName, 1, "Warty Warthog", 4.10, Timestamp.valueOf("2004-10-20 00:00:00")); + provider.insertRow(tableBaseName, 2, "Hoary Hedgehog", 5.04, Timestamp.valueOf("2005-04-08 00:00:00")); + provider.insertRow(tableBaseName, 3, "Breezy Badger", 5.10, Timestamp.valueOf("2005-10-13 00:00:00")); + provider.insertRow(tableBaseName, 4, "Dapper Drake", 6.06, Timestamp.valueOf("2006-06-01 00:00:00")); + provider.insertRow(tableBaseName, 5, "Edgy Eft", 6.10, Timestamp.valueOf("2006-10-26 00:00:00")); + provider.insertRow(tableBaseName, 6, "Feisty Fawn", 7.04, Timestamp.valueOf("2007-04-19 00:00:00")); + provider.insertRow(tableBaseName, 7, "Gutsy Gibbon", 7.10, Timestamp.valueOf("2007-10-18 00:00:00")); + provider.insertRow(tableBaseName, 8, "Hardy Heron", 8.04, Timestamp.valueOf("2008-04-24 00:00:00")); + provider.insertRow(tableBaseName, 9, "Intrepid Ibex", 8.10, Timestamp.valueOf("2008-10-18 00:00:00")); + provider.insertRow(tableBaseName, 10, "Jaunty Jackalope", 9.04, Timestamp.valueOf("2009-04-23 00:00:00")); + provider.insertRow(tableBaseName, 11, "Karmic Koala", 9.10, Timestamp.valueOf("2009-10-29 00:00:00")); + provider.insertRow(tableBaseName, 12, "Lucid Lynx", 10.04, Timestamp.valueOf("2010-04-29 00:00:00")); + provider.insertRow(tableBaseName, 13, "Maverick Meerkat",10.10, Timestamp.valueOf("2010-10-10 00:00:00")); + provider.insertRow(tableBaseName, 14, "Natty Narwhal", 11.04, Timestamp.valueOf("2011-04-28 00:00:00")); + provider.insertRow(tableBaseName, 15, "Oneiric Ocelot", 11.10, Timestamp.valueOf("2011-10-10 00:00:00")); + provider.insertRow(tableBaseName, 16, "Precise Pangolin",12.04, Timestamp.valueOf("2012-04-26 00:00:00")); + provider.insertRow(tableBaseName, 17, "Quantal Quetzal", 12.10, Timestamp.valueOf("2012-10-18 00:00:00")); + provider.insertRow(tableBaseName, 18, "Raring Ringtail", 13.04, Timestamp.valueOf("2013-04-25 00:00:00")); + provider.insertRow(tableBaseName, 19, "Saucy Salamander",13.10, Timestamp.valueOf("2013-10-17 00:00:00")); return this; } http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/main/java/org/apache/sqoop/test/infrastructure/SqoopTestCase.java ---------------------------------------------------------------------- diff --git a/test/src/main/java/org/apache/sqoop/test/infrastructure/SqoopTestCase.java b/test/src/main/java/org/apache/sqoop/test/infrastructure/SqoopTestCase.java index c1f355f..47f1e45 100644 --- a/test/src/main/java/org/apache/sqoop/test/infrastructure/SqoopTestCase.java +++ b/test/src/main/java/org/apache/sqoop/test/infrastructure/SqoopTestCase.java @@ -399,16 +399,6 @@ public class SqoopTestCase implements ITest { } /** - * Insert row into table for this test. - * @param escapeValues - * @param values - */ - public void insertRow(Boolean escapeValues, Object ...values) { - getInfrastructureProvider(DatabaseInfrastructureProvider.class).getInstance() - .insertRow(getTableName(), escapeValues, values); - } - - /** * Fetch row count of table for this test. * @return long count */ http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/main/java/org/apache/sqoop/test/testcases/ConnectorTestCase.java ---------------------------------------------------------------------- diff --git a/test/src/main/java/org/apache/sqoop/test/testcases/ConnectorTestCase.java b/test/src/main/java/org/apache/sqoop/test/testcases/ConnectorTestCase.java index c843448..378c1f3 100644 --- a/test/src/main/java/org/apache/sqoop/test/testcases/ConnectorTestCase.java +++ b/test/src/main/java/org/apache/sqoop/test/testcases/ConnectorTestCase.java @@ -48,7 +48,7 @@ import org.testng.annotations.BeforeSuite; * the database provider prior every test execution. */ @edu.umd.cs.findbugs.annotations.SuppressWarnings({"MS_PKGPROTECT", "ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD"}) -abstract public class ConnectorTestCase extends JettyTestCase { +abstract public class ConnectorTestCase extends JettyTestCase { private static final Logger LOG = Logger.getLogger(ConnectorTestCase.class); @@ -103,10 +103,6 @@ abstract public class ConnectorTestCase extends JettyTestCase { provider.insertRow(getTableName(), values); } - protected void insertRow(Boolean escapeValues, Object ...values) { - provider.insertRow(getTableName(), escapeValues, values); - } - protected long rowCount() { return provider.rowCount(getTableName()); } @@ -228,17 +224,6 @@ abstract public class ConnectorTestCase extends JettyTestCase { } /** - * Assert row in testing table. - * - * @param conditions Conditions in config that are expected by the database provider - * @param escapeValues Flag whether the values should be escaped based on their type when using in the generated queries or not - * @param values Values that are expected in the table (with corresponding types) - */ - protected void assertRow(Object []conditions, Boolean escapeValues, Object ...values) { - ProviderAsserts.assertRow(provider, getTableName(), escapeValues, conditions, values); - } - - /** * Assert row in table "cities". * * @param values Values that are expected http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/AppendModeTest.java ---------------------------------------------------------------------- diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/AppendModeTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/AppendModeTest.java index 8c65898..fa660d5 100644 --- a/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/AppendModeTest.java +++ b/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/AppendModeTest.java @@ -60,23 +60,23 @@ public class AppendModeTest extends ConnectorTestCase { // First execution executeJob(job); assertTo( - "1,'USA','2004-10-23','San Francisco'", - "2,'USA','2004-10-24','Sunnyvale'", - "3,'Czech Republic','2004-10-25','Brno'", - "4,'USA','2004-10-26','Palo Alto'" + "1,'USA','2004-10-23 00:00:00.000','San Francisco'", + "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'", + "3,'Czech Republic','2004-10-25 00:00:00.000','Brno'", + "4,'USA','2004-10-26 00:00:00.000','Palo Alto'" ); // Second execution executeJob(job); assertTo( - "1,'USA','2004-10-23','San Francisco'", - "2,'USA','2004-10-24','Sunnyvale'", - "3,'Czech Republic','2004-10-25','Brno'", - "4,'USA','2004-10-26','Palo Alto'", - "1,'USA','2004-10-23','San Francisco'", - "2,'USA','2004-10-24','Sunnyvale'", - "3,'Czech Republic','2004-10-25','Brno'", - "4,'USA','2004-10-26','Palo Alto'" + "1,'USA','2004-10-23 00:00:00.000','San Francisco'", + "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'", + "3,'Czech Republic','2004-10-25 00:00:00.000','Brno'", + "4,'USA','2004-10-26 00:00:00.000','Palo Alto'", + "1,'USA','2004-10-23 00:00:00.000','San Francisco'", + "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'", + "3,'Czech Republic','2004-10-25 00:00:00.000','Brno'", + "4,'USA','2004-10-26 00:00:00.000','Palo Alto'" ); dropTable(); http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/FromHDFSToHDFSTest.java ---------------------------------------------------------------------- diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/FromHDFSToHDFSTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/FromHDFSToHDFSTest.java index c39c8d6..c953131 100644 --- a/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/FromHDFSToHDFSTest.java +++ b/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/FromHDFSToHDFSTest.java @@ -35,10 +35,10 @@ public class FromHDFSToHDFSTest extends ConnectorTestCase { @Test public void test() throws Exception { String[] sampleData = new String[]{ - "1,'USA','2004-10-23','San Francisco'", - "2,'USA','2004-10-24','Sunnyvale'", - "3,'Czech Republic','2004-10-25','Brno'", - "4,'USA','2004-10-26','Palo Alto'" + "1,'USA','2004-10-23 00:00:00.000','San Francisco'", + "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'", + "3,'Czech Republic','2004-10-25 00:00:00.000','Brno'", + "4,'USA','2004-10-26 00:00:00.000','Palo Alto'" }; createFromFile("input-0001", sampleData); http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/HdfsIncrementalReadTest.java ---------------------------------------------------------------------- diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/HdfsIncrementalReadTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/HdfsIncrementalReadTest.java index e6f6e0d..d48c6d2 100644 --- a/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/HdfsIncrementalReadTest.java +++ b/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/HdfsIncrementalReadTest.java @@ -25,6 +25,8 @@ import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; +import java.sql.Timestamp; + import static org.testng.Assert.assertEquals; public class HdfsIncrementalReadTest extends ConnectorTestCase { @@ -42,7 +44,7 @@ public class HdfsIncrementalReadTest extends ConnectorTestCase { @Test public void testBasic() throws Exception { createFromFile("input-0001", - "1,'USA','2004-10-23','San Francisco'" + "1,'USA','2004-10-23 00:00:00.000','San Francisco'" ); // RDBMS link @@ -65,29 +67,29 @@ public class HdfsIncrementalReadTest extends ConnectorTestCase { // Execute for the first time executeJob(job); assertEquals(provider.rowCount(getTableName()), 1); - assertRowInCities(1, "USA", "2004-10-23", "San Francisco"); + assertRowInCities(1, "USA", Timestamp.valueOf("2004-10-23 00:00:00.000"), "San Francisco"); // Second execution createFromFile("input-0002", - "2,'USA','2004-10-24','Sunnyvale'", - "3,'Czech Republic','2004-10-25','Brno'" + "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'", + "3,'Czech Republic','2004-10-25 00:00:00.000','Brno'" ); executeJob(job); assertEquals(provider.rowCount(getTableName()), 3); - assertRowInCities(1, "USA", "2004-10-23", "San Francisco"); - assertRowInCities(2, "USA", "2004-10-24", "Sunnyvale"); - assertRowInCities(3, "Czech Republic", "2004-10-25", "Brno"); + assertRowInCities(1, "USA", Timestamp.valueOf("2004-10-23 00:00:00.000"), "San Francisco"); + assertRowInCities(2, "USA", Timestamp.valueOf("2004-10-24 00:00:00.000"), "Sunnyvale"); + assertRowInCities(3, "Czech Republic", Timestamp.valueOf("2004-10-25 00:00:00.000"), "Brno"); // And last execution createFromFile("input-0003", - "4,'USA','2004-10-26','Palo Alto'" + "4,'USA','2004-10-26 00:00:00.000','Palo Alto'" ); executeJob(job); assertEquals(provider.rowCount(getTableName()), 4); - assertRowInCities(1, "USA", "2004-10-23", "San Francisco"); - assertRowInCities(2, "USA", "2004-10-24", "Sunnyvale"); - assertRowInCities(3, "Czech Republic", "2004-10-25", "Brno"); - assertRowInCities(4, "USA", "2004-10-26", "Palo Alto"); + assertRowInCities(1, "USA", Timestamp.valueOf("2004-10-23 00:00:00.000"), "San Francisco"); + assertRowInCities(2, "USA", Timestamp.valueOf("2004-10-24 00:00:00.000"), "Sunnyvale"); + assertRowInCities(3, "Czech Republic", Timestamp.valueOf("2004-10-25 00:00:00.000"), "Brno"); + assertRowInCities(4, "USA", Timestamp.valueOf("2004-10-26 00:00:00.000"), "Palo Alto"); } } http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/InformalJobNameExecuteTest.java ---------------------------------------------------------------------- diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/InformalJobNameExecuteTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/InformalJobNameExecuteTest.java index 411b07e..cd2ed6c 100644 --- a/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/InformalJobNameExecuteTest.java +++ b/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/InformalJobNameExecuteTest.java @@ -24,6 +24,8 @@ import org.apache.sqoop.model.MLink; import org.apache.sqoop.test.testcases.ConnectorTestCase; import org.testng.annotations.*; +import java.sql.Timestamp; + import static org.testng.Assert.assertEquals; public class InformalJobNameExecuteTest extends ConnectorTestCase { @@ -54,8 +56,8 @@ public class InformalJobNameExecuteTest extends ConnectorTestCase { @Test public void test() throws Exception { createFromFile("input-0001", - "1,'USA','2004-10-23','San Francisco'", - "2,'USA','2004-10-24','Sunnyvale'" + "1,'USA','2004-10-23 00:00:00.000','San Francisco'", + "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'" ); // RDBMS link @@ -86,7 +88,7 @@ public class InformalJobNameExecuteTest extends ConnectorTestCase { executeJob(job); assertEquals(2L, provider.rowCount(getTableName())); - assertRowInCities(1, "USA", "2004-10-23", "San Francisco"); - assertRowInCities(2, "USA", "2004-10-24", "Sunnyvale"); + assertRowInCities(1, "USA", Timestamp.valueOf("2004-10-23 00:00:00.000"), "San Francisco"); + assertRowInCities(2, "USA", Timestamp.valueOf("2004-10-24 00:00:00.000"), "Sunnyvale"); } } http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/OutputDirectoryTest.java ---------------------------------------------------------------------- diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/OutputDirectoryTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/OutputDirectoryTest.java index 1790f96..2759b42 100644 --- a/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/OutputDirectoryTest.java +++ b/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/OutputDirectoryTest.java @@ -139,10 +139,10 @@ public class OutputDirectoryTest extends ConnectorTestCase { // Assert correct output assertTo( - "1,'USA','2004-10-23','San Francisco'", - "2,'USA','2004-10-24','Sunnyvale'", - "3,'Czech Republic','2004-10-25','Brno'", - "4,'USA','2004-10-26','Palo Alto'" + "1,'USA','2004-10-23 00:00:00.000','San Francisco'", + "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'", + "3,'Czech Republic','2004-10-25 00:00:00.000','Brno'", + "4,'USA','2004-10-26 00:00:00.000','Palo Alto'" ); dropTable(); http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/AllTypesTest.java ---------------------------------------------------------------------- diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/AllTypesTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/AllTypesTest.java index 5053b56..ac5a61a 100644 --- a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/AllTypesTest.java +++ b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/AllTypesTest.java @@ -80,7 +80,7 @@ public class AllTypesTest extends ConnectorTestCase implements ITest { int i = 1; for(ExampleValue value: type.values) { - insertRow(false, Integer.toString(i++), value.getInsertStatement()); + insertRow(i++, value.getObjectValue()); } // RDBMS link @@ -156,8 +156,7 @@ public class AllTypesTest extends ConnectorTestCase implements ITest { assertEquals(type.values.size(), rowCount()); for(ExampleValue value : type.values) { assertRow( - new Object[] {"value", value.getInsertStatement()}, - false, + new Object[] {"value", value.getObjectValue()}, value.getObjectValue()); } http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/FromHDFSToRDBMSTest.java ---------------------------------------------------------------------- diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/FromHDFSToRDBMSTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/FromHDFSToRDBMSTest.java index 25cdb68..07eaba1 100644 --- a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/FromHDFSToRDBMSTest.java +++ b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/FromHDFSToRDBMSTest.java @@ -28,6 +28,8 @@ import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; +import java.sql.Timestamp; + import static org.testng.Assert.assertEquals; /** @@ -47,12 +49,11 @@ public class FromHDFSToRDBMSTest extends ConnectorTestCase { @Test public void testBasic() throws Exception { createFromFile("input-0001", - "1,'USA','2004-10-23','San Francisco'", - "2,'USA','2004-10-24','Sunnyvale'", - "3,'Czech Republic','2004-10-25','Brno'", - "4,'USA','2004-10-26','Palo Alto'" + "1,'USA','2004-10-23 00:00:00.000','San Francisco'", + "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'", + "3,'Czech Republic','2004-10-25 00:00:00.000','Brno'", + "4,'USA','2004-10-26 00:00:00.000','Palo Alto'" ); - // RDBMS link MLink rdbmsLink = getClient().createLink("generic-jdbc-connector"); fillRdbmsLinkConfig(rdbmsLink); @@ -80,9 +81,9 @@ public class FromHDFSToRDBMSTest extends ConnectorTestCase { executeJob(job); assertEquals(4L, provider.rowCount(getTableName())); - assertRowInCities(1, "USA", "2004-10-23", "San Francisco"); - assertRowInCities(2, "USA", "2004-10-24", "Sunnyvale"); - assertRowInCities(3, "Czech Republic", "2004-10-25", "Brno"); - assertRowInCities(4, "USA", "2004-10-26", "Palo Alto"); + assertRowInCities(1, "USA", Timestamp.valueOf("2004-10-23 00:00:00.000"), "San Francisco"); + assertRowInCities(2, "USA", Timestamp.valueOf("2004-10-24 00:00:00.000"), "Sunnyvale"); + assertRowInCities(3, "Czech Republic", Timestamp.valueOf("2004-10-25 00:00:00.000"), "Brno"); + assertRowInCities(4, "USA", Timestamp.valueOf("2004-10-26 00:00:00.000"), "Palo Alto"); } } http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/FromRDBMSToHDFSTest.java ---------------------------------------------------------------------- diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/FromRDBMSToHDFSTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/FromRDBMSToHDFSTest.java index 686572a..4cb0edc 100644 --- a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/FromRDBMSToHDFSTest.java +++ b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/FromRDBMSToHDFSTest.java @@ -64,10 +64,10 @@ public class FromRDBMSToHDFSTest extends ConnectorTestCase { // Assert correct output assertTo( - "1,'USA','2004-10-23','San Francisco'", - "2,'USA','2004-10-24','Sunnyvale'", - "3,'Czech Republic','2004-10-25','Brno'", - "4,'USA','2004-10-26','Palo Alto'" + "1,'USA','2004-10-23 00:00:00.000','San Francisco'", + "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'", + "3,'Czech Republic','2004-10-25 00:00:00.000','Brno'", + "4,'USA','2004-10-26 00:00:00.000','Palo Alto'" ); // Clean up testing table @@ -283,10 +283,10 @@ public class FromRDBMSToHDFSTest extends ConnectorTestCase { // Assert correct output assertTo( - "1,'USA','2004-10-23','San Francisco'", - "2,'USA','2004-10-24','Sunnyvale'", - "3,'Czech Republic','2004-10-25','Brno'", - "4,'USA','2004-10-26','Palo Alto'" + "1,'USA','2004-10-23 00:00:00.000','San Francisco'", + "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'", + "3,'Czech Republic','2004-10-25 00:00:00.000','Brno'", + "4,'USA','2004-10-26 00:00:00.000','Palo Alto'" ); // Clean up testing table http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/IncrementalReadTest.java ---------------------------------------------------------------------- diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/IncrementalReadTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/IncrementalReadTest.java index f850768..0c04fd9 100644 --- a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/IncrementalReadTest.java +++ b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/IncrementalReadTest.java @@ -41,10 +41,10 @@ import static org.testng.Assert.assertEquals; public class IncrementalReadTest extends ConnectorTestCase implements ITest { public static Object[] COLUMNS = new Object [][] { - // column - last value - new max value - { "id", "9", "19"}, - { "version", "8.10", "13.10"}, - {"release_date", "2008-10-18", "2013-10-17"}, + // column - last value - new max value + { "id", "9", "19"}, + { "version", "8.10", "13.10"}, + {"release_date", "2008-10-18 00:00:00.0", "2013-10-17 00:00:00.0"}, }; private static String testName; @@ -113,17 +113,17 @@ public class IncrementalReadTest extends ConnectorTestCase implements ITest { // Assert correct output assertTo( - "10,'Jaunty Jackalope',9.04,'2009-04-23'", - "11,'Karmic Koala',9.10,'2009-10-29'", - "12,'Lucid Lynx',10.04,'2010-04-29'", - "13,'Maverick Meerkat',10.10,'2010-10-10'", - "14,'Natty Narwhal',11.04,'2011-04-28'", - "15,'Oneiric Ocelot',11.10,'2011-10-10'", - "16,'Precise Pangolin',12.04,'2012-04-26'", - "17,'Quantal Quetzal',12.10,'2012-10-18'", - "18,'Raring Ringtail',13.04,'2013-04-25'", - "19,'Saucy Salamander',13.10,'2013-10-17'" - ); + "10,'Jaunty Jackalope',9.04,'2009-04-23 00:00:00.000'", + "11,'Karmic Koala',9.10,'2009-10-29 00:00:00.000'", + "12,'Lucid Lynx',10.04,'2010-04-29 00:00:00.000'", + "13,'Maverick Meerkat',10.10,'2010-10-10 00:00:00.000'", + "14,'Natty Narwhal',11.04,'2011-04-28 00:00:00.000'", + "15,'Oneiric Ocelot',11.10,'2011-10-10 00:00:00.000'", + "16,'Precise Pangolin',12.04,'2012-04-26 00:00:00.000'", + "17,'Quantal Quetzal',12.10,'2012-10-18 00:00:00.000'", + "18,'Raring Ringtail',13.04,'2013-04-25 00:00:00.000'", + "19,'Saucy Salamander',13.10,'2013-10-17 00:00:00.000'" + ); // Verify new last value MJob updatedJob = getClient().getJob(job.getName()); @@ -168,17 +168,17 @@ public class IncrementalReadTest extends ConnectorTestCase implements ITest { // Assert correct output assertTo( - "10,'Jaunty Jackalope',9.04,'2009-04-23'", - "11,'Karmic Koala',9.10,'2009-10-29'", - "12,'Lucid Lynx',10.04,'2010-04-29'", - "13,'Maverick Meerkat',10.10,'2010-10-10'", - "14,'Natty Narwhal',11.04,'2011-04-28'", - "15,'Oneiric Ocelot',11.10,'2011-10-10'", - "16,'Precise Pangolin',12.04,'2012-04-26'", - "17,'Quantal Quetzal',12.10,'2012-10-18'", - "18,'Raring Ringtail',13.04,'2013-04-25'", - "19,'Saucy Salamander',13.10,'2013-10-17'" - ); + "10,'Jaunty Jackalope',9.04,'2009-04-23 00:00:00.000'", + "11,'Karmic Koala',9.10,'2009-10-29 00:00:00.000'", + "12,'Lucid Lynx',10.04,'2010-04-29 00:00:00.000'", + "13,'Maverick Meerkat',10.10,'2010-10-10 00:00:00.000'", + "14,'Natty Narwhal',11.04,'2011-04-28 00:00:00.000'", + "15,'Oneiric Ocelot',11.10,'2011-10-10 00:00:00.000'", + "16,'Precise Pangolin',12.04,'2012-04-26 00:00:00.000'", + "17,'Quantal Quetzal',12.10,'2012-10-18 00:00:00.000'", + "18,'Raring Ringtail',13.04,'2013-04-25 00:00:00.000'", + "19,'Saucy Salamander',13.10,'2013-10-17 00:00:00.000'" + ); // Verify new last value MJob updatedJob = getClient().getJob(job.getName()); http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/PartitionerTest.java ---------------------------------------------------------------------- diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/PartitionerTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/PartitionerTest.java index 42bff65..8129c6a 100644 --- a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/PartitionerTest.java +++ b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/PartitionerTest.java @@ -110,26 +110,26 @@ public class PartitionerTest extends ConnectorTestCase implements ITest { // Assert correct output assertToFiles((extractors > maxOutputFiles) ? maxOutputFiles : extractors); assertTo( - "1,'Warty Warthog',4.10,'2004-10-20'", - "2,'Hoary Hedgehog',5.04,'2005-04-08'", - "3,'Breezy Badger',5.10,'2005-10-13'", - "4,'Dapper Drake',6.06,'2006-06-01'", - "5,'Edgy Eft',6.10,'2006-10-26'", - "6,'Feisty Fawn',7.04,'2007-04-19'", - "7,'Gutsy Gibbon',7.10,'2007-10-18'", - "8,'Hardy Heron',8.04,'2008-04-24'", - "9,'Intrepid Ibex',8.10,'2008-10-18'", - "10,'Jaunty Jackalope',9.04,'2009-04-23'", - "11,'Karmic Koala',9.10,'2009-10-29'", - "12,'Lucid Lynx',10.04,'2010-04-29'", - "13,'Maverick Meerkat',10.10,'2010-10-10'", - "14,'Natty Narwhal',11.04,'2011-04-28'", - "15,'Oneiric Ocelot',11.10,'2011-10-10'", - "16,'Precise Pangolin',12.04,'2012-04-26'", - "17,'Quantal Quetzal',12.10,'2012-10-18'", - "18,'Raring Ringtail',13.04,'2013-04-25'", - "19,'Saucy Salamander',13.10,'2013-10-17'" - ); + "1,'Warty Warthog',4.10,'2004-10-20 00:00:00.000'", + "2,'Hoary Hedgehog',5.04,'2005-04-08 00:00:00.000'", + "3,'Breezy Badger',5.10,'2005-10-13 00:00:00.000'", + "4,'Dapper Drake',6.06,'2006-06-01 00:00:00.000'", + "5,'Edgy Eft',6.10,'2006-10-26 00:00:00.000'", + "6,'Feisty Fawn',7.04,'2007-04-19 00:00:00.000'", + "7,'Gutsy Gibbon',7.10,'2007-10-18 00:00:00.000'", + "8,'Hardy Heron',8.04,'2008-04-24 00:00:00.000'", + "9,'Intrepid Ibex',8.10,'2008-10-18 00:00:00.000'", + "10,'Jaunty Jackalope',9.04,'2009-04-23 00:00:00.000'", + "11,'Karmic Koala',9.10,'2009-10-29 00:00:00.000'", + "12,'Lucid Lynx',10.04,'2010-04-29 00:00:00.000'", + "13,'Maverick Meerkat',10.10,'2010-10-10 00:00:00.000'", + "14,'Natty Narwhal',11.04,'2011-04-28 00:00:00.000'", + "15,'Oneiric Ocelot',11.10,'2011-10-10 00:00:00.000'", + "16,'Precise Pangolin',12.04,'2012-04-26 00:00:00.000'", + "17,'Quantal Quetzal',12.10,'2012-10-18 00:00:00.000'", + "18,'Raring Ringtail',13.04,'2013-04-25 00:00:00.000'", + "19,'Saucy Salamander',13.10,'2013-10-17 00:00:00.000'" + ); // Clean up testing table dropTable(); http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/TableStagedRDBMSTest.java ---------------------------------------------------------------------- diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/TableStagedRDBMSTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/TableStagedRDBMSTest.java index 68dc65e..2565c3f 100644 --- a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/TableStagedRDBMSTest.java +++ b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/TableStagedRDBMSTest.java @@ -28,6 +28,8 @@ import org.apache.sqoop.test.data.Cities; import org.apache.sqoop.test.testcases.ConnectorTestCase; import org.testng.annotations.Test; +import java.sql.Timestamp; + /** * */ @@ -38,11 +40,11 @@ public class TableStagedRDBMSTest extends ConnectorTestCase { final TableName stageTableName = new TableName("STAGE_" + getTableName()); createTableCities(); createFromFile("input-0001", - "1,'USA','2004-10-23','San Francisco'", - "2,'USA','2004-10-24','Sunnyvale'", - "3,'Czech Republic','2004-10-25','Brno'", - "4,'USA','2004-10-26','Palo Alto'" - ); + "1,'USA','2004-10-23 00:00:00.000','San Francisco'", + "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'", + "3,'Czech Republic','2004-10-25 00:00:00.000','Brno'", + "4,'USA','2004-10-26 00:00:00.000','Palo Alto'" + ); new Cities(provider, stageTableName).createTables(); // RDBMS link @@ -77,10 +79,10 @@ public class TableStagedRDBMSTest extends ConnectorTestCase { assertEquals(0L, provider.rowCount(stageTableName)); assertEquals(4L, provider.rowCount(getTableName())); - assertRowInCities(1, "USA", "2004-10-23", "San Francisco"); - assertRowInCities(2, "USA", "2004-10-24", "Sunnyvale"); - assertRowInCities(3, "Czech Republic", "2004-10-25", "Brno"); - assertRowInCities(4, "USA", "2004-10-26", "Palo Alto"); + assertRowInCities(1, "USA", Timestamp.valueOf("2004-10-23 00:00:00.000"), "San Francisco"); + assertRowInCities(2, "USA", Timestamp.valueOf("2004-10-24 00:00:00.000"), "Sunnyvale"); + assertRowInCities(3, "Czech Republic", Timestamp.valueOf("2004-10-25 00:00:00.000"), "Brno"); + assertRowInCities(4, "USA", Timestamp.valueOf("2004-10-26 00:00:00.000"), "Palo Alto"); // Clean up testing table provider.dropTable(stageTableName); http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/kafka/FromRDBMSToKafkaTest.java ---------------------------------------------------------------------- diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/kafka/FromRDBMSToKafkaTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/kafka/FromRDBMSToKafkaTest.java index 4ecb018..a34378a 100644 --- a/test/src/test/java/org/apache/sqoop/integration/connector/kafka/FromRDBMSToKafkaTest.java +++ b/test/src/test/java/org/apache/sqoop/integration/connector/kafka/FromRDBMSToKafkaTest.java @@ -29,10 +29,10 @@ import org.testng.annotations.Test; public class FromRDBMSToKafkaTest extends KafkaConnectorTestCase { private static final String[] input = { - "1,'USA','2004-10-23','San Francisco'", - "2,'USA','2004-10-24','Sunnyvale'", - "3,'Czech Republic','2004-10-25','Brno'", - "4,'USA','2004-10-26','Palo Alto'" + "1,'USA','2004-10-23 00:00:00.000','San Francisco'", + "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'", + "3,'Czech Republic','2004-10-25 00:00:00.000','Brno'", + "4,'USA','2004-10-26 00:00:00.000','Palo Alto'" }; @Test
