@Test
public void testFullIndexerConf() throws Exception {

    IndexerComponentFactory factory = IndexerComponentFactoryUtil.getComponentFactory(impl, getClass().getResourceAsStream("indexerconf_full.xml"), Maps.<String, String>newHashMap());
    IndexerConf conf = factory.createIndexerConf();
    assertEquals("table1", conf.getTable());
    assertEquals(IndexerConf.MappingType.COLUMN, conf.getMappingType());
    assertEquals(IndexerConf.RowReadMode.NEVER, conf.getRowReadMode());
    assertEquals("custom-id", conf.getUniqueKeyField());
    assertEquals("custom-row", conf.getRowField());
    assertEquals("custom-family", conf.getColumnFamilyField());
    assertEquals("custom-table-name", conf.getTableNameField());
    assertEquals(HexUniqueKeyFormatter.class, conf.getUniqueKeyFormatterClass());
    assertEquals(TestResultToSolrMapper.class, conf.getMapperClass());
    List<FieldDefinition> fieldDefs = conf.getFieldDefinitions();
    List<FieldDefinition> expectedFieldDefs = Lists.newArrayList(
            new FieldDefinition("field1", "col:qual1", ValueSource.QUALIFIER, "float"),
            new FieldDefinition("field2", "col:qual2", ValueSource.VALUE, "long",
                    ImmutableMap.of("fieldKeyA", "fieldValueA", "fieldKeyB", "fieldValueB")));
    assertEquals(expectedFieldDefs, fieldDefs);
    
    List<DocumentExtractDefinition> extractDefs = conf.getDocumentExtractDefinitions();
    List<DocumentExtractDefinition> expectedExtractDefs = Lists.newArrayList(
            new DocumentExtractDefinition("testprefix_", "col:qual3", ValueSource.QUALIFIER, "text/html",
                    ImmutableMap.of("extractKeyA", "extractValueA", "extractKeyB", "extractValueB")));
    assertEquals(expectedExtractDefs, extractDefs);
    assertEquals(ImmutableMap.of("globalKeyA", "globalValueA", "globalKeyB", "globalValueB"), conf.getGlobalParams());
    
}