Search in sources :

Example 21 with Reader

use of org.talend.components.api.component.runtime.Reader in project components by Talend.

the class JdbcInputTestIT method testType.

@SuppressWarnings({ "rawtypes" })
@Test
public void testType() throws Exception {
    JDBCInputDefinition definition = new JDBCInputDefinition();
    JDBCInputProperties properties = createCommonJDBCInputProperties(definition);
    Reader reader = DBTestUtils.createCommonJDBCInputReader(properties);
    try {
        IndexedRecordConverter<Object, ? extends IndexedRecord> converter = null;
        for (boolean available = reader.start(); available; available = reader.advance()) {
            converter = DBTestUtils.getIndexRecordConverter(reader, converter);
            IndexedRecord record = converter.convertToAvro(reader.getCurrent());
            assertEquals(String.class, record.get(0).getClass());
            assertEquals(String.class, record.get(1).getClass());
        }
        reader.close();
    } finally {
        reader.close();
    }
}
Also used : IndexedRecord(org.apache.avro.generic.IndexedRecord) Reader(org.talend.components.api.component.runtime.Reader) Test(org.junit.Test)

Example 22 with Reader

use of org.talend.components.api.component.runtime.Reader in project components by Talend.

the class JdbcInputTestIT method testReader.

@SuppressWarnings({ "rawtypes", "unchecked" })
@Test
public void testReader() {
    Reader reader = null;
    try {
        JDBCInputDefinition definition = new JDBCInputDefinition();
        JDBCInputProperties properties = createCommonJDBCInputProperties(definition);
        reader = DBTestUtils.createCommonJDBCInputReader(properties);
        reader.start();
        IndexedRecord row = (IndexedRecord) reader.getCurrent();
        String id = (String) row.get(0);
        String name = (String) row.get(1);
        assertEquals("1", id);
        assertEquals("wangwei", name);
        reader.advance();
        row = (IndexedRecord) reader.getCurrent();
        id = (String) row.get(0);
        name = (String) row.get(1);
        assertEquals("2", id);
        assertEquals("gaoyan", name);
        reader.advance();
        row = (IndexedRecord) reader.getCurrent();
        id = (String) row.get(0);
        name = (String) row.get(1);
        assertEquals("3", id);
        assertEquals("dabao", name);
        reader.close();
        Map<String, Object> returnMap = reader.getReturnValues();
        Assert.assertEquals(3, returnMap.get(ComponentDefinition.RETURN_TOTAL_RECORD_COUNT));
    } catch (Exception e) {
        Assert.fail(e.getMessage());
    } finally {
        if (reader != null) {
            try {
                reader.close();
            } catch (IOException e) {
                Assert.fail(e.getMessage());
            }
        }
    }
}
Also used : IndexedRecord(org.apache.avro.generic.IndexedRecord) Reader(org.talend.components.api.component.runtime.Reader) IOException(java.io.IOException) IOException(java.io.IOException) SQLException(java.sql.SQLException) Test(org.junit.Test)

Example 23 with Reader

use of org.talend.components.api.component.runtime.Reader in project components by Talend.

the class JDBCInputTestIT method testType.

@SuppressWarnings({ "rawtypes" })
@Test
public void testType() throws Exception {
    TJDBCInputDefinition definition = new TJDBCInputDefinition();
    TJDBCInputProperties properties = DBTestUtils.createCommonJDBCInputProperties(allSetting, definition);
    properties.main.schema.setValue(DBTestUtils.createTestSchema(tablename));
    properties.tableSelection.tablename.setValue(tablename);
    properties.sql.setValue(DBTestUtils.getSQL(tablename));
    Reader reader = DBTestUtils.createCommonJDBCInputReader(properties);
    try {
        IndexedRecordConverter<Object, ? extends IndexedRecord> converter = null;
        for (boolean available = reader.start(); available; available = reader.advance()) {
            converter = DBTestUtils.getIndexRecordConverter(reader, converter);
            IndexedRecord record = converter.convertToAvro(reader.getCurrent());
            assertEquals(Integer.class, record.get(0).getClass());
            assertEquals(String.class, record.get(1).getClass());
        }
        reader.close();
    } finally {
        reader.close();
    }
}
Also used : IndexedRecord(org.apache.avro.generic.IndexedRecord) JDBCInputReader(org.talend.components.jdbc.runtime.reader.JDBCInputReader) Reader(org.talend.components.api.component.runtime.Reader) TJDBCInputProperties(org.talend.components.jdbc.tjdbcinput.TJDBCInputProperties) TJDBCInputDefinition(org.talend.components.jdbc.tjdbcinput.TJDBCInputDefinition) Test(org.junit.Test)

Example 24 with Reader

use of org.talend.components.api.component.runtime.Reader in project components by Talend.

the class JDBCSPTestIT method test_basic_as_input.

@SuppressWarnings("rawtypes")
@Test
public void test_basic_as_input() throws Exception {
    TJDBCSPDefinition definition = new TJDBCSPDefinition();
    TJDBCSPProperties properties = DBTestUtils.createCommonJDBCSPProperties(allSetting, definition);
    properties.isFunction.setValue(true);
    properties.returnResultIn.setValue("PARAMETER");
    properties.spName.setValue("SYSCS_UTIL.SYSCS_GET_DATABASE_NAME");
    Schema schema = DBTestUtils.createSPSchema2(tablename);
    properties.main.schema.setValue(schema);
    properties.schemaFlow.schema.setValue(schema);
    JDBCSPSource source = new JDBCSPSource();
    source.initialize(null, properties);
    ValidationResult result = source.validate(null);
    Assert.assertTrue(result.getStatus() == ValidationResult.Result.OK);
    Reader reader = source.createReader(null);
    try {
        reader.start();
        IndexedRecord row = (IndexedRecord) reader.getCurrent();
        String v1 = (String) row.get(0);
        Assert.assertEquals("memory:myDB", v1);
        // only output one row when it works as a input component
        Assert.assertFalse(reader.advance());
        reader.close();
    } finally {
        reader.close();
    }
}
Also used : IndexedRecord(org.apache.avro.generic.IndexedRecord) Schema(org.apache.avro.Schema) TJDBCSPProperties(org.talend.components.jdbc.tjdbcsp.TJDBCSPProperties) JDBCSPSource(org.talend.components.jdbc.runtime.JDBCSPSource) Reader(org.talend.components.api.component.runtime.Reader) TJDBCSPDefinition(org.talend.components.jdbc.tjdbcsp.TJDBCSPDefinition) ValidationResult(org.talend.daikon.properties.ValidationResult) Test(org.junit.Test)

Example 25 with Reader

use of org.talend.components.api.component.runtime.Reader in project components by Talend.

the class DBTestUtils method fetchDataByReaderFromTable.

@SuppressWarnings("rawtypes")
public static List<IndexedRecord> fetchDataByReaderFromTable(String tablename, Schema schema, TJDBCInputDefinition definition, TJDBCInputProperties properties) {
    List<IndexedRecord> result = new ArrayList<IndexedRecord>();
    properties.main.schema.setValue(schema);
    properties.tableSelection.tablename.setValue(tablename);
    properties.sql.setValue("select * from " + tablename);
    JDBCSource source = new JDBCSource();
    source.initialize(null, properties);
    Reader reader = null;
    try {
        reader = source.createReader(null);
        boolean haveNext = reader.start();
        while (haveNext) {
            IndexedRecord row = (IndexedRecord) reader.getCurrent();
            result.add(copyValueFrom(row));
            haveNext = reader.advance();
        }
        reader.close();
    } catch (Exception e) {
        Assert.fail(e.getMessage());
    } finally {
        if (reader != null) {
            try {
                reader.close();
            } catch (IOException e) {
                Assert.fail(e.getMessage());
            }
        }
    }
    return result;
}
Also used : IndexedRecord(org.apache.avro.generic.IndexedRecord) ArrayList(java.util.ArrayList) Reader(org.talend.components.api.component.runtime.Reader) JDBCSource(org.talend.components.jdbc.runtime.JDBCSource) IOException(java.io.IOException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) SQLException(java.sql.SQLException) MalformedURLException(java.net.MalformedURLException) IOException(java.io.IOException)

Aggregations

Reader (org.talend.components.api.component.runtime.Reader)35 IndexedRecord (org.apache.avro.generic.IndexedRecord)31 Test (org.junit.Test)28 IOException (java.io.IOException)10 Schema (org.apache.avro.Schema)9 SalesforceInputProperties (org.talend.components.salesforce.dataprep.SalesforceInputProperties)9 ValidationResult (org.talend.daikon.properties.ValidationResult)9 SQLException (java.sql.SQLException)6 ArrayList (java.util.ArrayList)6 Map (java.util.Map)6 DataRejectException (org.talend.components.api.exception.DataRejectException)6 JDBCRowSource (org.talend.components.jdbc.runtime.JDBCRowSource)6 TJDBCInputDefinition (org.talend.components.jdbc.tjdbcinput.TJDBCInputDefinition)6 TJDBCInputProperties (org.talend.components.jdbc.tjdbcinput.TJDBCInputProperties)6 TJDBCRowDefinition (org.talend.components.jdbc.tjdbcrow.TJDBCRowDefinition)6 TJDBCRowProperties (org.talend.components.jdbc.tjdbcrow.TJDBCRowProperties)6 ResultSet (java.sql.ResultSet)4 HashMap (java.util.HashMap)4 TSalesforceBulkExecDefinition (org.talend.components.salesforce.tsalesforcebulkexec.TSalesforceBulkExecDefinition)4 TSalesforceBulkExecProperties (org.talend.components.salesforce.tsalesforcebulkexec.TSalesforceBulkExecProperties)4