You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by to...@apache.org on 2011/06/14 23:53:43 UTC
svn commit: r1135820 - in /hadoop/common/trunk/common: CHANGES.txt
src/java/org/apache/hadoop/security/UserGroupInformation.java
src/test/core/org/apache/hadoop/security/TestUserGroupInformation.java
Author: tomwhite
Date: Tue Jun 14 21:53:43 2011
New Revision: 1135820
URL: http://svn.apache.org/viewvc?rev=1135820&view=rev
Log:
HADOOP-7389. Use of TestingGroups by tests causes subsequent tests to fail. Contributed by Aaron T. Myers.
Modified:
hadoop/common/trunk/common/CHANGES.txt
hadoop/common/trunk/common/src/java/org/apache/hadoop/security/UserGroupInformation.java
hadoop/common/trunk/common/src/test/core/org/apache/hadoop/security/TestUserGroupInformation.java
Modified: hadoop/common/trunk/common/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/common/CHANGES.txt?rev=1135820&r1=1135819&r2=1135820&view=diff
==============================================================================
--- hadoop/common/trunk/common/CHANGES.txt (original)
+++ hadoop/common/trunk/common/CHANGES.txt Tue Jun 14 21:53:43 2011
@@ -306,6 +306,9 @@ Trunk (unreleased changes)
HADOOP-7356. RPM packages broke bin/hadoop script in developer environment.
(Eric Yang via todd)
+ HADOOP-7389. Use of TestingGroups by tests causes subsequent tests to fail.
+ (atm via tomwhite)
+
Release 0.22.0 - Unreleased
INCOMPATIBLE CHANGES
Modified: hadoop/common/trunk/common/src/java/org/apache/hadoop/security/UserGroupInformation.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/common/src/java/org/apache/hadoop/security/UserGroupInformation.java?rev=1135820&r1=1135819&r2=1135820&view=diff
==============================================================================
--- hadoop/common/trunk/common/src/java/org/apache/hadoop/security/UserGroupInformation.java (original)
+++ hadoop/common/trunk/common/src/java/org/apache/hadoop/security/UserGroupInformation.java Tue Jun 14 21:53:43 2011
@@ -878,17 +878,21 @@ public class UserGroupInformation {
private static class TestingGroups extends Groups {
private final Map<String, List<String>> userToGroupsMapping =
new HashMap<String,List<String>>();
+ private Groups underlyingImplementation;
- private TestingGroups() {
+ private TestingGroups(Groups underlyingImplementation) {
super(new org.apache.hadoop.conf.Configuration());
+ this.underlyingImplementation = underlyingImplementation;
}
@Override
- public List<String> getGroups(String user) {
+ public List<String> getGroups(String user) throws IOException {
List<String> result = userToGroupsMapping.get(user);
+
if (result == null) {
- result = new ArrayList<String>();
+ result = underlyingImplementation.getGroups(user);
}
+
return result;
}
@@ -910,7 +914,7 @@ public class UserGroupInformation {
UserGroupInformation ugi = createRemoteUser(user);
// make sure that the testing object is setup
if (!(groups instanceof TestingGroups)) {
- groups = new TestingGroups();
+ groups = new TestingGroups(groups);
}
// add the user groups
((TestingGroups) groups).setUserGroups(ugi.getShortUserName(), userGroups);
@@ -936,7 +940,7 @@ public class UserGroupInformation {
UserGroupInformation ugi = createProxyUser(user, realUser);
// make sure that the testing object is setup
if (!(groups instanceof TestingGroups)) {
- groups = new TestingGroups();
+ groups = new TestingGroups(groups);
}
// add the user groups
((TestingGroups) groups).setUserGroups(ugi.getShortUserName(), userGroups);
Modified: hadoop/common/trunk/common/src/test/core/org/apache/hadoop/security/TestUserGroupInformation.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/common/src/test/core/org/apache/hadoop/security/TestUserGroupInformation.java?rev=1135820&r1=1135819&r2=1135820&view=diff
==============================================================================
--- hadoop/common/trunk/common/src/test/core/org/apache/hadoop/security/TestUserGroupInformation.java (original)
+++ hadoop/common/trunk/common/src/test/core/org/apache/hadoop/security/TestUserGroupInformation.java Tue Jun 14 21:53:43 2011
@@ -62,6 +62,29 @@ public class TestUserGroupInformation {
+ "DEFAULT");
UserGroupInformation.setConfiguration(conf);
}
+
+ /** Test login method */
+ @Test
+ public void testLogin() throws Exception {
+ // login from unix
+ UserGroupInformation ugi = UserGroupInformation.getCurrentUser();
+ assertEquals(UserGroupInformation.getCurrentUser(),
+ UserGroupInformation.getLoginUser());
+ assertTrue(ugi.getGroupNames().length >= 1);
+
+ // ensure that doAs works correctly
+ UserGroupInformation userGroupInfo =
+ UserGroupInformation.createUserForTesting(USER_NAME, GROUP_NAMES);
+ UserGroupInformation curUGI =
+ userGroupInfo.doAs(new PrivilegedExceptionAction<UserGroupInformation>(){
+ public UserGroupInformation run() throws IOException {
+ return UserGroupInformation.getCurrentUser();
+ }});
+ // make sure in the scope of the doAs, the right user is current
+ assertEquals(curUGI, userGroupInfo);
+ // make sure it is not the same as the login user
+ assertFalse(curUGI.equals(UserGroupInformation.getLoginUser()));
+ }
/**
* given user name - get all the groups.
@@ -107,29 +130,6 @@ public class TestUserGroupInformation {
}});
}
- /** Test login method */
- @Test
- public void testLogin() throws Exception {
- // login from unix
- UserGroupInformation ugi = UserGroupInformation.getCurrentUser();
- assertEquals(UserGroupInformation.getCurrentUser(),
- UserGroupInformation.getLoginUser());
- assertTrue(ugi.getGroupNames().length >= 1);
-
- // ensure that doAs works correctly
- UserGroupInformation userGroupInfo =
- UserGroupInformation.createUserForTesting(USER_NAME, GROUP_NAMES);
- UserGroupInformation curUGI =
- userGroupInfo.doAs(new PrivilegedExceptionAction<UserGroupInformation>(){
- public UserGroupInformation run() throws IOException {
- return UserGroupInformation.getCurrentUser();
- }});
- // make sure in the scope of the doAs, the right user is current
- assertEquals(curUGI, userGroupInfo);
- // make sure it is not the same as the login user
- assertFalse(curUGI.equals(UserGroupInformation.getLoginUser()));
- }
-
/** test constructor */
@Test
public void testConstructor() throws Exception {