@BeforeClass public static void setup() { // create mock HashMap<String, Integer> map = new HashMap<String, Integer>(); map.put("id", Types.TINYINT); map.put("name", Types.VARCHAR); manager = Mockito.mock(ConnManager.class); when(manager.getColumnNames(inputTableName)).thenReturn(new String[] { "id", "name" }); when(manager.getColumnTypes(inputTableName)).thenReturn(map); options = new SqoopOptions(testDbUri, inputTableName); options.setTargetDir(testTargetDir); options.setHiveExternalTableDir(hdfsTableDir); String[] cols = new String[] { "id", "name" }; options.setColumns(cols); options.setMapColumnHive("id=TINYINT,name=STRING"); }
@Test public void testAvroWithSomeColumnsSpecified() throws Exception { SqoopOptions opts = new SqoopOptions(); opts.setExportDir("myexportdir"); String[] columns = { "Age", "Name" }; opts.setColumns(columns); JdbcExportJob jdbcExportJob = stubJdbcExportJob(opts, FileType.AVRO_DATA_FILE); Job job = new Job(); jdbcExportJob.configureInputFormat(job, null, null, null); assertEquals(asSetOfText("Age", "Name"), DefaultStringifier.load(job.getConfiguration(), AvroExportMapper.AVRO_COLUMN_TYPES_MAP, MapWritable.class).keySet()); }
@Test public void testAvroWithMoreColumnsSpecified() throws Exception { SqoopOptions opts = new SqoopOptions(); opts.setExportDir("myexportdir"); String[] columns = { "Age", "Name", "Gender", "Address" }; opts.setColumns(columns); JdbcExportJob jdbcExportJob = stubJdbcExportJob(opts, FileType.AVRO_DATA_FILE); Job job = new Job(); jdbcExportJob.configureInputFormat(job, null, null, null); assertEquals(asSetOfText("Age", "Name", "Gender"), DefaultStringifier.load(job.getConfiguration(), AvroExportMapper.AVRO_COLUMN_TYPES_MAP, MapWritable.class).keySet()); }
@Test public void testFilteringSpecifiedColumnNamesWhenSubset() { SqoopOptions opts = new SqoopOptions(); String[] cols = { "bbb", "ccc" }; opts.setColumns(cols); SqlManager sqlManager = stubSqlManager(opts); String[] allColumnsFromDbTable = { "aaa", "bbb", "ccc", "ddd" }; assertArrayEquals(new String[]{ "bbb", "ccc" }, sqlManager.filterSpecifiedColumnNames(allColumnsFromDbTable)); }
@Test public void testAvroWithOneColumnSpecified() throws Exception { SqoopOptions opts = new SqoopOptions(); opts.setExportDir("myexportdir"); String[] columns = { "Gender" }; opts.setColumns(columns); JdbcExportJob jdbcExportJob = stubJdbcExportJob(opts, FileType.AVRO_DATA_FILE); Job job = new Job(); jdbcExportJob.configureInputFormat(job, null, null, null); assertEquals(asSetOfText("Gender"), DefaultStringifier.load(job.getConfiguration(), AvroExportMapper.AVRO_COLUMN_TYPES_MAP, MapWritable.class).keySet()); }
@Test public void testFilteringSpecifiedColumnNamesUsesCaseFromArgumentNotDatabase() { SqoopOptions opts = new SqoopOptions(); String[] cols = { "bbb", "ccc" }; opts.setColumns(cols); SqlManager sqlManager = stubSqlManager(opts); String[] allColumnsFromDbTable = { "AAA", "BBB", "CCC", "DDD" }; assertArrayEquals(new String[]{ "bbb", "ccc" }, sqlManager.filterSpecifiedColumnNames(allColumnsFromDbTable)); }
@Test public void testAvroWithAllColumnsSpecified() throws Exception { SqoopOptions opts = new SqoopOptions(); opts.setExportDir("myexportdir"); String[] columns = { "Age", "Name", "Gender" }; opts.setColumns(columns); JdbcExportJob jdbcExportJob = stubJdbcExportJob(opts, FileType.AVRO_DATA_FILE); Job job = new Job(); jdbcExportJob.configureInputFormat(job, null, null, null); assertEquals(asSetOfText("Age", "Name", "Gender"), DefaultStringifier.load(job.getConfiguration(), AvroExportMapper.AVRO_COLUMN_TYPES_MAP, MapWritable.class).keySet()); }
@Test public void testColumnNameCaseInsensitive() { SqoopOptions opts = new SqoopOptions(); opts.setColumns(new String[]{ "AAA", "bbb" }); assertEquals("AAA", opts.getColumnNameCaseInsensitive("aAa")); assertEquals("bbb", opts.getColumnNameCaseInsensitive("BbB")); assertEquals(null, opts.getColumnNameCaseInsensitive("notFound")); opts.setColumns(null); assertEquals(null, opts.getColumnNameCaseInsensitive("noColumns")); }