SQOOP-3366: Improve unit tests to be able to execute them in a single JVM
authorSzabolcs Vasas <vasas@apache.org>
Fri, 24 Aug 2018 10:14:08 +0000 (12:14 +0200)
committerSzabolcs Vasas <vasas@apache.org>
Fri, 24 Aug 2018 10:14:08 +0000 (12:14 +0200)
(Nguyen Truong via Szabolcs Vasas)

src/test/org/apache/sqoop/TestIncrementalImport.java
src/test/org/apache/sqoop/TestSqoopOptions.java
src/test/org/apache/sqoop/metastore/TestMetastoreConfigurationParameters.java
src/test/org/apache/sqoop/testutil/BaseSqoopTestCase.java
src/test/org/apache/sqoop/testutil/HsqldbTestServer.java
src/test/org/apache/sqoop/tool/TestMainframeImportTool.java

index e1faf35..29c4779 100644 (file)
@@ -86,6 +86,7 @@ public class TestIncrementalImport  {
 
   public static void resetSourceDataSchema() throws SQLException {
     SqoopOptions options = new SqoopOptions();
+    SqoopOptions.clearNonceDir();
     options.setConnectString(SOURCE_DB_URL);
     options.setUsername(AUTO_STORAGE_USERNAME);
     options.setPassword(AUTO_STORAGE_PASSWORD);
index d0591ad..e55682e 100644 (file)
@@ -79,7 +79,7 @@ public class TestSqoopOptions {
 
   @Before
   public void setup() {
-    originalSystemProperties = System.getProperties();
+    originalSystemProperties = (Properties)System.getProperties().clone();
     excludedClassesFromClone.add(String.class);
     excludedClassesFromClone.add(Class.class);
     excludedClassesFromClone.add(Integer.class);
index 0f1eb89..5a6fac5 100644 (file)
@@ -45,6 +45,7 @@ public class TestMetastoreConfigurationParameters {
     private static final String TEST_PASSWORD = "sqoop";
     private static final String DEFAULT_HSQLDB_USER = "SA";
     private static final String NON_DEFAULT_PASSWORD = "NOT_DEFAULT";
+    private static final String DEFAULT_PASSWORD = "";
     private static HsqldbTestServer testHsqldbServer;
 
     private Sqoop sqoop;
@@ -57,7 +58,8 @@ public class TestMetastoreConfigurationParameters {
     }
 
     @AfterClass
-    public static void afterClass() {
+    public static void afterClass() throws SQLException {
+        testHsqldbServer.changePasswordForUser(DEFAULT_HSQLDB_USER, NON_DEFAULT_PASSWORD, DEFAULT_PASSWORD);
         testHsqldbServer.stop();
     }
 
@@ -99,7 +101,7 @@ public class TestMetastoreConfigurationParameters {
     private static void setupUsersForTesting() throws SQLException {
         // We create a new user and change the password of SA to make sure that Sqoop does not connect to metastore with the default user and password.
         testHsqldbServer.createNewUser(TEST_USER, TEST_PASSWORD);
-        testHsqldbServer.changePasswordForUser(DEFAULT_HSQLDB_USER, NON_DEFAULT_PASSWORD);
+        testHsqldbServer.changePasswordForUser(DEFAULT_HSQLDB_USER, DEFAULT_PASSWORD, NON_DEFAULT_PASSWORD);
     }
 
     private void verifyMetastoreIsInitialized() throws SQLException {
index 1730698..ad2f10a 100644 (file)
@@ -219,6 +219,8 @@ public abstract class BaseSqoopTestCase {
             CommonArgs.FS_DEFAULT_NAME)));
     incrementTableNum();
 
+    SqoopOptions.clearNonceDir();
+
     if (!isLog4jConfigured) {
       BasicConfigurator.configure();
       isLog4jConfigured = true;
index c63a8f2..0138608 100644 (file)
@@ -285,8 +285,8 @@ public class HsqldbTestServer {
     }
   }
 
-  public void changePasswordForUser(String username, String newPassword) throws SQLException {
-    try (Connection connection = getConnection(); Statement statement = connection.createStatement()) {
+  public void changePasswordForUser(String username, String oldPassword, String newPassword) throws SQLException {
+    try (Connection connection = getConnection(username, oldPassword); Statement statement = connection.createStatement()) {
       statement.executeUpdate(String.format("ALTER USER %s SET PASSWORD %s", username, newPassword));
     }
   }
index c2edc53..00e57bd 100644 (file)
@@ -55,11 +55,6 @@ public class TestMainframeImportTool extends BaseSqoopTestCase {
     sqoopOption = new SqoopOptions();
   }
 
-  @After
-  public void tearDown() {
-    System.setOut(null);
-  }
-
   @SuppressWarnings("deprecation")
   @Test
   public void testGetImportOptions() throws SecurityException,