aboutsummaryrefslogtreecommitdiffstats
path: root/src/test/java
diff options
context:
space:
mode:
authorSaad Rashid <saad373@gmail.com>2013-06-24 17:13:19 +0100
committerSaad Rashid <saad373@gmail.com>2013-06-24 17:13:19 +0100
commit3e4a74de169104679f2459947c27d5cfb8cc430b (patch)
tree28e5ba58790e6964f5228382edacc6d459976926 /src/test/java
parent056fe03a21f48d57f31a0c11f159874b410bc4e9 (diff)
downloadSpyGlass-3e4a74de169104679f2459947c27d5cfb8cc430b.tar.gz
SpyGlass-3e4a74de169104679f2459947c27d5cfb8cc430b.zip
Added JDBCTap support.
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/parallelai/spyglass/jdbc/GenerateTestingTables.java201
1 files changed, 201 insertions, 0 deletions
diff --git a/src/test/java/parallelai/spyglass/jdbc/GenerateTestingTables.java b/src/test/java/parallelai/spyglass/jdbc/GenerateTestingTables.java
new file mode 100644
index 0000000..54ec8fc
--- /dev/null
+++ b/src/test/java/parallelai/spyglass/jdbc/GenerateTestingTables.java
@@ -0,0 +1,201 @@
+package parallelai.spyglass.jdbc;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import junit.framework.Assert;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Test;
+
+/**
+ * Class generates TWO tables in database 'TABLE_01' and 'TABLE_02'
+ *
+ * Those tables are used by the 'integration-testing' of JDBCSource in file
+ * JdbcSourceShouldReadWrite.scala
+ *
+ * Run with: mvn -Dtestparallelai.spyglass.jdbc.GenerateTestingTables test
+ *
+ */
+public class GenerateTestingTables {
+
+ // JDBC driver name and database URL
+ static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
+ static final String DB_PORT = "3306";
+ static final String DB_NAME = "database_name";
+
+
+ static final String DB_URL = "jdbc:mysql://<hostname>:<port>/<db_name>?zeroDateTimeBehavior=convertToNull";
+
+ // Database credentials
+ static final String USER = "user";
+ static final String PASS = "password";
+
+ public static enum TestingTable {
+ TABLE_01, TABLE_02
+ }
+
+ private static final Log LOG = LogFactory
+ .getLog(GenerateTestingTables.class);
+
+ @Test
+ public void fakeTest() {
+
+ // Connect to Quorum
+ LOG.info("Connecting to " + DB_URL + ":" + DB_PORT);
+
+ Connection conn = null;
+ Statement stmt = null;
+ try {
+ // STEP 2: Register JDBC driver
+ Class.forName("com.mysql.jdbc.Driver");
+
+ // STEP 3: Open a connection
+ LOG.info("Connecting to a selected database...");
+ conn = DriverManager.getConnection(DB_URL, USER, PASS);
+ LOG.info("Connected database successfully...");
+
+
+ // Delete test tables
+ deleteTestTable(conn, TestingTable.TABLE_01.name());
+ deleteTestTable(conn, TestingTable.TABLE_02.name());
+
+ // Generate test tables
+ createTestTable(conn, TestingTable.TABLE_01);
+ createTestTable(conn, TestingTable.TABLE_02);
+
+ // Populate test tables
+ populateTestTable(conn, TestingTable.TABLE_01);
+ //populateTestTable(conn, TestingTable.TABLE_02);
+
+ // Print content of test table
+ printHTable(conn, TestingTable.TABLE_01);
+
+ // If we've reached here - the testing data are in
+ Assert.assertEquals("true", "true");
+
+
+ } catch (SQLException se) {
+ // Handle errors for JDBC
+ se.printStackTrace();
+ LOG.error(se.toString());
+ } catch (Exception e) {
+ // Handle errors for Class.forName
+ e.printStackTrace();
+ LOG.error(e.toString());
+ } finally {
+ // finally block used to close resources
+ try {
+ if (stmt != null)
+ conn.close();
+ } catch (SQLException se) {
+ }// do nothing
+ try {
+ if (conn != null)
+ conn.close();
+ } catch (SQLException se) {
+ se.printStackTrace();
+ LOG.error(se.toString());
+ }// end finally try
+ }// end try
+
+ }
+
+ private static void populateTestTable(Connection connection, TestingTable testingTable)
+ throws SQLException {
+
+
+ // Load up table
+ LOG.info("Populating table in given database...");
+ Statement stmt = connection.createStatement();
+
+
+ String [] queries = {
+ "insert into " + testingTable.name() + " values (1, 'A', 'X', 123)",
+ "insert into " + testingTable.name() + " values (2, 'B', 'Y', 234)",
+ "insert into " + testingTable.name() + " values (3, 'C', 'Z', 345)",
+ };
+
+ Statement statement = connection.createStatement();
+
+ for (String query : queries) {
+ statement.addBatch(query);
+ }
+ statement.executeBatch();
+ LOG.info("Populated table in given database...");
+
+ statement.close();
+
+ }
+
+ private static void createTestTable(Connection connection, TestingTable testingTable)
+ throws SQLException {
+
+ LOG.info("Creating table in given database...");
+ Statement stmt = connection.createStatement();
+
+ String sql = "CREATE TABLE " + testingTable.name() + " "
+ + "(id INTEGER not NULL, " + " test_column1 VARCHAR(255), "
+ + " test_column2 VARCHAR(255), " + " test_column3 INTEGER, "
+ + " PRIMARY KEY ( id ))";
+
+ stmt.executeUpdate(sql);
+ LOG.info("Created table in given database...");
+
+ stmt.close();
+ }
+
+ /**
+ * Method to disable and delete HBase Tables i.e. "int-test-01"
+ */
+ private static void deleteTestTable(Connection connection, String tableName) throws SQLException {
+
+
+ // Execute a query
+ LOG.info("Deleting table in given database...");
+ Statement stmt = connection.createStatement();
+
+ String sql = "DROP TABLE IF EXISTS " + tableName;
+
+ int result = stmt.executeUpdate(sql);
+ LOG.info("Deleted table in given database... " + result);
+
+
+ stmt.close();
+ }
+
+ /**
+ * Method to print-out an HTable
+ */
+ private static void printHTable(Connection connection, TestingTable testingTable)
+ throws SQLException {
+
+ // Execute a query
+ LOG.info("Printing table in given database...");
+ Statement stmt = connection.createStatement();
+
+ String sql = "SELECT * FROM " + testingTable.name();
+
+ ResultSet resultSet = stmt.executeQuery(sql);
+ LOG.info("Get data from table in given database...");
+
+ while (resultSet.next()) {
+ Integer key = resultSet.getInt("id");
+ String testColumn1 = resultSet.getString("test_column1");
+ String testColumn2 = resultSet.getString("test_column2");
+ Integer testColumn3 = resultSet.getInt("test_column3");
+
+ LOG.info(key + " : " + testColumn1 + " : " + testColumn2 + " : " + testColumn3);
+ }
+
+ }
+
+ public static void main(String[] args) {
+ GenerateTestingTables test = new GenerateTestingTables();
+ test.fakeTest();
+ }
+} \ No newline at end of file