SQOOP-2170: MySQL specific tests are not properly cleaning up created tables

(Jarek Jarcec Cecho via Abraham Elmahrek)
diff --git a/src/test/com/cloudera/sqoop/TestAllTables.java b/src/test/com/cloudera/sqoop/TestAllTables.java
index d2c7b16..39e8941 100644
--- a/src/test/com/cloudera/sqoop/TestAllTables.java
+++ b/src/test/com/cloudera/sqoop/TestAllTables.java
@@ -29,6 +29,7 @@
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.io.IOUtils;
 import org.junit.Before;
+import org.junit.After;
 
 import com.cloudera.sqoop.testutil.CommonArgs;
 import com.cloudera.sqoop.testutil.ImportJobTestCase;
@@ -110,6 +111,18 @@
     }
   }
 
+  @After
+  public void tearDown() {
+    try {
+      for (String table : tableNames) {
+        dropTableIfExists(table);
+      }
+    } catch(SQLException e) {
+      LOG.error("Can't clean up the database:", e);
+    }
+    super.tearDown();
+  }
+
   public void testMultiTableImport() throws IOException {
     String [] argv = getArgv(true, null);
     runImport(new ImportAllTablesTool(), argv);
diff --git a/src/test/com/cloudera/sqoop/manager/DirectMySQLExportTest.java b/src/test/com/cloudera/sqoop/manager/DirectMySQLExportTest.java
index eac7836..986dc86 100644
--- a/src/test/com/cloudera/sqoop/manager/DirectMySQLExportTest.java
+++ b/src/test/com/cloudera/sqoop/manager/DirectMySQLExportTest.java
@@ -98,6 +98,13 @@
 
   @After
   public void tearDown() {
+    try {
+      Statement stmt = conn.createStatement();
+      stmt.execute(getDropTableStatement(getTableName()));
+    } catch(SQLException e) {
+      LOG.error("Can't clean up the database:", e);
+    }
+
     super.tearDown();
 
     if (null != this.conn) {
@@ -107,16 +114,6 @@
         LOG.error("Got SQLException closing conn: " + sqlE.toString());
       }
     }
-
-    if (null != manager) {
-      try {
-        manager.close();
-        manager = null;
-      } catch (SQLException sqlE) {
-        LOG.error("Got SQLException: " + sqlE.toString());
-        fail("Got SQLException: " + sqlE.toString());
-      }
-    }
   }
 
   @Override
diff --git a/src/test/com/cloudera/sqoop/manager/DirectMySQLTest.java b/src/test/com/cloudera/sqoop/manager/DirectMySQLTest.java
index b7d6284..d0f0c50 100644
--- a/src/test/com/cloudera/sqoop/manager/DirectMySQLTest.java
+++ b/src/test/com/cloudera/sqoop/manager/DirectMySQLTest.java
@@ -119,34 +119,19 @@
       LOG.error("Encountered SQL Exception: " + sqlE);
       sqlE.printStackTrace();
       fail("SQLException when running test setUp(): " + sqlE);
-    } finally {
-      try {
-        if (null != st) {
-          st.close();
-        }
-
-        if (null != connection) {
-          connection.close();
-        }
-      } catch (SQLException sqlE) {
-        LOG.warn("Got SQLException when closing connection: " + sqlE);
-      }
     }
   }
 
   @After
   public void tearDown() {
-    super.tearDown();
-
-    if (null != manager) {
-      try {
-        manager.close();
-        manager = null;
-      } catch (SQLException sqlE) {
-        LOG.error("Got SQLException: " + sqlE.toString());
-        fail("Got SQLException: " + sqlE.toString());
-      }
+    try {
+      Statement stmt = manager.getConnection().createStatement();
+      stmt.execute("DROP TABLE " + getTableName());
+    } catch(SQLException e) {
+      LOG.error("Can't clean up the database:", e);
     }
+
+    super.tearDown();
   }
 
   private String [] getArgv(boolean mysqlOutputDelims, boolean isDirect,
@@ -342,7 +327,17 @@
 
       st.executeUpdate("INSERT INTO `" + RESERVED_TABLE_NAME + "` VALUES("
           + "2,'Aaron','2009-05-14',1000000.00,'engineering')");
+      st.close();
       connection.commit();
+
+      String [] expectedResults = {
+          "2,Aaron,2009-05-14,1000000.0,engineering",
+      };
+
+      doImport(false, false, RESERVED_TABLE_NAME, expectedResults, null);
+
+      st = connection.createStatement();
+      st.execute("DROP TABLE `" + RESERVED_TABLE_NAME + "`");
     } finally {
       if (null != st) {
         st.close();
@@ -353,11 +348,6 @@
       }
     }
 
-    String [] expectedResults = {
-        "2,Aaron,2009-05-14,1000000.0,engineering",
-    };
-
-    doImport(false, false, RESERVED_TABLE_NAME, expectedResults, null);
   }
 
   @Test
@@ -365,7 +355,6 @@
     // Test a JDBC-based import of a table with a column whose name is
     // a reserved sql keyword (and is thus `quoted`).
     final String TABLE_NAME = "mysql_escaped_col_table";
-    setCurTableName(TABLE_NAME);
     SqoopOptions options = new SqoopOptions(MySQLTestUtils.CONNECT_STRING,
         TABLE_NAME);
     options.setUsername(MySQLTestUtils.getCurrentUser());
@@ -390,7 +379,17 @@
 
       st.executeUpdate("INSERT INTO " + TABLE_NAME + " VALUES("
           + "2,'Aaron','2009-05-14',1000000.00,'engineering')");
+      st.close();
       connection.commit();
+
+      String [] expectedResults = {
+          "2,Aaron,2009-05-14,1000000.0,engineering",
+      };
+
+      doImport(false, false, TABLE_NAME, expectedResults, null);
+
+      st = connection.createStatement();
+      st.execute("DROP TABLE " + TABLE_NAME);
     } finally {
       if (null != st) {
         st.close();
@@ -400,11 +399,5 @@
         connection.close();
       }
     }
-
-    String [] expectedResults = {
-        "2,Aaron,2009-05-14,1000000.0,engineering",
-    };
-
-    doImport(false, false, TABLE_NAME, expectedResults, null);
   }
 }
diff --git a/src/test/com/cloudera/sqoop/manager/JdbcMySQLExportTest.java b/src/test/com/cloudera/sqoop/manager/JdbcMySQLExportTest.java
index f7cc297..86b9aab 100644
--- a/src/test/com/cloudera/sqoop/manager/JdbcMySQLExportTest.java
+++ b/src/test/com/cloudera/sqoop/manager/JdbcMySQLExportTest.java
@@ -21,6 +21,7 @@
 import java.io.IOException;
 import java.sql.Connection;
 import java.sql.SQLException;
+import java.sql.Statement;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -97,6 +98,14 @@
 
   @After
   public void tearDown() {
+    try {
+      Statement stmt = conn.createStatement();
+      stmt.execute(getDropTableStatement(getTableName()));
+      stmt.execute(getDropTableStatement(getStagingTableName()));
+    } catch(SQLException e) {
+      LOG.error("Can't clean up the database:", e);
+    }
+
     super.tearDown();
 
     if (null != this.conn) {
@@ -106,16 +115,6 @@
         LOG.error("Got SQLException closing conn: " + sqlE.toString());
       }
     }
-
-    if (null != manager) {
-      try {
-        manager.close();
-        manager = null;
-      } catch (SQLException sqlE) {
-        LOG.error("Got SQLException: " + sqlE.toString());
-        fail("Got SQLException: " + sqlE.toString());
-      }
-    }
   }
 
   @Override
diff --git a/src/test/org/apache/sqoop/manager/mysql/MySqlCallExportTest.java b/src/test/org/apache/sqoop/manager/mysql/MySqlCallExportTest.java
index 3be447e..6bf939b 100644
--- a/src/test/org/apache/sqoop/manager/mysql/MySqlCallExportTest.java
+++ b/src/test/org/apache/sqoop/manager/mysql/MySqlCallExportTest.java
@@ -56,6 +56,18 @@
     createObjects();
   }
 
+  @Override
+  public void tearDown() {
+    try {
+      Statement stmt = getManager().getConnection().createStatement();
+      stmt.execute("DROP TABLE " + getTableName());
+    } catch(SQLException e) {
+      LOG.error("Can't clean up the database:", e);
+    }
+
+    super.tearDown();
+  }
+
   private String[] getArgv(String... extraArgs) {
     ArrayList<String> args = new ArrayList<String>();