[ https://issues.apache.org/jira/browse/SQOOP-3396?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16707473#comment-16707473 ]
ASF GitHub Bot commented on SQOOP-3396: --------------------------------------- Github user szvasas commented on a diff in the pull request: https://github.com/apache/sqoop/pull/60#discussion_r238334580 --- Diff: src/test/org/apache/sqoop/importjob/numerictypes/NumericTypesImportTestBase.java --- @@ -65,240 +46,79 @@ * 2. Decimal padding during avro or parquet import * In case of Oracle and Postgres, Sqoop has to pad the values with 0s to avoid errors. */ -public abstract class NumericTypesImportTestBase<T extends AvroTestConfiguration & ParquetTestConfiguration> extends ImportJobTestCase implements DatabaseAdapterFactory { +public abstract class NumericTypesImportTestBase<T extends ImportJobTestConfiguration> extends ThirdPartyTestBase<T> { public static final Log LOG = LogFactory.getLog(NumericTypesImportTestBase.class.getName()); - private Configuration conf = new Configuration(); - - private final T configuration; - private final DatabaseAdapter adapter; private final boolean failWithoutExtraArgs; private final boolean failWithPadding; - // Constants for the basic test case, that doesn't use extra arguments - // that are required to avoid errors, i.e. padding and default precision and scale. - protected final static boolean SUCCEED_WITHOUT_EXTRA_ARGS = false; - protected final static boolean FAIL_WITHOUT_EXTRA_ARGS = true; - - // Constants for the test case that has padding specified but not default precision and scale. - protected final static boolean SUCCEED_WITH_PADDING_ONLY = false; - protected final static boolean FAIL_WITH_PADDING_ONLY = true; - - private Path tableDirPath; - public NumericTypesImportTestBase(T configuration, boolean failWithoutExtraArgs, boolean failWithPaddingOnly) { - this.adapter = createAdapter(); - this.configuration = configuration; + super(configuration); this.failWithoutExtraArgs = failWithoutExtraArgs; this.failWithPadding = failWithPaddingOnly; } - @Rule - public ExpectedException thrown = ExpectedException.none(); - - @Override - protected Configuration getConf() { - return conf; - } - - @Override - protected boolean useHsqldbTestServer() { - return false; - } - - @Override - protected String getConnectString() { - return adapter.getConnectionString(); - } - - @Override - protected SqoopOptions getSqoopOptions(Configuration conf) { - SqoopOptions opts = new SqoopOptions(conf); - adapter.injectConnectionParameters(opts); - return opts; - } - - @Override - protected void dropTableIfExists(String table) throws SQLException { - adapter.dropTableIfExists(table, getManager()); - } - @Before public void setUp() { super.setUp(); - String[] names = configuration.getNames(); - String[] types = configuration.getTypes(); - createTableWithColTypesAndNames(names, types, new String[0]); - List<String[]> inputData = configuration.getSampleData(); - for (String[] input : inputData) { - insertIntoTable(names, types, input); - } tableDirPath = new Path(getWarehouseDir() + "/" + getTableName()); } - @After - public void tearDown() { - try { - dropTableIfExists(getTableName()); - } catch (SQLException e) { - LOG.warn("Error trying to drop table on tearDown: " + e); - } - super.tearDown(); - } + public Path tableDirPath; - private ArgumentArrayBuilder getArgsBuilder(SqoopOptions.FileLayout fileLayout) { - ArgumentArrayBuilder builder = new ArgumentArrayBuilder(); - if (AvroDataFile.equals(fileLayout)) { - builder.withOption("as-avrodatafile"); - } - else if (ParquetFile.equals(fileLayout)) { - builder.withOption("as-parquetfile"); - } + @Rule + public ExpectedException thrown = ExpectedException.none(); + + abstract public ArgumentArrayBuilder getArgsBuilder(); + abstract public void verify(); + public ArgumentArrayBuilder includeCommonOptions(ArgumentArrayBuilder builder) { return builder.withCommonHadoopFlags(true) .withOption("warehouse-dir", getWarehouseDir()) .withOption("num-mappers", "1") .withOption("table", getTableName()) .withOption("connect", getConnectString()); } - /** - * Adds properties to the given arg builder for decimal precision and scale. - * @param builder - */ - private void addPrecisionAndScale(ArgumentArrayBuilder builder) { - builder.withProperty("sqoop.avro.logical_types.decimal.default.precision", "38"); - builder.withProperty("sqoop.avro.logical_types.decimal.default.scale", "3"); - } - - /** - * Enables padding for decimals in avro and parquet import. - * @param builder - */ - private void addPadding(ArgumentArrayBuilder builder) { - builder.withProperty("sqoop.avro.decimal_padding.enable", "true"); - } - - private void addEnableAvroDecimal(ArgumentArrayBuilder builder) { - builder.withProperty("sqoop.avro.logical_types.decimal.enable", "true"); - } - - private void addEnableParquetDecimal(ArgumentArrayBuilder builder) { - builder.withProperty("sqoop.parquet.logical_types.decimal.enable", "true"); - } - private void configureJunitToExpectFailure(boolean failWithPadding) { - if (failWithPadding) { + @Test + public void testImportWithoutPadding() throws IOException { + if(failWithoutExtraArgs){ thrown.expect(IOException.class); thrown.expectMessage("Failure during job; return status 1"); + NumericTypesTestUtils.configureJunitToExpectFailure(thrown); --- End diff -- This method seems to be doing the same thing as the previous line. > Add parquet numeric support for Parquet in Hive import > ------------------------------------------------------ > > Key: SQOOP-3396 > URL: https://issues.apache.org/jira/browse/SQOOP-3396 > Project: Sqoop > Issue Type: Sub-task > Reporter: Fero Szabo > Assignee: Fero Szabo > Priority: Major > -- This message was sent by Atlassian JIRA (v7.6.3#76005)