int[] indexMapping = new int[inputSchema.size()]; for (int i = 0; i < indexMapping.length; i++) { indexMapping[i] = -1;
@Override public void run(TaskSource task, Schema newSchema) { ArrayList<String> resolvedColumnNamesList = new ArrayList<>(newSchema.size()); for (Column resolvedColumn : newSchema.getColumns()) { resolvedColumnNamesList.add(resolvedColumn.getName()); } String[] resolvedColumnNames = Iterables.toArray(resolvedColumnNamesList, String.class); assertEquals(expectedColumnNames, resolvedColumnNames); for (int i = 0; i < expectedColumnNames.length; ++i) { Column original = originalSchema.getColumn(i); Column resolved = newSchema.getColumn(i); assertEquals(original.getType(), resolved.getType()); } } });
@Test public void buildOutputSchema_AddColumns() { PluginTask task = taskFromYamlString( "type: column", "add_columns:", " - {name: timestamp, type: timestamp, default: 2015-07-13, format: \"%Y-%m-%d\", timezone: UTC}", " - {name: string, type: string, default: string}", " - {name: boolean, type: boolean, default: true}", " - {name: long, type: long, default: 0}", " - {name: double, type: double, default: 0.5}", " - {name: json, type: json, default: \"{\\\"foo\\\":\\\"bar\\\"}\" }"); Schema inputSchema = Schema.builder() .add("keep_me", STRING) .build(); Schema outputSchema = ColumnFilterPlugin.buildOutputSchema(task, inputSchema); assertEquals(7, outputSchema.size()); Column column; { column = outputSchema.getColumn(0); assertEquals("keep_me", column.getName()); } { column = outputSchema.getColumn(1); assertEquals("timestamp", column.getName()); } }
@Test public void buildOutputSchema_Columns() { PluginTask task = taskFromYamlString( "type: column", "columns:", " - {name: timestamp}", " - {name: string}", " - {name: boolean}", " - {name: long}", " - {name: double}", " - {name: json}"); Schema inputSchema = Schema.builder() .add("timestamp", TIMESTAMP) .add("string", STRING) .add("boolean", BOOLEAN) .add("long", LONG) .add("double", DOUBLE) .add("json", JSON) .add("remove_me", STRING) .build(); Schema outputSchema = ColumnFilterPlugin.buildOutputSchema(task, inputSchema); assertEquals(6, outputSchema.size()); Column column; { column = outputSchema.getColumn(0); assertEquals("timestamp", column.getName()); } }
@Test public void buildOutputSchema_DropColumns() { PluginTask task = taskFromYamlString( "type: column", "drop_columns:", " - {name: timestamp}", " - {name: string}", " - {name: boolean}", " - {name: long}", " - {name: double}", " - {name: json}"); Schema inputSchema = Schema.builder() .add("timestamp", TIMESTAMP) .add("string", STRING) .add("boolean", BOOLEAN) .add("long", LONG) .add("double", DOUBLE) .add("json", JSON) .add("keep_me", STRING) .build(); Schema outputSchema = ColumnFilterPlugin.buildOutputSchema(task, inputSchema); assertEquals(1, outputSchema.size()); Column column; { column = outputSchema.getColumn(0); assertEquals("keep_me", column.getName()); } }