LOG.debug("Loaded {} tokens", cred.numberOfTokens()); loginUser.addCredentials(cred);
if (LOG.isDebugEnabled()) { LOG.debug("Token not set, looking for delegation token. Creds:{}," + " size:{}", creds.getAllTokens(), creds.numberOfTokens());
/** * Create UserGroupInformation for specified user and credentials. * * @param user User. * @param credentialsBytes Credentials byte array. */ public static UserGroupInformation createUGI(String user, byte[] credentialsBytes) throws IOException { Credentials credentials = new Credentials(); HadoopUtils.deserialize(credentials, credentialsBytes); UserGroupInformation ugi = UserGroupInformation.createRemoteUser(user); ugi.addCredentials(credentials); if (credentials.numberOfTokens() > 0) ugi.setAuthenticationMethod(UserGroupInformation.AuthenticationMethod.TOKEN); return ugi; } }
@Test(timeout = 120000) public void testDelegationToken() throws Exception { final String renewer = "JobTracker"; UserGroupInformation.createRemoteUser(renewer); Credentials creds = new Credentials(); Token<?> tokens[] = fs.addDelegationTokens(renewer, creds); DistributedFileSystem.LOG.debug("Delegation tokens: " + Arrays.asList(tokens)); Assert.assertEquals(2, tokens.length); Assert.assertEquals(2, creds.numberOfTokens()); // If the dt exists, will not get again tokens = fs.addDelegationTokens(renewer, creds); Assert.assertEquals(0, tokens.length); Assert.assertEquals(2, creds.numberOfTokens()); } }
Token<?>[] addTokensWithCreds(FileSystem fs, Credentials creds) throws Exception { Credentials savedCreds; savedCreds = new Credentials(creds); Token<?> tokens[] = fs.addDelegationTokens("me", creds); // test that we got the token we wanted, and that creds were modified assertEquals(1, tokens.length); assertEquals(fs.getCanonicalServiceName(), tokens[0].getService().toString()); assertTrue(creds.getAllTokens().contains(tokens[0])); assertTrue(creds.getAllTokens().containsAll(savedCreds.getAllTokens())); assertEquals(savedCreds.numberOfTokens()+1, creds.numberOfTokens()); // shouldn't get any new tokens since already in creds savedCreds = new Credentials(creds); Token<?> tokenRefetch[] = fs.addDelegationTokens("me", creds); assertEquals(0, tokenRefetch.length); assertTrue(creds.getAllTokens().containsAll(savedCreds.getAllTokens())); assertEquals(savedCreds.numberOfTokens(), creds.numberOfTokens()); return tokens; }
private void checkTokens(UserGroupInformation ugi, Token<?> ... tokens) { // check the ugi's token collection Collection<Token<?>> ugiTokens = ugi.getTokens(); for (Token<?> t : tokens) { assertTrue(ugiTokens.contains(t)); } assertEquals(tokens.length, ugiTokens.size()); // check the ugi's credentials Credentials ugiCreds = ugi.getCredentials(); for (Token<?> t : tokens) { assertSame(t, ugiCreds.getToken(t.getService())); } assertEquals(tokens.length, ugiCreds.numberOfTokens()); }
private void checkTokens(UserGroupInformation ugi, Token<?> ... tokens) { // check the ugi's token collection Collection<Token<?>> ugiTokens = ugi.getTokens(); for (Token<?> t : tokens) { assertTrue(ugiTokens.contains(t)); } assertEquals(tokens.length, ugiTokens.size()); // check the ugi's credentials Credentials ugiCreds = ugi.getCredentials(); for (Token<?> t : tokens) { assertSame(t, ugiCreds.getToken(t.getService())); } assertEquals(tokens.length, ugiCreds.numberOfTokens()); }
@Test public void testFsWithTokenExists() throws Exception { Credentials credentials = new Credentials(); Text service = new Text("singleTokenFs"); MockFileSystem fs = createFileSystemForServiceName(service); Token<?> token = mock(Token.class); credentials.addToken(service, token); fs.addDelegationTokens(renewer, credentials); verifyTokenFetch(fs, false); assertEquals(1, credentials.numberOfTokens()); assertSame(token, credentials.getToken(service)); }
@Test public void testFsWithTokenExists() throws Exception { Credentials credentials = new Credentials(); Text service = new Text("singleTokenFs"); MockFileSystem fs = createFileSystemForServiceName(service); Token<?> token = mock(Token.class); credentials.addToken(service, token); fs.addDelegationTokens(renewer, credentials); verifyTokenFetch(fs, false); assertEquals(1, credentials.numberOfTokens()); assertSame(token, credentials.getToken(service)); }
@Test public void testFsWithToken() throws Exception { Text service = new Text("singleTokenFs"); MockFileSystem fs = createFileSystemForServiceName(service); Credentials credentials = new Credentials(); fs.addDelegationTokens(renewer, credentials); verifyTokenFetch(fs, true); assertEquals(1, credentials.numberOfTokens()); assertNotNull(credentials.getToken(service)); }
@Test public void testFsWithToken() throws Exception { Text service = new Text("singleTokenFs"); MockFileSystem fs = createFileSystemForServiceName(service); Credentials credentials = new Credentials(); fs.addDelegationTokens(renewer, credentials); verifyTokenFetch(fs, true); assertEquals(1, credentials.numberOfTokens()); assertNotNull(credentials.getToken(service)); }
@Test public void testFsWithNoToken() throws Exception { MockFileSystem fs = createFileSystemForServiceName(null); Credentials credentials = new Credentials(); fs.addDelegationTokens(renewer, credentials); verifyTokenFetch(fs, false); assertEquals(0, credentials.numberOfTokens()); }
@Test public void testFsWithNoToken() throws Exception { MockFileSystem fs = createFileSystemForServiceName(null); Credentials credentials = new Credentials(); fs.addDelegationTokens(renewer, credentials); verifyTokenFetch(fs, false); assertEquals(0, credentials.numberOfTokens()); }
@Test public void testAddDelegationTokensDFSApi() throws Exception { UserGroupInformation ugi = UserGroupInformation.createRemoteUser("JobTracker"); DistributedFileSystem dfs = cluster.getFileSystem(); 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()); }
@Test public void testFsWithDuplicateChildrenTokenExists() throws Exception { Credentials credentials = new Credentials(); Text service = new Text("singleTokenFs1"); Token<?> token = mock(Token.class); credentials.addToken(service, token); MockFileSystem fs = createFileSystemForServiceName(service); MockFileSystem multiFs = createFileSystemForServiceName(null, fs, new FilterFileSystem(fs)); multiFs.addDelegationTokens(renewer, credentials); verifyTokenFetch(multiFs, false); verifyTokenFetch(fs, false); assertEquals(1, credentials.numberOfTokens()); assertSame(token, credentials.getToken(service)); }
@Test public void testFsWithDuplicateChildrenTokenExists() throws Exception { Credentials credentials = new Credentials(); Text service = new Text("singleTokenFs1"); Token<?> token = mock(Token.class); credentials.addToken(service, token); MockFileSystem fs = createFileSystemForServiceName(service); MockFileSystem multiFs = createFileSystemForServiceName(null, fs, new FilterFileSystem(fs)); multiFs.addDelegationTokens(renewer, credentials); verifyTokenFetch(multiFs, false); verifyTokenFetch(fs, false); assertEquals(1, credentials.numberOfTokens()); assertSame(token, credentials.getToken(service)); }
@Test public void testFsWithDuplicateChildren() throws Exception { Credentials credentials = new Credentials(); Text service = new Text("singleTokenFs1"); MockFileSystem fs = createFileSystemForServiceName(service); MockFileSystem multiFs = createFileSystemForServiceName(null, fs, new FilterFileSystem(fs)); multiFs.addDelegationTokens(renewer, credentials); verifyTokenFetch(multiFs, false); verifyTokenFetch(fs, true); assertEquals(1, credentials.numberOfTokens()); assertNotNull(credentials.getToken(service)); }
@Test public void testFsWithDuplicateChildren() throws Exception { Credentials credentials = new Credentials(); Text service = new Text("singleTokenFs1"); MockFileSystem fs = createFileSystemForServiceName(service); MockFileSystem multiFs = createFileSystemForServiceName(null, fs, new FilterFileSystem(fs)); multiFs.addDelegationTokens(renewer, credentials); verifyTokenFetch(multiFs, false); verifyTokenFetch(fs, true); assertEquals(1, credentials.numberOfTokens()); assertNotNull(credentials.getToken(service)); }
@Test public void testAddTokensToUGI() { UserGroupInformation ugi = UserGroupInformation.createRemoteUser("someone"); Credentials creds = new Credentials(); for (int i=0; i < service.length; i++) { creds.addToken(service[i], token[i]); } ugi.addCredentials(creds); creds = ugi.getCredentials(); for (int i=0; i < service.length; i++) { assertSame(token[i], creds.getToken(service[i])); } assertEquals(service.length, creds.numberOfTokens()); } }
@Test public void testAddTokensToUGI() { UserGroupInformation ugi = UserGroupInformation.createRemoteUser("someone"); Credentials creds = new Credentials(); for (int i=0; i < service.length; i++) { creds.addToken(service[i], token[i]); } ugi.addCredentials(creds); creds = ugi.getCredentials(); for (int i=0; i < service.length; i++) { assertSame(token[i], creds.getToken(service[i])); } assertEquals(service.length, creds.numberOfTokens()); } }