You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-commits@hadoop.apache.org by da...@apache.org on 2012/08/17 21:25:55 UTC
svn commit: r1374403 - in
/hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src:
main/java/org/apache/hadoop/hdfs/
main/java/org/apache/hadoop/hdfs/server/namenode/web/resources/
main/java/org/apache/hadoop/hdfs/tools/ main/jav...
Author: daryn
Date: Fri Aug 17 19:25:53 2012
New Revision: 1374403
URL: http://svn.apache.org/viewvc?rev=1374403&view=rev
Log:
svn merge -c 1374346 FIXES: HADOOP-7967. Need generalized multi-token filesystem support (daryn)
Modified:
hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DistributedFileSystem.java
hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java
hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DelegationTokenFetcher.java
hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java
hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/resources/GetOpParam.java
hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemAtHdfsRoot.java
hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemHdfs.java
hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/security/TestDelegationToken.java
hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/security/TestDelegationTokenForProxyUser.java
hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/OfflineEditsViewerHelper.java
hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestDelegationTokensWithHA.java
hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewer.java
hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/tools/TestDelegationTokenFetcher.java
Modified: hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DistributedFileSystem.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DistributedFileSystem.java?rev=1374403&r1=1374402&r2=1374403&view=diff
==============================================================================
--- hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DistributedFileSystem.java (original)
+++ hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DistributedFileSystem.java Fri Aug 17 19:25:53 2012
@@ -24,7 +24,6 @@ import java.net.InetSocketAddress;
import java.net.URI;
import java.util.ArrayList;
import java.util.EnumSet;
-import java.util.List;
import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.classification.InterfaceStability;
@@ -809,14 +808,6 @@ public class DistributedFileSystem exten
return getDelegationToken(renewer.toString());
}
- @Override // FileSystem
- public List<Token<?>> getDelegationTokens(String renewer) throws IOException {
- List<Token<?>> tokenList = new ArrayList<Token<?>>();
- Token<DelegationTokenIdentifier> token = this.getDelegationToken(renewer);
- tokenList.add(token);
- return tokenList;
- }
-
/**
* Renew an existing delegation token.
*
Modified: hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java?rev=1374403&r1=1374402&r2=1374403&view=diff
==============================================================================
--- hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java (original)
+++ hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java Fri Aug 17 19:25:53 2012
@@ -669,17 +669,6 @@ public class NamenodeWebHdfsMethods {
final String js = JsonUtil.toJsonString(token);
return Response.ok(js).type(MediaType.APPLICATION_JSON).build();
}
- case GETDELEGATIONTOKENS:
- {
- if (delegation.getValue() != null) {
- throw new IllegalArgumentException(delegation.getName()
- + " parameter is not null.");
- }
- final Token<? extends TokenIdentifier>[] tokens = new Token<?>[1];
- tokens[0] = generateDelegationToken(namenode, ugi, renewer.getValue());
- final String js = JsonUtil.toJsonString(tokens);
- return Response.ok(js).type(MediaType.APPLICATION_JSON).build();
- }
case GETHOMEDIRECTORY:
{
final String js = JsonUtil.toJsonString(
Modified: hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DelegationTokenFetcher.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DelegationTokenFetcher.java?rev=1374403&r1=1374402&r2=1374403&view=diff
==============================================================================
--- hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DelegationTokenFetcher.java (original)
+++ hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DelegationTokenFetcher.java Fri Aug 17 19:25:53 2012
@@ -183,12 +183,13 @@ public class DelegationTokenFetcher {
}
} else {
FileSystem fs = FileSystem.get(conf);
- Token<?> token = fs.getDelegationToken(renewer);
Credentials cred = new Credentials();
- cred.addToken(token.getService(), token);
+ Token<?> tokens[] = fs.addDelegationTokens(renewer, cred);
cred.writeTokenStorageFile(tokenFile, conf);
- System.out.println("Fetched token for " + token.getService()
- + " into " + tokenFile);
+ for (Token<?> token : tokens) {
+ System.out.println("Fetched token for " + token.getService()
+ + " into " + tokenFile);
+ }
}
}
return null;
Modified: hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java?rev=1374403&r1=1374402&r2=1374403&view=diff
==============================================================================
--- hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java (original)
+++ hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java Fri Aug 17 19:25:53 2012
@@ -30,7 +30,6 @@ import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Collection;
-import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
@@ -347,8 +346,7 @@ public class WebHdfsFileSystem extends F
+ Param.toSortedString("&", parameters);
final URL url;
if (op == PutOpParam.Op.RENEWDELEGATIONTOKEN
- || op == GetOpParam.Op.GETDELEGATIONTOKEN
- || op == GetOpParam.Op.GETDELEGATIONTOKENS) {
+ || op == GetOpParam.Op.GETDELEGATIONTOKEN) {
// Skip adding delegation token for getting or renewing delegation token,
// because these operations require kerberos authentication.
url = getNamenodeURL(path, query);
@@ -730,10 +728,9 @@ public class WebHdfsFileSystem extends F
return statuses;
}
- @SuppressWarnings("deprecation")
@Override
- public Token<DelegationTokenIdentifier> getDelegationToken(final String renewer
- ) throws IOException {
+ public Token<DelegationTokenIdentifier> getDelegationToken(
+ final String renewer) throws IOException {
final HttpOpParam.Op op = GetOpParam.Op.GETDELEGATIONTOKEN;
final Map<?, ?> m = run(op, null, new RenewerParam(renewer));
final Token<DelegationTokenIdentifier> token = JsonUtil.toDelegationToken(m);
@@ -742,18 +739,6 @@ public class WebHdfsFileSystem extends F
}
@Override
- public List<Token<?>> getDelegationTokens(final String renewer
- ) throws IOException {
- final HttpOpParam.Op op = GetOpParam.Op.GETDELEGATIONTOKENS;
- final Map<?, ?> m = run(op, null, new RenewerParam(renewer));
- final List<Token<?>> tokens = JsonUtil.toTokenList(m);
- for(Token<?> t : tokens) {
- SecurityUtil.setTokenService(t, nnAddr);
- }
- return tokens;
- }
-
- @Override
public Token<?> getRenewToken() {
return delegationToken;
}
Modified: hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/resources/GetOpParam.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/resources/GetOpParam.java?rev=1374403&r1=1374402&r2=1374403&view=diff
==============================================================================
--- hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/resources/GetOpParam.java (original)
+++ hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/resources/GetOpParam.java Fri Aug 17 19:25:53 2012
@@ -32,7 +32,6 @@ public class GetOpParam extends HttpOpPa
GETHOMEDIRECTORY(HttpURLConnection.HTTP_OK),
GETDELEGATIONTOKEN(HttpURLConnection.HTTP_OK),
- GETDELEGATIONTOKENS(HttpURLConnection.HTTP_OK),
/** GET_BLOCK_LOCATIONS is a private unstable op. */
GET_BLOCK_LOCATIONS(HttpURLConnection.HTTP_OK),
@@ -80,4 +79,4 @@ public class GetOpParam extends HttpOpPa
public String getName() {
return NAME;
}
-}
\ No newline at end of file
+}
Modified: hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemAtHdfsRoot.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemAtHdfsRoot.java?rev=1374403&r1=1374402&r2=1374403&view=diff
==============================================================================
--- hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemAtHdfsRoot.java (original)
+++ hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemAtHdfsRoot.java Fri Aug 17 19:25:53 2012
@@ -59,7 +59,9 @@ public class TestViewFileSystemAtHdfsRoo
@AfterClass
public static void clusterShutdownAtEnd() throws Exception {
- cluster.shutdown();
+ if (cluster != null) {
+ cluster.shutdown();
+ }
}
@Override
@@ -84,7 +86,7 @@ public class TestViewFileSystemAtHdfsRoo
@Override
int getExpectedDelegationTokenCount() {
- return 8;
+ return 1; // all point to the same fs so 1 unique token
}
@Override
Modified: hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemHdfs.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemHdfs.java?rev=1374403&r1=1374402&r2=1374403&view=diff
==============================================================================
--- hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemHdfs.java (original)
+++ hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemHdfs.java Fri Aug 17 19:25:53 2012
@@ -117,7 +117,7 @@ public class TestViewFileSystemHdfs exte
@Override
int getExpectedDelegationTokenCount() {
- return 9;
+ return 2; // Mount points to 2 unique hdfs
}
@Override
Modified: hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/security/TestDelegationToken.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/security/TestDelegationToken.java?rev=1374403&r1=1374402&r2=1374403&view=diff
==============================================================================
--- hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/security/TestDelegationToken.java (original)
+++ hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/security/TestDelegationToken.java Fri Aug 17 19:25:53 2012
@@ -27,8 +27,6 @@ import java.io.DataInputStream;
import java.io.IOException;
import java.net.URI;
import java.security.PrivilegedExceptionAction;
-import java.util.List;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.impl.Log4JLogger;
@@ -49,6 +47,7 @@ import org.apache.hadoop.hdfs.server.nam
import org.apache.hadoop.hdfs.web.WebHdfsFileSystem;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.security.AccessControlException;
+import org.apache.hadoop.security.Credentials;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.security.token.SecretManager.InvalidToken;
import org.apache.hadoop.security.token.Token;
@@ -153,25 +152,18 @@ public class TestDelegationToken {
}
@Test
- public void testDelegationTokenDFSApi() throws Exception {
+ public void testAddDelegationTokensDFSApi() throws Exception {
+ UserGroupInformation ugi = UserGroupInformation.createRemoteUser("JobTracker");
DistributedFileSystem dfs = (DistributedFileSystem) cluster.getFileSystem();
- final Token<DelegationTokenIdentifier> token = dfs.getDelegationToken("JobTracker");
- DelegationTokenIdentifier identifier = new DelegationTokenIdentifier();
- byte[] tokenId = token.getIdentifier();
- identifier.readFields(new DataInputStream(
- new ByteArrayInputStream(tokenId)));
- LOG.info("A valid token should have non-null password, and should be renewed successfully");
- Assert.assertTrue(null != dtSecretManager.retrievePassword(identifier));
- dtSecretManager.renewToken(token, "JobTracker");
- UserGroupInformation.createRemoteUser("JobTracker").doAs(
- new PrivilegedExceptionAction<Object>() {
- @Override
- public Object run() throws Exception {
- token.renew(config);
- token.cancel(config);
- return null;
- }
- });
+ Credentials creds = new Credentials();
+ final Token<?> tokens[] = dfs.addDelegationTokens("JobTracker", creds);
+ Assert.assertEquals(1, tokens.length);
+ Assert.assertEquals(1, creds.numberOfTokens());
+ checkTokenIdentifier(ugi, tokens[0]);
+
+ final Token<?> tokens2[] = dfs.addDelegationTokens("JobTracker", creds);
+ Assert.assertEquals(0, tokens2.length); // already have token
+ Assert.assertEquals(1, creds.numberOfTokens());
}
@SuppressWarnings("deprecation")
@@ -191,51 +183,27 @@ public class TestDelegationToken {
}
});
- { //test getDelegationToken(..)
- final Token<DelegationTokenIdentifier> token = webhdfs
- .getDelegationToken("JobTracker");
- DelegationTokenIdentifier identifier = new DelegationTokenIdentifier();
- byte[] tokenId = token.getIdentifier();
- identifier.readFields(new DataInputStream(new ByteArrayInputStream(tokenId)));
- LOG.info("A valid token should have non-null password, and should be renewed successfully");
- Assert.assertTrue(null != dtSecretManager.retrievePassword(identifier));
- dtSecretManager.renewToken(token, "JobTracker");
- ugi.doAs(new PrivilegedExceptionAction<Void>() {
- @Override
- public Void run() throws Exception {
- token.renew(config);
- token.cancel(config);
- return null;
- }
- });
- }
-
- { //test getDelegationTokens(..)
- final List<Token<?>> tokenlist = webhdfs.getDelegationTokens("JobTracker");
- DelegationTokenIdentifier identifier = new DelegationTokenIdentifier();
- @SuppressWarnings("unchecked")
- final Token<DelegationTokenIdentifier> token = (Token<DelegationTokenIdentifier>)tokenlist.get(0);
- byte[] tokenId = token.getIdentifier();
- identifier.readFields(new DataInputStream(new ByteArrayInputStream(tokenId)));
- LOG.info("A valid token should have non-null password, and should be renewed successfully");
- Assert.assertTrue(null != dtSecretManager.retrievePassword(identifier));
- dtSecretManager.renewToken(token, "JobTracker");
- ugi.doAs(new PrivilegedExceptionAction<Void>() {
- @Override
- public Void run() throws Exception {
- token.renew(config);
- token.cancel(config);
- return null;
- }
- });
+ { //test addDelegationTokens(..)
+ Credentials creds = new Credentials();
+ final Token<?> tokens[] = webhdfs.addDelegationTokens("JobTracker", creds);
+ Assert.assertEquals(1, tokens.length);
+ Assert.assertEquals(1, creds.numberOfTokens());
+ Assert.assertSame(tokens[0], creds.getAllTokens().iterator().next());
+ checkTokenIdentifier(ugi, tokens[0]);
+ final Token<?> tokens2[] = webhdfs.addDelegationTokens("JobTracker", creds);
+ Assert.assertEquals(0, tokens2.length);
}
}
@Test
public void testDelegationTokenWithDoAs() throws Exception {
final DistributedFileSystem dfs = (DistributedFileSystem) cluster.getFileSystem();
- final Token<DelegationTokenIdentifier> token =
- dfs.getDelegationToken("JobTracker");
+ final Credentials creds = new Credentials();
+ final Token<?> tokens[] = dfs.addDelegationTokens("JobTracker", creds);
+ Assert.assertEquals(1, tokens.length);
+ @SuppressWarnings("unchecked")
+ final Token<DelegationTokenIdentifier> token =
+ (Token<DelegationTokenIdentifier>) tokens[0];
final UserGroupInformation longUgi = UserGroupInformation
.createRemoteUser("JobTracker/foo.com@FOO.COM");
final UserGroupInformation shortUgi = UserGroupInformation
@@ -325,4 +293,33 @@ public class TestDelegationToken {
assertFalse(nn.isInSafeMode());
assertTrue(sm.isRunning());
}
+
+ @SuppressWarnings("unchecked")
+ private void checkTokenIdentifier(UserGroupInformation ugi, final Token<?> token)
+ throws Exception {
+ Assert.assertNotNull(token);
+ // should be able to use token.decodeIdentifier() but webhdfs isn't
+ // registered with the service loader for token decoding
+ DelegationTokenIdentifier identifier = new DelegationTokenIdentifier();
+ byte[] tokenId = token.getIdentifier();
+ DataInputStream in = new DataInputStream(new ByteArrayInputStream(tokenId));
+ try {
+ identifier.readFields(in);
+ } finally {
+ in.close();
+ }
+ Assert.assertNotNull(identifier);
+ LOG.info("A valid token should have non-null password, and should be renewed successfully");
+ Assert.assertTrue(null != dtSecretManager.retrievePassword(identifier));
+ dtSecretManager.renewToken((Token<DelegationTokenIdentifier>) token, "JobTracker");
+ ugi.doAs(
+ new PrivilegedExceptionAction<Object>() {
+ @Override
+ public Object run() throws Exception {
+ token.renew(config);
+ token.cancel(config);
+ return null;
+ }
+ });
+ }
}
Modified: hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/security/TestDelegationTokenForProxyUser.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/security/TestDelegationTokenForProxyUser.java?rev=1374403&r1=1374402&r2=1374403&view=diff
==============================================================================
--- hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/security/TestDelegationTokenForProxyUser.java (original)
+++ hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/security/TestDelegationTokenForProxyUser.java Fri Aug 17 19:25:53 2012
@@ -136,17 +136,15 @@ public class TestDelegationTokenForProxy
final UserGroupInformation proxyUgi = UserGroupInformation
.createProxyUserForTesting(PROXY_USER, ugi, GROUP_NAMES);
try {
- Token<DelegationTokenIdentifier> token = proxyUgi
- .doAs(new PrivilegedExceptionAction<Token<DelegationTokenIdentifier>>() {
+ Token<?>[] tokens = proxyUgi
+ .doAs(new PrivilegedExceptionAction<Token<?>[]>() {
@Override
- public Token<DelegationTokenIdentifier> run() throws IOException {
- DistributedFileSystem dfs = (DistributedFileSystem) cluster
- .getFileSystem();
- return dfs.getDelegationToken("RenewerUser");
+ public Token<?>[] run() throws IOException {
+ return cluster.getFileSystem().addDelegationTokens("RenewerUser", null);
}
});
DelegationTokenIdentifier identifier = new DelegationTokenIdentifier();
- byte[] tokenId = token.getIdentifier();
+ byte[] tokenId = tokens[0].getIdentifier();
identifier.readFields(new DataInputStream(new ByteArrayInputStream(
tokenId)));
Assert.assertEquals(identifier.getUser().getUserName(), PROXY_USER);
Modified: hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/OfflineEditsViewerHelper.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/OfflineEditsViewerHelper.java?rev=1374403&r1=1374402&r2=1374403&view=diff
==============================================================================
--- hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/OfflineEditsViewerHelper.java (original)
+++ hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/OfflineEditsViewerHelper.java Fri Aug 17 19:25:53 2012
@@ -40,7 +40,6 @@ import org.apache.hadoop.hdfs.Distribute
import org.apache.hadoop.hdfs.MiniDFSCluster;
import org.apache.hadoop.hdfs.protocol.HdfsConstants;
import org.apache.hadoop.hdfs.protocol.LocatedBlocks;
-import org.apache.hadoop.hdfs.security.token.delegation.DelegationTokenIdentifier;
import org.apache.hadoop.hdfs.server.common.Storage.StorageDirectory;
import org.apache.hadoop.hdfs.server.common.Util;
import org.apache.hadoop.hdfs.server.namenode.NNStorage.NameNodeDirType;
@@ -195,20 +194,21 @@ public class OfflineEditsViewerHelper {
Path pathSymlink = new Path("/file_symlink");
fc.createSymlink(pathConcatTarget, pathSymlink, false);
// OP_GET_DELEGATION_TOKEN 18
- final Token<DelegationTokenIdentifier> token =
- dfs.getDelegationToken("JobTracker");
// OP_RENEW_DELEGATION_TOKEN 19
// OP_CANCEL_DELEGATION_TOKEN 20
// see TestDelegationToken.java
// fake the user to renew token for
+ final Token<?>[] tokens = dfs.addDelegationTokens("JobTracker", null);
UserGroupInformation longUgi = UserGroupInformation.createRemoteUser(
"JobTracker/foo.com@FOO.COM");
try {
longUgi.doAs(new PrivilegedExceptionAction<Object>() {
@Override
public Object run() throws IOException, InterruptedException {
- token.renew(config);
- token.cancel(config);
+ for (Token<?> token : tokens) {
+ token.renew(config);
+ token.cancel(config);
+ }
return null;
}
});
Modified: hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestDelegationTokensWithHA.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestDelegationTokensWithHA.java?rev=1374403&r1=1374402&r2=1374403&view=diff
==============================================================================
--- hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestDelegationTokensWithHA.java (original)
+++ hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestDelegationTokensWithHA.java Fri Aug 17 19:25:53 2012
@@ -111,7 +111,8 @@ public class TestDelegationTokensWithHA
@Test
public void testDelegationTokenDFSApi() throws Exception {
- Token<DelegationTokenIdentifier> token = dfs.getDelegationToken("JobTracker");
+ final Token<DelegationTokenIdentifier> token =
+ getDelegationToken(fs, "JobTracker");
DelegationTokenIdentifier identifier = new DelegationTokenIdentifier();
byte[] tokenId = token.getIdentifier();
identifier.readFields(new DataInputStream(
@@ -152,8 +153,8 @@ public class TestDelegationTokensWithHA
@SuppressWarnings("deprecation")
@Test
public void testDelegationTokenWithDoAs() throws Exception {
- final Token<DelegationTokenIdentifier> token =
- dfs.getDelegationToken("JobTracker");
+ final Token<DelegationTokenIdentifier> token =
+ getDelegationToken(fs, "JobTracker");
final UserGroupInformation longUgi = UserGroupInformation
.createRemoteUser("JobTracker/foo.com@FOO.COM");
final UserGroupInformation shortUgi = UserGroupInformation
@@ -191,8 +192,8 @@ public class TestDelegationTokensWithHA
@Test
public void testHAUtilClonesDelegationTokens() throws Exception {
- final Token<DelegationTokenIdentifier> token =
- dfs.getDelegationToken("test");
+ final Token<DelegationTokenIdentifier> token =
+ getDelegationToken(fs, "JobTracker");
UserGroupInformation ugi = UserGroupInformation.createRemoteUser("test");
@@ -253,8 +254,9 @@ public class TestDelegationTokensWithHA
URI hAUri = HATestUtil.getLogicalUri(cluster);
String haService = HAUtil.buildTokenServiceForLogicalUri(hAUri).toString();
assertEquals(haService, dfs.getCanonicalServiceName());
- Token<?> token = dfs.getDelegationToken(
- UserGroupInformation.getCurrentUser().getShortUserName());
+ final String renewer = UserGroupInformation.getCurrentUser().getShortUserName();
+ final Token<DelegationTokenIdentifier> token =
+ getDelegationToken(dfs, renewer);
assertEquals(haService, token.getService().toString());
// make sure the logical uri is handled correctly
token.renew(dfs.getConf());
@@ -276,6 +278,13 @@ public class TestDelegationTokensWithHA
token.cancel(conf);
}
+ @SuppressWarnings("unchecked")
+ private Token<DelegationTokenIdentifier> getDelegationToken(FileSystem fs,
+ String renewer) throws IOException {
+ final Token<?> tokens[] = fs.addDelegationTokens(renewer, null);
+ assertEquals(1, tokens.length);
+ return (Token<DelegationTokenIdentifier>) tokens[0];
+ }
enum TokenTestAction {
RENEW, CANCEL;
}
Modified: hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewer.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewer.java?rev=1374403&r1=1374402&r2=1374403&view=diff
==============================================================================
--- hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewer.java (original)
+++ hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewer.java Fri Aug 17 19:25:53 2012
@@ -122,8 +122,8 @@ public class TestOfflineImageViewer {
}
// Get delegation tokens so we log the delegation token op
- List<Token<?>> delegationTokens =
- hdfs.getDelegationTokens(TEST_RENEWER);
+ Token<?>[] delegationTokens =
+ hdfs.addDelegationTokens(TEST_RENEWER, null);
for (Token<?> t : delegationTokens) {
LOG.debug("got token " + t);
}
Modified: hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/tools/TestDelegationTokenFetcher.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/tools/TestDelegationTokenFetcher.java?rev=1374403&r1=1374402&r2=1374403&view=diff
==============================================================================
--- hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/tools/TestDelegationTokenFetcher.java (original)
+++ hadoop/common/branches/branch-2.1.0-alpha/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/tools/TestDelegationTokenFetcher.java Fri Aug 17 19:25:53 2012
@@ -41,6 +41,9 @@ import org.apache.hadoop.security.token.
import org.apache.hadoop.security.token.TokenRenewer;
import org.junit.Before;
import org.junit.Test;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+import static org.mockito.Matchers.*;
public class TestDelegationTokenFetcher {
private DistributedFileSystem dfs;
@@ -105,9 +108,17 @@ public class TestDelegationTokenFetcher
// Create a token for the fetcher to fetch, wire NN to return it when asked
// for this particular user.
- Token<DelegationTokenIdentifier> t =
+ final Token<DelegationTokenIdentifier> t =
new Token<DelegationTokenIdentifier>(ident, pw, KIND, service);
- when(dfs.getDelegationToken(eq((String) null))).thenReturn(t);
+ when(dfs.addDelegationTokens(eq((String) null), any(Credentials.class))).thenAnswer(
+ new Answer<Token<?>[]>() {
+ @Override
+ public Token<?>[] answer(InvocationOnMock invocation) {
+ Credentials creds = (Credentials)invocation.getArguments()[1];
+ creds.addToken(service, t);
+ return new Token<?>[]{t};
+ }
+ });
when(dfs.renewDelegationToken(eq(t))).thenReturn(1000L);
when(dfs.getUri()).thenReturn(uri);
FakeRenewer.reset();