Modified: hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/shell/TestPathData.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/shell/TestPathData.java?rev=1377092&r1=1377091&r2=1377092&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/shell/TestPathData.java
(original)
+++ hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/shell/TestPathData.java
Fri Aug 24 20:38:08 2012
@@ -26,23 +26,17 @@ import java.util.Arrays;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
-import org.junit.BeforeClass;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
public class TestPathData {
- protected static Configuration conf;
- protected static FileSystem fs;
- protected static String dirString;
- protected static Path testDir;
- protected static PathData item;
-
- protected static String[] d1Paths =
- new String[] { "d1/f1", "d1/f1.1", "d1/f2" };
- protected static String[] d2Paths =
- new String[] { "d2/f3" };
-
- @BeforeClass
- public static void initialize() throws Exception {
+ protected Configuration conf;
+ protected FileSystem fs;
+ protected Path testDir;
+
+ @Before
+ public void initialize() throws Exception {
conf = new Configuration();
fs = FileSystem.getLocal(conf);
testDir = new Path(
@@ -60,23 +54,28 @@ public class TestPathData {
fs.create(new Path("d2","f3"));
}
+ @After
+ public void cleanup() throws Exception {
+ fs.close();
+ }
+
@Test
public void testWithDirStringAndConf() throws Exception {
- dirString = "d1";
- item = new PathData(dirString, conf);
- checkPathData();
+ String dirString = "d1";
+ PathData item = new PathData(dirString, conf);
+ checkPathData(dirString, item);
// properly implementing symlink support in various commands will require
// trailing slashes to be retained
dirString = "d1/";
item = new PathData(dirString, conf);
- checkPathData();
+ checkPathData(dirString, item);
}
@Test
public void testUnqualifiedUriContents() throws Exception {
- dirString = "d1";
- item = new PathData(dirString, conf);
+ String dirString = "d1";
+ PathData item = new PathData(dirString, conf);
PathData[] items = item.getDirectoryContents();
assertEquals(
sortedString("d1/f1", "d1/f1.1", "d1/f2"),
@@ -86,8 +85,8 @@ public class TestPathData {
@Test
public void testQualifiedUriContents() throws Exception {
- dirString = fs.makeQualified(new Path("d1")).toString();
- item = new PathData(dirString, conf);
+ String dirString = fs.makeQualified(new Path("d1")).toString();
+ PathData item = new PathData(dirString, conf);
PathData[] items = item.getDirectoryContents();
assertEquals(
sortedString(dirString+"/f1", dirString+"/f1.1", dirString+"/f2"),
@@ -97,8 +96,8 @@ public class TestPathData {
@Test
public void testCwdContents() throws Exception {
- dirString = Path.CUR_DIR;
- item = new PathData(dirString, conf);
+ String dirString = Path.CUR_DIR;
+ PathData item = new PathData(dirString, conf);
PathData[] items = item.getDirectoryContents();
assertEquals(
sortedString("d1", "d2"),
@@ -106,17 +105,16 @@ public class TestPathData {
);
}
-
- @Test
- public void testToFile() throws Exception {
- item = new PathData(".", conf);
+ @Test
+ public void testToFile() throws Exception {
+ PathData item = new PathData(".", conf);
assertEquals(new File(testDir.toString()), item.toFile());
- item = new PathData("d1/f1", conf);
- assertEquals(new File(testDir+"/d1/f1"), item.toFile());
- item = new PathData(testDir+"/d1/f1", conf);
- assertEquals(new File(testDir+"/d1/f1"), item.toFile());
- }
-
+ item = new PathData("d1/f1", conf);
+ assertEquals(new File(testDir + "/d1/f1"), item.toFile());
+ item = new PathData(testDir + "/d1/f1", conf);
+ assertEquals(new File(testDir + "/d1/f1"), item.toFile());
+ }
+
@Test
public void testAbsoluteGlob() throws Exception {
PathData[] items = PathData.expandAsGlob(testDir+"/d1/f1*", conf);
@@ -147,18 +145,18 @@ public class TestPathData {
@Test
public void testWithStringAndConfForBuggyPath() throws Exception {
- dirString = "file:///tmp";
- testDir = new Path(dirString);
- item = new PathData(dirString, conf);
+ String dirString = "file:///tmp";
+ Path tmpDir = new Path(dirString);
+ PathData item = new PathData(dirString, conf);
// this may fail some day if Path is fixed to not crunch the uri
// if the authority is null, however we need to test that the PathData
// toString() returns the given string, while Path toString() does
// the crunching
- assertEquals("file:/tmp", testDir.toString());
- checkPathData();
+ assertEquals("file:/tmp", tmpDir.toString());
+ checkPathData(dirString, item);
}
- public void checkPathData() throws Exception {
+ public void checkPathData(String dirString, PathData item) throws Exception {
assertEquals("checking fs", fs, item.fs);
assertEquals("checking string", dirString, item.toString());
assertEquals("checking path",
Modified: hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemDelegationTokenSupport.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemDelegationTokenSupport.java?rev=1377092&r1=1377091&r2=1377092&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemDelegationTokenSupport.java
(original)
+++ hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemDelegationTokenSupport.java
Fri Aug 24 20:38:08 2012
@@ -22,10 +22,18 @@ import static org.junit.Assert.*;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
-
+import java.util.Arrays;
+import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FsConstants;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.fs.RawLocalFileSystem;
+import org.apache.hadoop.io.Text;
+import org.apache.hadoop.security.Credentials;
+import org.apache.hadoop.security.token.Token;
+import org.apache.hadoop.security.token.TokenIdentifier;
+import org.junit.BeforeClass;
import org.junit.Test;
/**
@@ -38,6 +46,29 @@ import org.junit.Test;
public class TestViewFileSystemDelegationTokenSupport {
private static final String MOUNT_TABLE_NAME = "vfs-cluster";
+ static Configuration conf;
+ static FileSystem viewFs;
+ static FakeFileSystem fs1;
+ static FakeFileSystem fs2;
+
+ @BeforeClass
+ public static void setup() throws Exception {
+ conf = ViewFileSystemTestSetup.createConfig();
+ fs1 = setupFileSystem(new URI("fs1:///"), FakeFileSystem.class);
+ fs2 = setupFileSystem(new URI("fs2:///"), FakeFileSystem.class);
+ viewFs = FileSystem.get(FsConstants.VIEWFS_URI, conf);
+ }
+
+ static FakeFileSystem setupFileSystem(URI uri, Class<? extends FileSystem> clazz)
+ throws Exception {
+ String scheme = uri.getScheme();
+ conf.set("fs."+scheme+".impl", clazz.getName());
+ FakeFileSystem fs = (FakeFileSystem)FileSystem.get(uri, conf);
+ // mount each fs twice, will later ensure 1 token/fs
+ ConfigUtil.addLink(conf, "/mounts/"+scheme+"-one", fs.getUri());
+ ConfigUtil.addLink(conf, "/mounts/"+scheme+"-two", fs.getUri());
+ return fs;
+ }
/**
* Regression test for HADOOP-8408.
@@ -69,4 +100,92 @@ public class TestViewFileSystemDelegatio
assertNull(serviceName);
}
+ @Test
+ public void testGetChildFileSystems() throws Exception {
+ assertNull(fs1.getChildFileSystems());
+ assertNull(fs2.getChildFileSystems());
+ List<FileSystem> children = Arrays.asList(viewFs.getChildFileSystems());
+ assertEquals(2, children.size());
+ assertTrue(children.contains(fs1));
+ assertTrue(children.contains(fs2));
+ }
+
+ @Test
+ public void testAddDelegationTokens() throws Exception {
+ Credentials creds = new Credentials();
+ Token<?> fs1Tokens[] = addTokensWithCreds(fs1, creds);
+ assertEquals(1, fs1Tokens.length);
+ assertEquals(1, creds.numberOfTokens());
+ Token<?> fs2Tokens[] = addTokensWithCreds(fs2, creds);
+ assertEquals(1, fs2Tokens.length);
+ assertEquals(2, creds.numberOfTokens());
+
+ Credentials savedCreds = creds;
+ creds = new Credentials();
+
+ // should get the same set of tokens as explicitly fetched above
+ Token<?> viewFsTokens[] = viewFs.addDelegationTokens("me", creds);
+ assertEquals(2, viewFsTokens.length);
+ assertTrue(creds.getAllTokens().containsAll(savedCreds.getAllTokens()));
+ assertEquals(savedCreds.numberOfTokens(), creds.numberOfTokens());
+ // should get none, already have all tokens
+ viewFsTokens = viewFs.addDelegationTokens("me", creds);
+ assertEquals(0, viewFsTokens.length);
+ assertTrue(creds.getAllTokens().containsAll(savedCreds.getAllTokens()));
+ assertEquals(savedCreds.numberOfTokens(), 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;
+ }
+
+ static class FakeFileSystem extends RawLocalFileSystem {
+ URI uri;
+
+ public void initialize(URI name, Configuration conf) throws IOException {
+ this.uri = name;
+ }
+
+ @Override
+ public Path getInitialWorkingDirectory() {
+ return new Path("/"); // ctor calls getUri before the uri is inited...
+ }
+
+ public URI getUri() {
+ return uri;
+ }
+
+ @Override
+ public String getCanonicalServiceName() {
+ return String.valueOf(this.getUri()+"/"+this.hashCode());
+ }
+
+ @Override
+ public Token<?> getDelegationToken(String renewer) throws IOException {
+ Token<?> token = new Token<TokenIdentifier>();
+ token.setService(new Text(getCanonicalServiceName()));
+ return token;
+ }
+
+ @Override
+ public void close() {}
+ }
}
Modified: hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/ViewFileSystemBaseTest.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/ViewFileSystemBaseTest.java?rev=1377092&r1=1377091&r2=1377092&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/ViewFileSystemBaseTest.java
(original)
+++ hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/ViewFileSystemBaseTest.java
Fri Aug 24 20:38:08 2012
@@ -19,6 +19,7 @@ package org.apache.hadoop.fs.viewfs;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.util.Arrays;
import java.util.List;
@@ -137,9 +138,9 @@ public class ViewFileSystemBaseTest {
*/
@Test
public void testGetDelegationTokens() throws IOException {
- List<Token<?>> delTokens =
- fsView.getDelegationTokens("sanjay");
- Assert.assertEquals(getExpectedDelegationTokenCount(), delTokens.size());
+ Token<?>[] delTokens =
+ fsView.addDelegationTokens("sanjay", new Credentials());
+ Assert.assertEquals(getExpectedDelegationTokenCount(), delTokens.length);
}
int getExpectedDelegationTokenCount() {
@@ -150,29 +151,20 @@ public class ViewFileSystemBaseTest {
public void testGetDelegationTokensWithCredentials() throws IOException {
Credentials credentials = new Credentials();
List<Token<?>> delTokens =
- fsView.getDelegationTokens("sanjay", credentials);
+ Arrays.asList(fsView.addDelegationTokens("sanjay", credentials));
int expectedTokenCount = getExpectedDelegationTokenCountWithCredentials();
Assert.assertEquals(expectedTokenCount, delTokens.size());
+ Credentials newCredentials = new Credentials();
for (int i = 0; i < expectedTokenCount / 2; i++) {
Token<?> token = delTokens.get(i);
- credentials.addToken(token.getService(), token);
+ newCredentials.addToken(token.getService(), token);
}
List<Token<?>> delTokens2 =
- fsView.getDelegationTokens("sanjay", credentials);
- Assert.assertEquals(expectedTokenCount, delTokens2.size());
-
- for (int i = 0; i < delTokens2.size(); i++) {
- for (int j = 0; j < delTokens.size(); j++) {
- if (delTokens.get(j) == delTokens2.get(i)) {
- delTokens.remove(j);
- break;
- }
- }
- }
- Assert.assertEquals((expectedTokenCount + 1) / 2, delTokens.size());
+ Arrays.asList(fsView.addDelegationTokens("sanjay", newCredentials));
+ Assert.assertEquals((expectedTokenCount + 1) / 2, delTokens2.size());
}
int getExpectedDelegationTokenCountWithCredentials() {
Modified: hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestIOUtils.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestIOUtils.java?rev=1377092&r1=1377091&r2=1377092&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestIOUtils.java
(original)
+++ hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestIOUtils.java
Fri Aug 24 20:38:08 2012
@@ -21,6 +21,8 @@ package org.apache.hadoop.io;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
+import java.io.ByteArrayInputStream;
+import java.io.EOFException;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -175,4 +177,41 @@ public class TestIOUtils {
"Error while reading compressed data", ioe);
}
}
+
+ @Test
+ public void testSkipFully() throws IOException {
+ byte inArray[] = new byte[] {0, 1, 2, 3, 4};
+ ByteArrayInputStream in = new ByteArrayInputStream(inArray);
+ try {
+ in.mark(inArray.length);
+ IOUtils.skipFully(in, 2);
+ IOUtils.skipFully(in, 2);
+ try {
+ IOUtils.skipFully(in, 2);
+ fail("expected to get a PrematureEOFException");
+ } catch (EOFException e) {
+ assertEquals(e.getMessage(), "Premature EOF from inputStream " +
+ "after skipping 1 byte(s).");
+ }
+ in.reset();
+ try {
+ IOUtils.skipFully(in, 20);
+ fail("expected to get a PrematureEOFException");
+ } catch (EOFException e) {
+ assertEquals(e.getMessage(), "Premature EOF from inputStream " +
+ "after skipping 5 byte(s).");
+ }
+ in.reset();
+ IOUtils.skipFully(in, 5);
+ try {
+ IOUtils.skipFully(in, 10);
+ fail("expected to get a PrematureEOFException");
+ } catch (EOFException e) {
+ assertEquals(e.getMessage(), "Premature EOF from inputStream " +
+ "after skipping 0 byte(s).");
+ }
+ } finally {
+ in.close();
+ }
+ }
}
Modified: hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestWritableName.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestWritableName.java?rev=1377092&r1=1377091&r2=1377092&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestWritableName.java
(original)
+++ hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestWritableName.java
Fri Aug 24 20:38:08 2012
@@ -83,6 +83,7 @@ public class TestWritableName extends Te
Configuration conf = new Configuration();
String altName = testName + ".alt";
+ WritableName.setName(SimpleWritable.class, testName);
WritableName.addName(SimpleWritable.class, altName);
Class<?> test = WritableName.getClass(altName, conf);
Modified: hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestServer.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestServer.java?rev=1377092&r1=1377091&r2=1377092&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestServer.java
(original)
+++ hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestServer.java
Fri Aug 24 20:38:08 2012
@@ -20,6 +20,7 @@ package org.apache.hadoop.ipc;
import static org.junit.Assert.*;
+import java.io.IOException;
import java.net.BindException;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
@@ -115,4 +116,16 @@ public class TestServer {
socket.close();
}
}
+
+ @Test
+ public void testExceptionsHandler() throws IOException {
+ Server.ExceptionsHandler handler = new Server.ExceptionsHandler();
+ handler.addTerseExceptions(IOException.class);
+ handler.addTerseExceptions(RpcServerException.class, IpcException.class);
+
+ assertTrue(handler.isTerse(IOException.class));
+ assertTrue(handler.isTerse(RpcServerException.class));
+ assertTrue(handler.isTerse(IpcException.class));
+ assertFalse(handler.isTerse(RpcClientException.class));
+ }
}
Modified: hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestCredentials.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestCredentials.java?rev=1377092&r1=1377091&r2=1377092&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestCredentials.java
(original)
+++ hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestCredentials.java
Fri Aug 24 20:38:08 2012
@@ -213,5 +213,22 @@ public class TestCredentials {
// new token & secret should be added
assertEquals(token[2], creds.getToken(service[2]));
assertEquals(secret[2], new Text(creds.getSecretKey(secret[2])));
- }
+ }
+
+ @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]);
+ }
+ creds.addTokensToUGI(ugi);
+
+ creds = ugi.getCredentials();
+ for (int i=0; i < service.length; i++) {
+ assertSame(token[i], creds.getToken(service[i]));
+ }
+ assertEquals(service.length, creds.numberOfTokens());
+ }
}
\ No newline at end of file
Modified: hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestSecurityUtil.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestSecurityUtil.java?rev=1377092&r1=1377091&r2=1377092&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestSecurityUtil.java
(original)
+++ hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestSecurityUtil.java
Fri Aug 24 20:38:08 2012
@@ -137,6 +137,7 @@ public class TestSecurityUtil {
@Test
public void testBuildDTServiceName() {
+ SecurityUtil.setTokenServiceUseIp(true);
assertEquals("127.0.0.1:123",
SecurityUtil.buildDTServiceName(URI.create("test://LocalHost"), 123)
);
@@ -153,6 +154,7 @@ public class TestSecurityUtil {
@Test
public void testBuildTokenServiceSockAddr() {
+ SecurityUtil.setTokenServiceUseIp(true);
assertEquals("127.0.0.1:123",
SecurityUtil.buildTokenService(new InetSocketAddress("LocalHost", 123)).toString()
);
Modified: hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestUserGroupInformation.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestUserGroupInformation.java?rev=1377092&r1=1377091&r2=1377092&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestUserGroupInformation.java
(original)
+++ hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestUserGroupInformation.java
Fri Aug 24 20:38:08 2012
@@ -19,8 +19,7 @@ package org.apache.hadoop.security;
import static org.junit.Assert.*;
import org.junit.*;
-import org.mockito.Mockito;
-import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.*;
import java.io.BufferedReader;
import java.io.IOException;
@@ -35,6 +34,7 @@ import javax.security.auth.login.AppConf
import javax.security.auth.login.LoginContext;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.io.Text;
import org.apache.hadoop.metrics2.MetricsRecordBuilder;
import org.apache.hadoop.security.UserGroupInformation.AuthenticationMethod;
import org.apache.hadoop.security.token.Token;
@@ -194,8 +194,6 @@ public class TestUserGroupInformation {
public void testEqualsWithRealUser() throws Exception {
UserGroupInformation realUgi1 = UserGroupInformation.createUserForTesting(
"RealUser", GROUP_NAMES);
- UserGroupInformation realUgi2 = UserGroupInformation.createUserForTesting(
- "RealUser", GROUP_NAMES);
UserGroupInformation proxyUgi1 = UserGroupInformation.createProxyUser(
USER_NAME, realUgi1);
UserGroupInformation proxyUgi2 =
@@ -213,7 +211,82 @@ public class TestUserGroupInformation {
assertArrayEquals(new String[]{GROUP1_NAME, GROUP2_NAME, GROUP3_NAME},
uugi.getGroupNames());
}
+
+ @SuppressWarnings("unchecked") // from Mockito mocks
+ @Test
+ public <T extends TokenIdentifier> void testAddToken() throws Exception {
+ UserGroupInformation ugi =
+ UserGroupInformation.createRemoteUser("someone");
+
+ Token<T> t1 = mock(Token.class);
+ Token<T> t2 = mock(Token.class);
+ Token<T> t3 = mock(Token.class);
+
+ // add token to ugi
+ ugi.addToken(t1);
+ checkTokens(ugi, t1);
+
+ // replace token t1 with t2 - with same key (null)
+ ugi.addToken(t2);
+ checkTokens(ugi, t2);
+
+ // change t1 service and add token
+ when(t1.getService()).thenReturn(new Text("t1"));
+ ugi.addToken(t1);
+ checkTokens(ugi, t1, t2);
+ // overwrite t1 token with t3 - same key (!null)
+ when(t3.getService()).thenReturn(new Text("t1"));
+ ugi.addToken(t3);
+ checkTokens(ugi, t2, t3);
+
+ // just try to re-add with new name
+ when(t1.getService()).thenReturn(new Text("t1.1"));
+ ugi.addToken(t1);
+ checkTokens(ugi, t1, t2, t3);
+
+ // just try to re-add with new name again
+ ugi.addToken(t1);
+ checkTokens(ugi, t1, t2, t3);
+ }
+
+ 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());
+ }
+
+ @SuppressWarnings("unchecked") // from Mockito mocks
+ @Test
+ public <T extends TokenIdentifier> void testAddNamedToken() throws Exception {
+ UserGroupInformation ugi =
+ UserGroupInformation.createRemoteUser("someone");
+
+ Token<T> t1 = mock(Token.class);
+ Text service1 = new Text("t1");
+ Text service2 = new Text("t2");
+ when(t1.getService()).thenReturn(service1);
+
+ // add token
+ ugi.addToken(service1, t1);
+ assertSame(t1, ugi.getCredentials().getToken(service1));
+
+ // add token with another name
+ ugi.addToken(service2, t1);
+ assertSame(t1, ugi.getCredentials().getToken(service1));
+ assertSame(t1, ugi.getCredentials().getToken(service2));
+ }
+
@SuppressWarnings("unchecked") // from Mockito mocks
@Test
public <T extends TokenIdentifier> void testUGITokens() throws Exception {
@@ -221,7 +294,9 @@ public class TestUserGroupInformation {
UserGroupInformation.createUserForTesting("TheDoctor",
new String [] { "TheTARDIS"});
Token<T> t1 = mock(Token.class);
+ when(t1.getService()).thenReturn(new Text("t1"));
Token<T> t2 = mock(Token.class);
+ when(t2.getService()).thenReturn(new Text("t2"));
ugi.addToken(t1);
ugi.addToken(t2);
Modified: hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestDataChecksum.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestDataChecksum.java?rev=1377092&r1=1377091&r2=1377092&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestDataChecksum.java
(original)
+++ hadoop/common/branches/HDFS-3077/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestDataChecksum.java
Fri Aug 24 20:38:08 2012
@@ -35,13 +35,13 @@ public class TestDataChecksum {
private static final int DATA_TRAILER_IN_BUFFER = 3;
private static final int BYTES_PER_CHUNK = 512;
- private static final int CHECKSUM_TYPES[] = new int[] {
- DataChecksum.CHECKSUM_CRC32, DataChecksum.CHECKSUM_CRC32C
+ private static final DataChecksum.Type CHECKSUM_TYPES[] = {
+ DataChecksum.Type.CRC32, DataChecksum.Type.CRC32C
};
@Test
public void testBulkOps() throws Exception {
- for (int type : CHECKSUM_TYPES) {
+ for (DataChecksum.Type type : CHECKSUM_TYPES) {
System.err.println(
"---- beginning tests with checksum type " + type + "----");
DataChecksum checksum = DataChecksum.newDataChecksum(
@@ -118,21 +118,20 @@ public class TestDataChecksum {
@Test
public void testEquality() {
assertEquals(
- DataChecksum.newDataChecksum(DataChecksum.CHECKSUM_CRC32, 512),
- DataChecksum.newDataChecksum(DataChecksum.CHECKSUM_CRC32, 512));
+ DataChecksum.newDataChecksum(DataChecksum.Type.CRC32, 512),
+ DataChecksum.newDataChecksum(DataChecksum.Type.CRC32, 512));
assertFalse(
- DataChecksum.newDataChecksum(DataChecksum.CHECKSUM_CRC32, 512).equals(
- DataChecksum.newDataChecksum(DataChecksum.CHECKSUM_CRC32, 1024)));
+ DataChecksum.newDataChecksum(DataChecksum.Type.CRC32, 512).equals(
+ DataChecksum.newDataChecksum(DataChecksum.Type.CRC32, 1024)));
assertFalse(
- DataChecksum.newDataChecksum(DataChecksum.CHECKSUM_CRC32, 512).equals(
- DataChecksum.newDataChecksum(DataChecksum.CHECKSUM_CRC32C, 512)));
+ DataChecksum.newDataChecksum(DataChecksum.Type.CRC32, 512).equals(
+ DataChecksum.newDataChecksum(DataChecksum.Type.CRC32C, 512)));
}
@Test
public void testToString() {
assertEquals("DataChecksum(type=CRC32, chunkSize=512)",
- DataChecksum.newDataChecksum(DataChecksum.CHECKSUM_CRC32, 512)
- .toString());
+ DataChecksum.newDataChecksum(DataChecksum.Type.CRC32, 512).toString());
}
private static void corruptBufferOffset(ByteBuffer buf, int offset) {
|