Author: thejas
Date: Fri Feb  7 19:40:39 2014
New Revision: 1565768

URL: http://svn.apache.org/r1565768
Log:
HIVE-6373 : TestCliDriverMethods test can cause entire build to fail (Jason 
Dere via Thejas Nair)

Modified:
    hive/trunk/cli/src/test/org/apache/hadoop/hive/cli/TestCliDriverMethods.java

Modified: 
hive/trunk/cli/src/test/org/apache/hadoop/hive/cli/TestCliDriverMethods.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/cli/src/test/org/apache/hadoop/hive/cli/TestCliDriverMethods.java?rev=1565768&r1=1565767&r2=1565768&view=diff
==============================================================================
--- 
hive/trunk/cli/src/test/org/apache/hadoop/hive/cli/TestCliDriverMethods.java 
(original)
+++ 
hive/trunk/cli/src/test/org/apache/hadoop/hive/cli/TestCliDriverMethods.java 
Fri Feb  7 19:40:39 2014
@@ -65,6 +65,20 @@ import org.apache.thrift.TException;
 // code for the script-based testing
 public class TestCliDriverMethods extends TestCase {
 
+  SecurityManager securityManager;
+
+  // Some of these tests require intercepting System.exit() using the 
SecurityManager.
+  // It is safer to  register/unregister our SecurityManager during 
setup/teardown instead
+  // of doing it within the individual test cases.
+  public void setUp() {
+    securityManager = System.getSecurityManager();
+    System.setSecurityManager(new NoExitSecurityManager(securityManager));
+  }
+
+  public void tearDown() {
+    System.setSecurityManager(securityManager);
+  }
+
   // If the command has an associated schema, make sure it gets printed to use
   public void testThatCliDriverPrintsHeaderForCommandsWithSchema() throws 
CommandNeedRetryException {
     Schema mockSchema = mock(Schema.class);
@@ -192,7 +206,6 @@ public class TestCliDriverMethods extend
     ss.err = System.err;
     ss.out = System.out;
 
-    NoExitSecurityManager newSecurityManager = new NoExitSecurityManager();
     try {
       CliSessionState.start(ss);
       CliDriver cliDriver = new CliDriver();
@@ -202,7 +215,6 @@ public class TestCliDriverMethods extend
       assertEquals(0, e.getStatus());
 
     } catch (Exception e) {
-      newSecurityManager.resetSecurityManager();
       throw e;
     }
 
@@ -214,8 +226,6 @@ public class TestCliDriverMethods extend
     } catch (ExitException e) {
       assertEquals(0, e.getStatus());
 
-    } finally {
-      newSecurityManager.resetSecurityManager();
     }
 
   }
@@ -287,16 +297,15 @@ public class TestCliDriverMethods extend
     sessinState.err = new PrintStream(data);
     sessinState.database = "database";
     CliDriver driver = new CliDriver();
-    NoExitSecurityManager securityManager = new NoExitSecurityManager();
+
     try {
       driver.processSelectDatabase(sessinState);
       fail("shuld be exit");
     } catch (ExitException e) {
       e.printStackTrace();
       assertEquals(40000, e.getStatus());
-    } finally {
-      securityManager.resetSecurityManager();
     }
+
     assertTrue(data.toString().contains(
         "FAILED: ParseException line 1:4 cannot recognize input near 
'database'"));
   }
@@ -319,7 +328,6 @@ public class TestCliDriverMethods extend
     CliSessionState sessionState = new CliSessionState(new HiveConf());
 
     ByteArrayOutputStream data = new ByteArrayOutputStream();
-    NoExitSecurityManager securityManager = new NoExitSecurityManager();
 
     sessionState.err = new PrintStream(data);
     sessionState.out = System.out;
@@ -364,8 +372,6 @@ public class TestCliDriverMethods extend
       assertEquals(40000, e.getStatus());
       assertTrue(data.toString().contains("cannot recognize input near 'bla' 
'bla' 'bla'"));
 
-    } finally {
-      securityManager.resetSecurityManager();
     }
   }
 
@@ -451,9 +457,9 @@ public class TestCliDriverMethods extend
 
     public SecurityManager parentSecurityManager;
 
-    public NoExitSecurityManager() {
+    public NoExitSecurityManager(SecurityManager parent) {
       super();
-      parentSecurityManager = System.getSecurityManager();
+      parentSecurityManager = parent;
       System.setSecurityManager(this);
     }
 
@@ -475,10 +481,6 @@ public class TestCliDriverMethods extend
     public void checkExit(int status) {
       throw new ExitException(status);
     }
-
-    public void resetSecurityManager() {
-      System.setSecurityManager(parentSecurityManager);
-    }
   }
 
   private static class ExitException extends RuntimeException {


Reply via email to