@Test public void testClose() throws IOException, ClassNotFoundException, SQLException { // connection part TJDBCConnectionDefinition connectionDefinition = new TJDBCConnectionDefinition(); TJDBCConnectionProperties connectionProperties = DBTestUtils.createCommonJDBCConnectionProperties(allSetting, connectionDefinition); JDBCSourceOrSink sourceOrSink = new JDBCSourceOrSink(); sourceOrSink.initialize(null, connectionProperties); ValidationResult result = sourceOrSink.validate(container); assertTrue(result.getStatus() == ValidationResult.Result.OK); // commit part TJDBCCommitDefinition commitDefinition = new TJDBCCommitDefinition(); TJDBCCommitProperties commitProperties = (TJDBCCommitProperties) commitDefinition.createRuntimeProperties(); commitProperties.referencedComponent.componentInstanceId.setValue(refComponentId); commitProperties.closeConnection.setValue(true); JDBCCommitSourceOrSink commitSourceOrSink = new JDBCCommitSourceOrSink(); commitSourceOrSink.initialize(container, commitProperties); commitSourceOrSink.validate(container); try (java.sql.Connection refConnection = (java.sql.Connection) container.getComponentData(refComponentId, ComponentConstants.CONNECTION_KEY)) { assertTrue(refConnection != null); Assert.assertTrue(refConnection.isClosed()); } }
@SuppressWarnings("rawtypes") @Test public void testCommit() throws IOException, ClassNotFoundException, SQLException { // connection part TJDBCConnectionDefinition connectionDefinition = new TJDBCConnectionDefinition(); TJDBCConnectionProperties connectionProperties = DBTestUtils.createCommonJDBCConnectionProperties(allSetting, connectionDefinition); JDBCSourceOrSink sourceOrSink = new JDBCSourceOrSink(); sourceOrSink.initialize(null, connectionProperties); ValidationResult result = sourceOrSink.validate(container); assertTrue(result.getStatus() == ValidationResult.Result.OK); // output part TJDBCOutputDefinition outputDefinition = new TJDBCOutputDefinition(); TJDBCOutputProperties outputProperties = (TJDBCOutputProperties) outputDefinition.createRuntimeProperties(); outputProperties.main.schema.setValue(DBTestUtils.createTestSchema()); outputProperties.updateOutputSchemas(); outputProperties.tableSelection.tablename.setValue(DBTestUtils.getTablename()); outputProperties.dataAction.setValue(DataAction.INSERT); outputProperties.referencedComponent.componentInstanceId.setValue(refComponentId); JDBCSink sink = new JDBCSink(); sink.initialize(container, outputProperties); WriteOperation writerOperation = sink.createWriteOperation(); writerOperation.initialize(container); JDBCOutputInsertWriter writer = (JDBCOutputInsertWriter) writerOperation.createWriter(container); try { writer.open("wid"); IndexedRecord r1 = new GenericData.Record(outputProperties.main.schema.getValue()); r1.put(0, 4); r1.put(1, "xiaoming"); writer.write(r1); DBTestUtils.assertSuccessRecord(writer, r1); IndexedRecord r2 = new GenericData.Record(outputProperties.main.schema.getValue()); r2.put(0, 5); r2.put(1, "xiaobai"); writer.write(r2); DBTestUtils.assertSuccessRecord(writer, r2); writer.close(); } finally { writer.close(); } // commit part TJDBCCommitDefinition commitDefinition = new TJDBCCommitDefinition(); TJDBCCommitProperties commitProperties = (TJDBCCommitProperties) commitDefinition.createRuntimeProperties(); commitProperties.referencedComponent.componentInstanceId.setValue(refComponentId); commitProperties.closeConnection.setValue(false); JDBCCommitSourceOrSink commitSourceOrSink = new JDBCCommitSourceOrSink(); commitSourceOrSink.initialize(container, commitProperties); commitSourceOrSink.validate(container); int count = -1; // create another session and check if the data is inserted try (Connection conn = JdbcRuntimeUtils.createConnection(allSetting); Statement statement = conn.createStatement(); ResultSet resultset = statement.executeQuery("select count(*) from TEST")) { if (resultset.next()) { count = resultset.getInt(1); } } Assert.assertEquals(5, count); try (java.sql.Connection refConnection = (java.sql.Connection) container.getComponentData(refComponentId, ComponentConstants.CONNECTION_KEY)) { assertTrue(refConnection != null); Assert.assertTrue(!refConnection.isClosed()); } }
@Before public void before() throws SQLException, ClassNotFoundException { DBTestUtils.truncateTableAndLoadData(allSetting); }
@AfterClass public static void afterClass() throws ClassNotFoundException, SQLException { DBTestUtils.releaseResource(allSetting); }
@BeforeClass public static void beforeClass() throws Exception { allSetting = DBTestUtils.createAllSetting(); DBTestUtils.createTable(allSetting); }