You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by jd...@apache.org on 2014/11/06 22:03:16 UTC
svn commit: r1637222 -
/hive/trunk/cli/src/test/org/apache/hadoop/hive/cli/TestCliDriverMethods.java
Author: jdere
Date: Thu Nov 6 21:03:15 2014
New Revision: 1637222
URL: http://svn.apache.org/r1637222
Log:
HIVE-8737: setEnv is not portable, which fails TestCliDriverMethods#testprocessInitFiles on Windows (Xiaobing Zhou via Jason Dere)
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=1637222&r1=1637221&r2=1637222&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 Thu Nov 6 21:03:15 2014
@@ -58,6 +58,7 @@ import org.apache.hadoop.hive.ql.Driver;
import org.apache.hadoop.hive.ql.processors.CommandProcessorResponse;
import org.apache.hadoop.hive.service.HiveClient;
import org.apache.hadoop.hive.service.HiveServerException;
+import org.apache.hadoop.util.Shell;
import org.apache.thrift.TException;
@@ -375,8 +376,14 @@ public class TestCliDriverMethods extend
}
}
-
private static void setEnv(String key, String value) throws Exception {
+ if (Shell.WINDOWS)
+ setEnvWindows(key, value);
+ else
+ setEnvLinux(key, value);
+ }
+
+ private static void setEnvLinux(String key, String value) throws Exception {
Class[] classes = Collections.class.getDeclaredClasses();
Map<String, String> env = (Map<String, String>) System.getenv();
for (Class cl : classes) {
@@ -394,6 +401,26 @@ public class TestCliDriverMethods extend
}
}
+ private static void setEnvWindows(String key, String value) throws Exception {
+ Class<?> processEnvironmentClass = Class.forName("java.lang.ProcessEnvironment");
+ Field theEnvironmentField = processEnvironmentClass.getDeclaredField("theEnvironment");
+ theEnvironmentField.setAccessible(true);
+ Map<String, String> env = (Map<String, String>) theEnvironmentField.get(null);
+ if (value == null) {
+ env.remove(key);
+ } else {
+ env.put(key, value);
+ }
+
+ Field theCaseInsensitiveEnvironmentField = processEnvironmentClass.getDeclaredField("theCaseInsensitiveEnvironment");
+ theCaseInsensitiveEnvironmentField.setAccessible(true);
+ Map<String, String> cienv = (Map<String, String>) theCaseInsensitiveEnvironmentField.get(null);
+ if (value == null) {
+ cienv.remove(key);
+ } else {
+ cienv.put(key, value);
+ }
+ }
private static class FakeCliDriver extends CliDriver {