HDFS-4687. TestDelegationTokenForProxyUser#testWebHdfsDoAs is flaky with JDK7. Contributed by Andrew Wang.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1477344 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Aaron Myers 2013-04-29 21:10:50 +00:00
parent c06bbc25e8
commit ce73b3b01f
2 changed files with 19 additions and 16 deletions

View File

@ -268,6 +268,9 @@ Trunk (Unreleased)
HDFS-4761. When resetting FSDirectory, the inodeMap should also be reset. HDFS-4761. When resetting FSDirectory, the inodeMap should also be reset.
(Jing Zhao via szetszwo) (Jing Zhao via szetszwo)
HDFS-4687. TestDelegationTokenForProxyUser#testWebHdfsDoAs is flaky with
JDK7. (Andrew Wang via atm)
BREAKDOWN OF HADOOP-8562 and HDFS-3602 SUBTASKS AND RELATED JIRAS BREAKDOWN OF HADOOP-8562 and HDFS-3602 SUBTASKS AND RELATED JIRAS
HDFS-4145. Merge hdfs cmd line scripts from branch-1-win. (David Lao, HDFS-4145. Merge hdfs cmd line scripts from branch-1-win. (David Lao,

View File

@ -60,24 +60,26 @@
import org.apache.hadoop.security.authorize.ProxyUsers; import org.apache.hadoop.security.authorize.ProxyUsers;
import org.apache.hadoop.security.token.Token; import org.apache.hadoop.security.token.Token;
import org.apache.log4j.Level; import org.apache.log4j.Level;
import org.junit.After; import org.junit.AfterClass;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Before; import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
public class TestDelegationTokenForProxyUser { public class TestDelegationTokenForProxyUser {
private MiniDFSCluster cluster; private static MiniDFSCluster cluster;
Configuration config; private static Configuration config;
final private static String GROUP1_NAME = "group1"; final private static String GROUP1_NAME = "group1";
final private static String GROUP2_NAME = "group2"; final private static String GROUP2_NAME = "group2";
final private static String[] GROUP_NAMES = new String[] { GROUP1_NAME, final private static String[] GROUP_NAMES = new String[] { GROUP1_NAME,
GROUP2_NAME }; GROUP2_NAME };
final private static String REAL_USER = "RealUser"; final private static String REAL_USER = "RealUser";
final private static String PROXY_USER = "ProxyUser"; final private static String PROXY_USER = "ProxyUser";
private static UserGroupInformation ugi;
private static UserGroupInformation proxyUgi;
private static final Log LOG = LogFactory.getLog(TestDoAsEffectiveUser.class); private static final Log LOG = LogFactory.getLog(TestDoAsEffectiveUser.class);
private void configureSuperUserIPAddresses(Configuration conf, private static void configureSuperUserIPAddresses(Configuration conf,
String superUserShortName) throws IOException { String superUserShortName) throws IOException {
ArrayList<String> ipList = new ArrayList<String>(); ArrayList<String> ipList = new ArrayList<String>();
Enumeration<NetworkInterface> netInterfaceList = NetworkInterface Enumeration<NetworkInterface> netInterfaceList = NetworkInterface
@ -102,8 +104,8 @@ private void configureSuperUserIPAddresses(Configuration conf,
builder.toString()); builder.toString());
} }
@Before @BeforeClass
public void setUp() throws Exception { public static void setUp() throws Exception {
config = new HdfsConfiguration(); config = new HdfsConfiguration();
config.setBoolean(DFSConfigKeys.DFS_WEBHDFS_ENABLED_KEY, true); config.setBoolean(DFSConfigKeys.DFS_WEBHDFS_ENABLED_KEY, true);
config.setLong( config.setLong(
@ -119,21 +121,20 @@ public void setUp() throws Exception {
cluster = new MiniDFSCluster.Builder(config).build(); cluster = new MiniDFSCluster.Builder(config).build();
cluster.waitActive(); cluster.waitActive();
ProxyUsers.refreshSuperUserGroupsConfiguration(config); ProxyUsers.refreshSuperUserGroupsConfiguration(config);
ugi = UserGroupInformation.createRemoteUser(REAL_USER);
proxyUgi = UserGroupInformation.createProxyUserForTesting(PROXY_USER, ugi,
GROUP_NAMES);
} }
@After @AfterClass
public void tearDown() throws Exception { public static void tearDown() throws Exception {
if(cluster!=null) { if(cluster!=null) {
cluster.shutdown(); cluster.shutdown();
} }
} }
@Test @Test(timeout=20000)
public void testDelegationTokenWithRealUser() throws IOException { public void testDelegationTokenWithRealUser() throws IOException {
UserGroupInformation ugi = UserGroupInformation
.createRemoteUser(REAL_USER);
final UserGroupInformation proxyUgi = UserGroupInformation
.createProxyUserForTesting(PROXY_USER, ugi, GROUP_NAMES);
try { try {
Token<?>[] tokens = proxyUgi Token<?>[] tokens = proxyUgi
.doAs(new PrivilegedExceptionAction<Token<?>[]>() { .doAs(new PrivilegedExceptionAction<Token<?>[]>() {
@ -154,12 +155,11 @@ public Token<?>[] run() throws IOException {
} }
} }
@Test @Test(timeout=20000)
public void testWebHdfsDoAs() throws Exception { public void testWebHdfsDoAs() throws Exception {
WebHdfsTestUtil.LOG.info("START: testWebHdfsDoAs()"); WebHdfsTestUtil.LOG.info("START: testWebHdfsDoAs()");
((Log4JLogger)NamenodeWebHdfsMethods.LOG).getLogger().setLevel(Level.ALL); ((Log4JLogger)NamenodeWebHdfsMethods.LOG).getLogger().setLevel(Level.ALL);
((Log4JLogger)ExceptionHandler.LOG).getLogger().setLevel(Level.ALL); ((Log4JLogger)ExceptionHandler.LOG).getLogger().setLevel(Level.ALL);
final UserGroupInformation ugi = UserGroupInformation.createRemoteUser(REAL_USER);
WebHdfsTestUtil.LOG.info("ugi.getShortUserName()=" + ugi.getShortUserName()); WebHdfsTestUtil.LOG.info("ugi.getShortUserName()=" + ugi.getShortUserName());
final WebHdfsFileSystem webhdfs = WebHdfsTestUtil.getWebHdfsFileSystemAs(ugi, config); final WebHdfsFileSystem webhdfs = WebHdfsTestUtil.getWebHdfsFileSystemAs(ugi, config);