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 sz...@apache.org on 2012/10/19 04:27:38 UTC
svn commit: r1399950 [17/17] - in
/hadoop/common/branches/HDFS-2802/hadoop-common-project: hadoop-annotations/
hadoop-annotations/src/main/java/org/apache/hadoop/classification/tools/
hadoop-auth-examples/ hadoop-auth/ hadoop-auth/src/main/java/org/apa...
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics/TestMetricsServlet.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics/TestMetricsServlet.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics/TestMetricsServlet.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics/TestMetricsServlet.java Fri Oct 19 02:25:55 2012
@@ -43,6 +43,7 @@ public class TestMetricsServlet extends
* Initializes, for testing, two NoEmitMetricsContext's, and adds one value
* to the first of them.
*/
+ @Override
public void setUp() throws IOException {
nc1 = new NoEmitMetricsContext();
nc1.init("test1", ContextFactory.getFactory());
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/lib/TestMetricsAnnotations.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/lib/TestMetricsAnnotations.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/lib/TestMetricsAnnotations.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/lib/TestMetricsAnnotations.java Fri Oct 19 02:25:55 2012
@@ -21,8 +21,6 @@ package org.apache.hadoop.metrics2.lib;
import org.junit.Test;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
-import static org.apache.hadoop.test.MockitoMaker.*;
-
import org.apache.hadoop.metrics2.MetricsCollector;
import org.apache.hadoop.metrics2.MetricsException;
import org.apache.hadoop.metrics2.MetricsRecordBuilder;
@@ -145,6 +143,7 @@ public class TestMetricsAnnotations {
@Metric int getG0() { return 0; }
+ @Override
public void getMetrics(MetricsCollector collector, boolean all) {
collector.addRecord("foo")
.setContext("foocontext")
@@ -183,6 +182,7 @@ public class TestMetricsAnnotations {
@Metric MutableCounterInt c1;
+ @Override
public void getMetrics(MetricsCollector collector, boolean all) {
collector.addRecord("foo");
}
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/lib/TestMetricsRegistry.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/lib/TestMetricsRegistry.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/lib/TestMetricsRegistry.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/lib/TestMetricsRegistry.java Fri Oct 19 02:25:55 2012
@@ -51,6 +51,7 @@ public class TestMetricsRegistry {
assertTrue("s1 found", r.get("s1") instanceof MutableStat);
expectMetricsException("Metric name c1 already exists", new Runnable() {
+ @Override
public void run() { r.newCounter("c1", "test dup", 0); }
});
}
@@ -70,10 +71,12 @@ public class TestMetricsRegistry {
r.newGauge("g1", "test add", 1);
expectMetricsException("Unsupported add", new Runnable() {
+ @Override
public void run() { r.add("c1", 42); }
});
expectMetricsException("Unsupported add", new Runnable() {
+ @Override
public void run() { r.add("g1", 42); }
});
}
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/lib/TestMutableMetrics.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/lib/TestMutableMetrics.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/lib/TestMutableMetrics.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/lib/TestMutableMetrics.java Fri Oct 19 02:25:55 2012
@@ -18,13 +18,24 @@
package org.apache.hadoop.metrics2.lib;
-import org.junit.Test;
-import static org.mockito.Mockito.*;
-import static org.mockito.AdditionalMatchers.*;
+import static org.apache.hadoop.metrics2.lib.Interns.info;
+import static org.apache.hadoop.test.MetricsAsserts.assertCounter;
+import static org.apache.hadoop.test.MetricsAsserts.assertGauge;
+import static org.apache.hadoop.test.MetricsAsserts.mockMetricsRecordBuilder;
+import static org.mockito.AdditionalMatchers.eq;
+import static org.mockito.AdditionalMatchers.geq;
+import static org.mockito.AdditionalMatchers.leq;
+import static org.mockito.Matchers.anyLong;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import java.util.Map;
+import java.util.Map.Entry;
import org.apache.hadoop.metrics2.MetricsRecordBuilder;
-import static org.apache.hadoop.metrics2.lib.Interns.*;
-import static org.apache.hadoop.test.MetricsAsserts.*;
+import org.apache.hadoop.metrics2.util.Quantile;
+import org.junit.Test;
/**
* Test metrics record builder interface and mutable metrics
@@ -103,4 +114,123 @@ public class TestMutableMetrics {
assertCounter("BarNumOps", 0L, rb);
assertGauge("BarAvgTime", 0.0, rb);
}
+
+ /**
+ * Ensure that quantile estimates from {@link MutableQuantiles} are within
+ * specified error bounds.
+ */
+ @Test(timeout = 30000)
+ public void testMutableQuantilesError() throws Exception {
+ MetricsRecordBuilder mb = mockMetricsRecordBuilder();
+ MetricsRegistry registry = new MetricsRegistry("test");
+ // Use a 5s rollover period
+ MutableQuantiles quantiles = registry.newQuantiles("foo", "stat", "Ops",
+ "Latency", 5);
+ // Push some values in and wait for it to publish
+ long start = System.nanoTime() / 1000000;
+ for (long i = 1; i <= 1000; i++) {
+ quantiles.add(i);
+ quantiles.add(1001 - i);
+ }
+ long end = System.nanoTime() / 1000000;
+
+ Thread.sleep(6000 - (end - start));
+
+ registry.snapshot(mb, false);
+
+ // Print out the snapshot
+ Map<Quantile, Long> previousSnapshot = quantiles.previousSnapshot;
+ for (Entry<Quantile, Long> item : previousSnapshot.entrySet()) {
+ System.out.println(String.format("Quantile %.2f has value %d",
+ item.getKey().quantile, item.getValue()));
+ }
+
+ // Verify the results are within our requirements
+ verify(mb).addGauge(
+ info("FooNumOps", "Number of ops for stat with 5s interval"),
+ (long) 2000);
+ Quantile[] quants = MutableQuantiles.quantiles;
+ String name = "Foo%dthPercentileLatency";
+ String desc = "%d percentile latency with 5 second interval for stat";
+ for (Quantile q : quants) {
+ int percentile = (int) (100 * q.quantile);
+ int error = (int) (1000 * q.error);
+ String n = String.format(name, percentile);
+ String d = String.format(desc, percentile);
+ long expected = (long) (q.quantile * 1000);
+ verify(mb).addGauge(eq(info(n, d)), leq(expected + error));
+ verify(mb).addGauge(eq(info(n, d)), geq(expected - error));
+ }
+ }
+
+ /**
+ * Test that {@link MutableQuantiles} rolls the window over at the specified
+ * interval.
+ */
+ @Test(timeout = 30000)
+ public void testMutableQuantilesRollover() throws Exception {
+ MetricsRecordBuilder mb = mockMetricsRecordBuilder();
+ MetricsRegistry registry = new MetricsRegistry("test");
+ // Use a 5s rollover period
+ MutableQuantiles quantiles = registry.newQuantiles("foo", "stat", "Ops",
+ "Latency", 5);
+
+ Quantile[] quants = MutableQuantiles.quantiles;
+ String name = "Foo%dthPercentileLatency";
+ String desc = "%d percentile latency with 5 second interval for stat";
+
+ // Push values for three intervals
+ long start = System.nanoTime() / 1000000;
+ for (int i = 1; i <= 3; i++) {
+ // Insert the values
+ for (long j = 1; j <= 1000; j++) {
+ quantiles.add(i);
+ }
+ // Sleep until 1s after the next 5s interval, to let the metrics
+ // roll over
+ long sleep = (start + (5000 * i) + 1000) - (System.nanoTime() / 1000000);
+ Thread.sleep(sleep);
+ // Verify that the window reset, check it has the values we pushed in
+ registry.snapshot(mb, false);
+ for (Quantile q : quants) {
+ int percentile = (int) (100 * q.quantile);
+ String n = String.format(name, percentile);
+ String d = String.format(desc, percentile);
+ verify(mb).addGauge(info(n, d), (long) i);
+ }
+ }
+
+ // Verify the metrics were added the right number of times
+ verify(mb, times(3)).addGauge(
+ info("FooNumOps", "Number of ops for stat with 5s interval"),
+ (long) 1000);
+ for (Quantile q : quants) {
+ int percentile = (int) (100 * q.quantile);
+ String n = String.format(name, percentile);
+ String d = String.format(desc, percentile);
+ verify(mb, times(3)).addGauge(eq(info(n, d)), anyLong());
+ }
+ }
+
+ /**
+ * Test that {@link MutableQuantiles} rolls over correctly even if no items
+ * have been added to the window
+ */
+ @Test(timeout = 30000)
+ public void testMutableQuantilesEmptyRollover() throws Exception {
+ MetricsRecordBuilder mb = mockMetricsRecordBuilder();
+ MetricsRegistry registry = new MetricsRegistry("test");
+ // Use a 5s rollover period
+ MutableQuantiles quantiles = registry.newQuantiles("foo", "stat", "Ops",
+ "Latency", 5);
+
+ // Check it initially
+ quantiles.snapshot(mb, true);
+ verify(mb).addGauge(
+ info("FooNumOps", "Number of ops for stat with 5s interval"), (long) 0);
+ Thread.sleep(6000);
+ quantiles.snapshot(mb, false);
+ verify(mb, times(2)).addGauge(
+ info("FooNumOps", "Number of ops for stat with 5s interval"), (long) 0);
+ }
}
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/StaticMapping.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/StaticMapping.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/StaticMapping.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/StaticMapping.java Fri Oct 19 02:25:55 2012
@@ -21,10 +21,8 @@ import org.apache.hadoop.conf.Configurat
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Set;
/**
* Implements the {@link DNSToSwitchMapping} via static mappings. Used
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestDNS.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestDNS.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestDNS.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestDNS.java Fri Oct 19 02:25:55 2012
@@ -25,6 +25,7 @@ import javax.naming.NameNotFoundExceptio
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.util.Time;
import org.junit.Test;
import static org.junit.Assert.*;
@@ -57,9 +58,9 @@ public class TestDNS {
String hostname1 = DNS.getDefaultHost(DEFAULT);
assertNotNull(hostname1);
String hostname2 = DNS.getDefaultHost(DEFAULT);
- long t1 = System.currentTimeMillis();
+ long t1 = Time.now();
String hostname3 = DNS.getDefaultHost(DEFAULT);
- long t2 = System.currentTimeMillis();
+ long t2 = Time.now();
assertEquals(hostname3, hostname2);
assertEquals(hostname2, hostname1);
long interval = t2 - t1;
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestSocketIOWithTimeout.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestSocketIOWithTimeout.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestSocketIOWithTimeout.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestSocketIOWithTimeout.java Fri Oct 19 02:25:55 2012
@@ -31,6 +31,7 @@ import org.apache.hadoop.test.GenericTes
import org.apache.hadoop.test.MultithreadedTestUtil;
import org.apache.hadoop.test.MultithreadedTestUtil.TestContext;
import org.apache.hadoop.test.MultithreadedTestUtil.TestingThread;
+import org.apache.hadoop.util.Time;
import org.junit.Test;
import static org.junit.Assert.*;
@@ -59,7 +60,7 @@ public class TestSocketIOWithTimeout {
byte buf[] = new byte[4192];
while (true) {
- long start = System.currentTimeMillis();
+ long start = Time.now();
try {
if (in != null) {
in.read(buf);
@@ -67,7 +68,7 @@ public class TestSocketIOWithTimeout {
out.write(buf);
}
} catch (SocketTimeoutException e) {
- long diff = System.currentTimeMillis() - start;
+ long diff = Time.now() - start;
LOG.info("Got SocketTimeoutException as expected after " +
diff + " millis : " + e.getMessage());
assertTrue(Math.abs(expectedTimeout - diff) <=
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/record/FromCpp.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/record/FromCpp.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/record/FromCpp.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/record/FromCpp.java Fri Oct 19 02:25:55 2012
@@ -33,9 +33,11 @@ public class FromCpp extends TestCase {
super(testName);
}
+ @Override
protected void setUp() throws Exception {
}
+ @Override
protected void tearDown() throws Exception {
}
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/record/RecordBench.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/record/RecordBench.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/record/RecordBench.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/record/RecordBench.java Fri Oct 19 02:25:55 2012
@@ -23,8 +23,6 @@ import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
-import java.lang.reflect.Array;
-import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Random;
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/record/TestRecordIO.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/record/TestRecordIO.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/record/TestRecordIO.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/record/TestRecordIO.java Fri Oct 19 02:25:55 2012
@@ -34,9 +34,11 @@ public class TestRecordIO extends TestCa
super(testName);
}
+ @Override
protected void setUp() throws Exception {
}
+ @Override
protected void tearDown() throws Exception {
}
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/record/TestRecordVersioning.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/record/TestRecordVersioning.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/record/TestRecordVersioning.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/record/TestRecordVersioning.java Fri Oct 19 02:25:55 2012
@@ -35,9 +35,11 @@ public class TestRecordVersioning extend
super(testName);
}
+ @Override
protected void setUp() throws Exception {
}
+ @Override
protected void tearDown() throws Exception {
}
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/record/ToCpp.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/record/ToCpp.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/record/ToCpp.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/record/ToCpp.java Fri Oct 19 02:25:55 2012
@@ -33,9 +33,11 @@ public class ToCpp extends TestCase {
super(testName);
}
+ @Override
protected void setUp() throws Exception {
}
+ @Override
protected void tearDown() throws Exception {
}
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestAuthenticationFilter.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestAuthenticationFilter.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestAuthenticationFilter.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestAuthenticationFilter.java Fri Oct 19 02:25:55 2012
@@ -22,7 +22,6 @@ import org.apache.hadoop.http.HttpServer
import org.apache.hadoop.security.authentication.server.AuthenticationFilter;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.http.FilterContainer;
-import org.apache.hadoop.security.authentication.server.KerberosAuthenticationHandler;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
@@ -55,6 +54,7 @@ public class TestAuthenticationFilter ex
FilterContainer container = Mockito.mock(FilterContainer.class);
Mockito.doAnswer(
new Answer() {
+ @Override
public Object answer(InvocationOnMock invocationOnMock)
throws Throwable {
Object[] args = invocationOnMock.getArguments();
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestCredentials.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestCredentials.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestCredentials.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestCredentials.java Fri Oct 19 02:25:55 2012
@@ -29,13 +29,10 @@ import java.io.IOException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
-import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.Collection;
-import static org.mockito.Mockito.mock;
-
import javax.crypto.KeyGenerator;
import org.apache.hadoop.io.Text;
@@ -213,5 +210,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]);
+ }
+ 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());
+ }
}
\ No newline at end of file
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestDoAsEffectiveUser.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestDoAsEffectiveUser.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestDoAsEffectiveUser.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestDoAsEffectiveUser.java Fri Oct 19 02:25:55 2012
@@ -39,7 +39,6 @@ import org.apache.hadoop.security.author
import org.apache.hadoop.security.token.Token;
import org.apache.hadoop.security.token.TokenInfo;
import org.junit.Test;
-import org.apache.hadoop.ipc.TestSaslRPC;
import org.apache.hadoop.ipc.TestSaslRPC.TestTokenSecretManager;
import org.apache.hadoop.ipc.TestSaslRPC.TestTokenIdentifier;
import org.apache.hadoop.ipc.TestSaslRPC.TestTokenSelector;
@@ -113,6 +112,7 @@ public class TestDoAsEffectiveUser {
PROXY_USER_NAME, realUserUgi);
UserGroupInformation curUGI = proxyUserUgi
.doAs(new PrivilegedExceptionAction<UserGroupInformation>() {
+ @Override
public UserGroupInformation run() throws IOException {
return UserGroupInformation.getCurrentUser();
}
@@ -131,10 +131,12 @@ public class TestDoAsEffectiveUser {
public class TestImpl implements TestProtocol {
+ @Override
public String aMethod() throws IOException {
return UserGroupInformation.getCurrentUser().toString();
}
+ @Override
public long getProtocolVersion(String protocol, long clientVersion)
throws IOException {
return TestProtocol.versionID;
@@ -153,8 +155,9 @@ public class TestDoAsEffectiveUser {
conf.setStrings(ProxyUsers
.getProxySuperuserGroupConfKey(REAL_USER_SHORT_NAME), "group1");
configureSuperUserIPAddresses(conf, REAL_USER_SHORT_NAME);
- Server server = RPC.getServer(TestProtocol.class, new TestImpl(), ADDRESS,
- 0, 5, true, conf, null);
+ Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class)
+ .setInstance(new TestImpl()).setBindAddress(ADDRESS).setPort(0)
+ .setNumHandlers(5).setVerbose(true).build();
refreshConf(conf);
try {
@@ -168,6 +171,7 @@ public class TestDoAsEffectiveUser {
PROXY_USER_NAME, realUserUgi, GROUP_NAMES);
String retVal = proxyUserUgi
.doAs(new PrivilegedExceptionAction<String>() {
+ @Override
public String run() throws IOException {
proxy = RPC.getProxy(TestProtocol.class,
TestProtocol.versionID, addr, conf);
@@ -194,8 +198,9 @@ public class TestDoAsEffectiveUser {
configureSuperUserIPAddresses(conf, REAL_USER_SHORT_NAME);
conf.setStrings(ProxyUsers.getProxySuperuserGroupConfKey(REAL_USER_SHORT_NAME),
"group1");
- Server server = RPC.getServer(TestProtocol.class, new TestImpl(), ADDRESS,
- 0, 2, false, conf, null);
+ Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class)
+ .setInstance(new TestImpl()).setBindAddress(ADDRESS).setPort(0)
+ .setNumHandlers(2).setVerbose(false).build();
refreshConf(conf);
try {
@@ -210,6 +215,7 @@ public class TestDoAsEffectiveUser {
.createProxyUserForTesting(PROXY_USER_NAME, realUserUgi, GROUP_NAMES);
String retVal = proxyUserUgi
.doAs(new PrivilegedExceptionAction<String>() {
+ @Override
public String run() throws IOException {
proxy = RPC.getProxy(TestProtocol.class,
TestProtocol.versionID, addr, conf);
@@ -240,8 +246,9 @@ public class TestDoAsEffectiveUser {
"20.20.20.20"); //Authorized IP address
conf.setStrings(ProxyUsers.getProxySuperuserGroupConfKey(REAL_USER_SHORT_NAME),
"group1");
- Server server = RPC.getServer(TestProtocol.class, new TestImpl(), ADDRESS,
- 0, 2, false, conf, null);
+ Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class)
+ .setInstance(new TestImpl()).setBindAddress(ADDRESS).setPort(0)
+ .setNumHandlers(2).setVerbose(false).build();
refreshConf(conf);
@@ -257,6 +264,7 @@ public class TestDoAsEffectiveUser {
.createProxyUserForTesting(PROXY_USER_NAME, realUserUgi, GROUP_NAMES);
String retVal = proxyUserUgi
.doAs(new PrivilegedExceptionAction<String>() {
+ @Override
public String run() throws IOException {
proxy = RPC.getProxy(TestProtocol.class,
TestProtocol.versionID, addr, conf);
@@ -281,8 +289,9 @@ public class TestDoAsEffectiveUser {
final Configuration conf = new Configuration();
conf.setStrings(ProxyUsers
.getProxySuperuserGroupConfKey(REAL_USER_SHORT_NAME), "group1");
- Server server = RPC.getServer(TestProtocol.class, new TestImpl(), ADDRESS,
- 0, 2, false, conf, null);
+ Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class)
+ .setInstance(new TestImpl()).setBindAddress(ADDRESS).setPort(0)
+ .setNumHandlers(2).setVerbose(false).build();
try {
server.start();
@@ -296,6 +305,7 @@ public class TestDoAsEffectiveUser {
.createProxyUserForTesting(PROXY_USER_NAME, realUserUgi, GROUP_NAMES);
String retVal = proxyUserUgi
.doAs(new PrivilegedExceptionAction<String>() {
+ @Override
public String run() throws IOException {
proxy = RPC.getProxy(TestProtocol.class,
TestProtocol.versionID, addr, conf);
@@ -319,8 +329,9 @@ public class TestDoAsEffectiveUser {
public void testRealUserGroupNotSpecified() throws IOException {
final Configuration conf = new Configuration();
configureSuperUserIPAddresses(conf, REAL_USER_SHORT_NAME);
- Server server = RPC.getServer(TestProtocol.class, new TestImpl(), ADDRESS,
- 0, 2, false, conf, null);
+ Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class)
+ .setInstance(new TestImpl()).setBindAddress(ADDRESS).setPort(0)
+ .setNumHandlers(2).setVerbose(false).build();
try {
server.start();
@@ -334,6 +345,7 @@ public class TestDoAsEffectiveUser {
.createProxyUserForTesting(PROXY_USER_NAME, realUserUgi, GROUP_NAMES);
String retVal = proxyUserUgi
.doAs(new PrivilegedExceptionAction<String>() {
+ @Override
public String run() throws IOException {
proxy = (TestProtocol) RPC.getProxy(TestProtocol.class,
TestProtocol.versionID, addr, conf);
@@ -359,9 +371,9 @@ public class TestDoAsEffectiveUser {
configureSuperUserIPAddresses(conf, REAL_USER_SHORT_NAME);
conf.setStrings(ProxyUsers.getProxySuperuserGroupConfKey(REAL_USER_SHORT_NAME),
"group3");
- Server server = RPC.getServer(TestProtocol.class, new TestImpl(), ADDRESS,
- 0, 2, false, conf, null);
-
+ Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class)
+ .setInstance(new TestImpl()).setBindAddress(ADDRESS).setPort(0)
+ .setNumHandlers(2).setVerbose(false).build();
try {
server.start();
@@ -375,6 +387,7 @@ public class TestDoAsEffectiveUser {
.createProxyUserForTesting(PROXY_USER_NAME, realUserUgi, GROUP_NAMES);
String retVal = proxyUserUgi
.doAs(new PrivilegedExceptionAction<String>() {
+ @Override
public String run() throws IOException {
proxy = RPC.getProxy(TestProtocol.class,
TestProtocol.versionID, addr, conf);
@@ -406,8 +419,9 @@ public class TestDoAsEffectiveUser {
conf
.set(CommonConfigurationKeys.HADOOP_SECURITY_AUTHENTICATION, "kerberos");
UserGroupInformation.setConfiguration(conf);
- final Server server = RPC.getServer(TestProtocol.class, new TestImpl(),
- ADDRESS, 0, 5, true, conf, sm);
+ final Server server = new RPC.Builder(conf).setProtocol(TestProtocol.class)
+ .setInstance(new TestImpl()).setBindAddress(ADDRESS).setPort(0)
+ .setNumHandlers(5).setVerbose(true).setSecretManager(sm).build();
server.start();
@@ -460,8 +474,10 @@ public class TestDoAsEffectiveUser {
newConf.set(CommonConfigurationKeys.HADOOP_SECURITY_AUTHENTICATION,
"kerberos");
UserGroupInformation.setConfiguration(newConf);
- final Server server = RPC.getServer(TestProtocol.class, new TestImpl(),
- ADDRESS, 0, 5, true, newConf, sm);
+ final Server server = new RPC.Builder(newConf)
+ .setProtocol(TestProtocol.class).setInstance(new TestImpl())
+ .setBindAddress(ADDRESS).setPort(0).setNumHandlers(5).setVerbose(true)
+ .setSecretManager(sm).build();
server.start();
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestGroupsCaching.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestGroupsCaching.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestGroupsCaching.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestGroupsCaching.java Fri Oct 19 02:25:55 2012
@@ -54,6 +54,7 @@ public class TestGroupsCaching {
private static Set<String> allGroups = new HashSet<String>();
private static Set<String> blackList = new HashSet<String>();
+ @Override
public List<String> getGroups(String user) throws IOException {
LOG.info("Getting groups for " + user);
if (blackList.contains(user)) {
@@ -62,6 +63,7 @@ public class TestGroupsCaching {
return new LinkedList<String>(allGroups);
}
+ @Override
public void cacheGroupsRefresh() throws IOException {
LOG.info("Cache is being refreshed.");
clearBlackList();
@@ -73,6 +75,7 @@ public class TestGroupsCaching {
blackList.clear();
}
+ @Override
public void cacheGroupsAdd(List<String> groups) throws IOException {
LOG.info("Adding " + groups + " to groups.");
allGroups.addAll(groups);
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestJNIGroupsMapping.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestJNIGroupsMapping.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestJNIGroupsMapping.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestJNIGroupsMapping.java Fri Oct 19 02:25:55 2012
@@ -21,16 +21,11 @@ import static org.junit.Assert.*;
import java.util.Arrays;
import java.util.List;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.apache.hadoop.fs.CommonConfigurationKeys;
import org.apache.hadoop.security.GroupMappingServiceProvider;
import org.apache.hadoop.security.JniBasedUnixGroupsMapping;
import org.apache.hadoop.security.ShellBasedUnixGroupsMapping;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.util.NativeCodeLoader;
-import org.apache.hadoop.util.ReflectionUtils;
import org.junit.Before;
import org.junit.Test;
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestSecurityUtil.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestSecurityUtil.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestSecurityUtil.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestSecurityUtil.java Fri Oct 19 02:25:55 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-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestUserGroupInformation.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestUserGroupInformation.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestUserGroupInformation.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestUserGroupInformation.java Fri Oct 19 02:25:55 2012
@@ -19,12 +19,12 @@ 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;
import java.io.InputStreamReader;
+import java.lang.reflect.Method;
import java.security.PrivilegedExceptionAction;
import java.util.Collection;
import java.util.LinkedHashSet;
@@ -35,6 +35,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;
@@ -49,6 +50,7 @@ public class TestUserGroupInformation {
final private static String GROUP3_NAME = "group3";
final private static String[] GROUP_NAMES =
new String[]{GROUP1_NAME, GROUP2_NAME, GROUP3_NAME};
+ private static Configuration conf;
/**
* UGI should not use the default security conf, else it will collide
@@ -68,7 +70,7 @@ public class TestUserGroupInformation {
/** configure ugi */
@BeforeClass
public static void setup() {
- Configuration conf = new Configuration();
+ conf = new Configuration();
conf.set(CommonConfigurationKeysPublic.HADOOP_SECURITY_AUTH_TO_LOCAL,
"RULE:[2:$1@$0](.*@HADOOP.APACHE.ORG)s/@.*//" +
"RULE:[1:$1@$0](.*@HADOOP.APACHE.ORG)s/@.*//"
@@ -92,6 +94,7 @@ public class TestUserGroupInformation {
UserGroupInformation.createUserForTesting(USER_NAME, GROUP_NAMES);
UserGroupInformation curUGI =
userGroupInfo.doAs(new PrivilegedExceptionAction<UserGroupInformation>(){
+ @Override
public UserGroupInformation run() throws IOException {
return UserGroupInformation.getCurrentUser();
}});
@@ -194,8 +197,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 +214,146 @@ 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);
+ }
+
+ @SuppressWarnings("unchecked") // from Mockito mocks
+ @Test
+ public <T extends TokenIdentifier> void testGetCreds() throws Exception {
+ UserGroupInformation ugi =
+ UserGroupInformation.createRemoteUser("someone");
+
+ Text service = new Text("service");
+ Token<T> t1 = mock(Token.class);
+ when(t1.getService()).thenReturn(service);
+ Token<T> t2 = mock(Token.class);
+ when(t2.getService()).thenReturn(new Text("service2"));
+ Token<T> t3 = mock(Token.class);
+ when(t3.getService()).thenReturn(service);
+
+ // add token to ugi
+ ugi.addToken(t1);
+ ugi.addToken(t2);
+ checkTokens(ugi, t1, t2);
+
+ Credentials creds = ugi.getCredentials();
+ creds.addToken(t3.getService(), t3);
+ assertSame(t3, creds.getToken(service));
+ // check that ugi wasn't modified
+ checkTokens(ugi, t1, t2);
+ }
+
+ @SuppressWarnings("unchecked") // from Mockito mocks
+ @Test
+ public <T extends TokenIdentifier> void testAddCreds() throws Exception {
+ UserGroupInformation ugi =
+ UserGroupInformation.createRemoteUser("someone");
+
+ Text service = new Text("service");
+ Token<T> t1 = mock(Token.class);
+ when(t1.getService()).thenReturn(service);
+ Token<T> t2 = mock(Token.class);
+ when(t2.getService()).thenReturn(new Text("service2"));
+ byte[] secret = new byte[]{};
+ Text secretKey = new Text("sshhh");
+
+ // fill credentials
+ Credentials creds = new Credentials();
+ creds.addToken(t1.getService(), t1);
+ creds.addToken(t2.getService(), t2);
+ creds.addSecretKey(secretKey, secret);
+
+ // add creds to ugi, and check ugi
+ ugi.addCredentials(creds);
+ checkTokens(ugi, t1, t2);
+ assertSame(secret, ugi.getCredentials().getSecretKey(secretKey));
+ }
+
+ @SuppressWarnings("unchecked") // from Mockito mocks
+ @Test
+ public <T extends TokenIdentifier> void testGetCredsNotSame()
+ throws Exception {
+ UserGroupInformation ugi =
+ UserGroupInformation.createRemoteUser("someone");
+ Credentials creds = ugi.getCredentials();
+ // should always get a new copy
+ assertNotSame(creds, ugi.getCredentials());
+ }
+
+
+ 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,15 +361,26 @@ 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"));
+
+ Credentials creds = new Credentials();
+ byte[] secretKey = new byte[]{};
+ Text secretName = new Text("shhh");
+ creds.addSecretKey(secretName, secretKey);
ugi.addToken(t1);
ugi.addToken(t2);
+ ugi.addCredentials(creds);
Collection<Token<? extends TokenIdentifier>> z = ugi.getTokens();
assertTrue(z.contains(t1));
assertTrue(z.contains(t2));
assertEquals(2, z.size());
+ Credentials ugiCreds = ugi.getCredentials();
+ assertSame(secretKey, ugiCreds.getSecretKey(secretName));
+ assertEquals(1, ugiCreds.numberOfSecretKeys());
try {
z.remove(t1);
@@ -241,6 +392,7 @@ public class TestUserGroupInformation {
// ensure that the tokens are passed through doAs
Collection<Token<? extends TokenIdentifier>> otherSet =
ugi.doAs(new PrivilegedExceptionAction<Collection<Token<?>>>(){
+ @Override
public Collection<Token<?>> run() throws IOException {
return UserGroupInformation.getCurrentUser().getTokens();
}
@@ -267,6 +419,7 @@ public class TestUserGroupInformation {
// ensure that the token identifiers are passed through doAs
Collection<TokenIdentifier> otherSet = ugi
.doAs(new PrivilegedExceptionAction<Collection<TokenIdentifier>>() {
+ @Override
public Collection<TokenIdentifier> run() throws IOException {
return UserGroupInformation.getCurrentUser().getTokenIdentifiers();
}
@@ -283,6 +436,7 @@ public class TestUserGroupInformation {
ugi.setAuthenticationMethod(am);
Assert.assertEquals(am, ugi.getAuthenticationMethod());
ugi.doAs(new PrivilegedExceptionAction<Object>() {
+ @Override
public Object run() throws IOException {
Assert.assertEquals(am, UserGroupInformation.getCurrentUser()
.getAuthenticationMethod());
@@ -304,6 +458,7 @@ public class TestUserGroupInformation {
Assert.assertEquals(am, UserGroupInformation
.getRealAuthenticationMethod(proxyUgi));
proxyUgi.doAs(new PrivilegedExceptionAction<Object>() {
+ @Override
public Object run() throws IOException {
Assert.assertEquals(AuthenticationMethod.PROXY, UserGroupInformation
.getCurrentUser().getAuthenticationMethod());
@@ -376,6 +531,7 @@ public class TestUserGroupInformation {
public void testUGIUnderNonHadoopContext() throws Exception {
Subject nonHadoopSubject = new Subject();
Subject.doAs(nonHadoopSubject, new PrivilegedExceptionAction<Void>() {
+ @Override
public Void run() throws IOException {
UserGroupInformation ugi = UserGroupInformation.getCurrentUser();
assertNotNull(ugi);
@@ -383,4 +539,39 @@ public class TestUserGroupInformation {
}
});
}
+
+ /** Test hasSufficientTimeElapsed method */
+ @Test
+ public void testHasSufficientTimeElapsed() throws Exception {
+ // Make hasSufficientTimeElapsed public
+ Method method = UserGroupInformation.class
+ .getDeclaredMethod("hasSufficientTimeElapsed", long.class);
+ method.setAccessible(true);
+
+ UserGroupInformation ugi = UserGroupInformation.getCurrentUser();
+ User user = ugi.getSubject().getPrincipals(User.class).iterator().next();
+ long now = System.currentTimeMillis();
+
+ // Using default relogin time (1 minute)
+ user.setLastLogin(now - 2 * 60 * 1000); // 2 minutes before "now"
+ assertTrue((Boolean)method.invoke(ugi, now));
+ user.setLastLogin(now - 30 * 1000); // 30 seconds before "now"
+ assertFalse((Boolean)method.invoke(ugi, now));
+
+ // Using relogin time of 10 minutes
+ Configuration conf2 = new Configuration(conf);
+ conf2.setLong(
+ CommonConfigurationKeysPublic.HADOOP_KERBEROS_MIN_SECONDS_BEFORE_RELOGIN,
+ 10 * 60);
+ UserGroupInformation.setConfiguration(conf2);
+ user.setLastLogin(now - 15 * 60 * 1000); // 15 minutes before "now"
+ assertTrue((Boolean)method.invoke(ugi, now));
+ user.setLastLogin(now - 6 * 60 * 1000); // 6 minutes before "now"
+ assertFalse((Boolean)method.invoke(ugi, now));
+ // Restore original conf to UGI
+ UserGroupInformation.setConfiguration(conf);
+
+ // Restore hasSufficientTimElapsed back to private
+ method.setAccessible(false);
+ }
}
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/authorize/TestAccessControlList.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/authorize/TestAccessControlList.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/authorize/TestAccessControlList.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/authorize/TestAccessControlList.java Fri Oct 19 02:25:55 2012
@@ -22,13 +22,10 @@ import java.util.Set;
import java.util.List;
import org.junit.Test;
-import org.junit.Before;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assume.assumeTrue;
-
import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.classification.InterfaceStability;
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/TestToken.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/TestToken.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/TestToken.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/TestToken.java Fri Oct 19 02:25:55 2012
@@ -18,8 +18,6 @@
package org.apache.hadoop.security.token;
-import static junit.framework.Assert.assertEquals;
-
import java.io.*;
import java.util.Arrays;
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/delegation/TestDelegationToken.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/delegation/TestDelegationToken.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/delegation/TestDelegationToken.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/delegation/TestDelegationToken.java Fri Oct 19 02:25:55 2012
@@ -19,7 +19,6 @@
package org.apache.hadoop.security.token.delegation;
import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.DataInput;
import java.io.DataInputStream;
import java.io.DataOutput;
@@ -40,12 +39,14 @@ import org.apache.hadoop.io.DataOutputBu
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.security.AccessControlException;
+import org.apache.hadoop.security.UserGroupInformation;
+import org.apache.hadoop.security.UserGroupInformation.AuthenticationMethod;
import org.apache.hadoop.security.token.SecretManager;
import org.apache.hadoop.security.token.Token;
import org.apache.hadoop.security.token.SecretManager.InvalidToken;
import org.apache.hadoop.security.token.delegation.AbstractDelegationTokenSecretManager.DelegationTokenInformation;
import org.apache.hadoop.util.Daemon;
-import org.apache.hadoop.util.StringUtils;
+import org.apache.hadoop.util.Time;
import org.junit.Test;
import static org.junit.Assert.*;
@@ -70,9 +71,11 @@ public class TestDelegationToken {
return KIND;
}
+ @Override
public void write(DataOutput out) throws IOException {
super.write(out);
}
+ @Override
public void readFields(DataInput in) throws IOException {
super.readFields(in);
}
@@ -171,6 +174,52 @@ public class TestDelegationToken {
}
@Test
+ public void testGetUserNullOwner() {
+ TestDelegationTokenIdentifier ident =
+ new TestDelegationTokenIdentifier(null, null, null);
+ UserGroupInformation ugi = ident.getUser();
+ assertNull(ugi);
+ }
+
+ @Test
+ public void testGetUserWithOwner() {
+ TestDelegationTokenIdentifier ident =
+ new TestDelegationTokenIdentifier(new Text("owner"), null, null);
+ UserGroupInformation ugi = ident.getUser();
+ assertNull(ugi.getRealUser());
+ assertEquals("owner", ugi.getUserName());
+ assertEquals(AuthenticationMethod.TOKEN, ugi.getAuthenticationMethod());
+ }
+
+ @Test
+ public void testGetUserWithOwnerEqualsReal() {
+ Text owner = new Text("owner");
+ TestDelegationTokenIdentifier ident =
+ new TestDelegationTokenIdentifier(owner, null, owner);
+ UserGroupInformation ugi = ident.getUser();
+ assertNull(ugi.getRealUser());
+ assertEquals("owner", ugi.getUserName());
+ assertEquals(AuthenticationMethod.TOKEN, ugi.getAuthenticationMethod());
+ }
+
+ @Test
+ public void testGetUserWithOwnerAndReal() {
+ Text owner = new Text("owner");
+ Text realUser = new Text("realUser");
+ TestDelegationTokenIdentifier ident =
+ new TestDelegationTokenIdentifier(owner, null, realUser);
+ UserGroupInformation ugi = ident.getUser();
+ assertNotNull(ugi.getRealUser());
+ assertNull(ugi.getRealUser().getRealUser());
+ assertEquals("owner", ugi.getUserName());
+ assertEquals("realUser", ugi.getRealUser().getUserName());
+ assertEquals(AuthenticationMethod.PROXY,
+ ugi.getAuthenticationMethod());
+ assertEquals(AuthenticationMethod.TOKEN,
+ ugi.getRealUser().getAuthenticationMethod());
+ }
+
+ @Test
public void testDelegationTokenSecretManager() throws Exception {
final TestDelegationTokenSecretManager dtSecretManager =
new TestDelegationTokenSecretManager(24*60*60*1000,
@@ -182,13 +231,14 @@ public class TestDelegationToken {
dtSecretManager, "SomeUser", "JobTracker");
// Fake renewer should not be able to renew
shouldThrow(new PrivilegedExceptionAction<Object>() {
+ @Override
public Object run() throws Exception {
dtSecretManager.renewToken(token, "FakeRenewer");
return null;
}
}, AccessControlException.class);
long time = dtSecretManager.renewToken(token, "JobTracker");
- assertTrue("renew time is in future", time > System.currentTimeMillis());
+ assertTrue("renew time is in future", time > Time.now());
TestDelegationTokenIdentifier identifier =
new TestDelegationTokenIdentifier();
byte[] tokenId = token.getIdentifier();
@@ -210,6 +260,7 @@ public class TestDelegationToken {
Thread.sleep(2000);
shouldThrow(new PrivilegedExceptionAction<Object>() {
+ @Override
public Object run() throws Exception {
dtSecretManager.renewToken(token, "JobTracker");
return null;
@@ -231,6 +282,7 @@ public class TestDelegationToken {
generateDelegationToken(dtSecretManager, "SomeUser", "JobTracker");
//Fake renewer should not be able to renew
shouldThrow(new PrivilegedExceptionAction<Object>() {
+ @Override
public Object run() throws Exception {
dtSecretManager.renewToken(token, "FakeCanceller");
return null;
@@ -238,6 +290,7 @@ public class TestDelegationToken {
}, AccessControlException.class);
dtSecretManager.cancelToken(token, "JobTracker");
shouldThrow(new PrivilegedExceptionAction<Object>() {
+ @Override
public Object run() throws Exception {
dtSecretManager.renewToken(token, "JobTracker");
return null;
@@ -330,6 +383,7 @@ public class TestDelegationToken {
final int numTokensPerThread = 100;
class tokenIssuerThread implements Runnable {
+ @Override
public void run() {
for(int i =0;i <numTokensPerThread; i++) {
generateDelegationToken(dtSecretManager, "auser", "arenewer");
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java Fri Oct 19 02:25:55 2012
@@ -25,12 +25,14 @@ import java.util.Random;
import java.util.Set;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeoutException;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.regex.Pattern;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.impl.Log4JLogger;
import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.util.StringUtils;
+import org.apache.hadoop.util.Time;
import org.apache.log4j.Layout;
import org.apache.log4j.Logger;
import org.apache.log4j.WriterAppender;
@@ -47,6 +49,8 @@ import com.google.common.collect.Sets;
*/
public abstract class GenericTestUtils {
+ private static final AtomicInteger sequence = new AtomicInteger();
+
/**
* Extracts the name of the method where the invocation has happened
* @return String name of the invoking method
@@ -54,6 +58,14 @@ public abstract class GenericTestUtils {
public static String getMethodName() {
return Thread.currentThread().getStackTrace()[2].getMethodName();
}
+
+ /**
+ * Generates a process-wide unique sequence number.
+ * @return an unique sequence number
+ */
+ public static int uniqueSequenceId() {
+ return sequence.incrementAndGet();
+ }
/**
* Assert that a given file exists.
@@ -94,7 +106,7 @@ public abstract class GenericTestUtils {
int checkEveryMillis, int waitForMillis)
throws TimeoutException, InterruptedException
{
- long st = System.currentTimeMillis();
+ long st = Time.now();
do {
boolean result = check.get();
if (result) {
@@ -102,8 +114,11 @@ public abstract class GenericTestUtils {
}
Thread.sleep(checkEveryMillis);
- } while (System.currentTimeMillis() - st < waitForMillis);
- throw new TimeoutException("Timed out waiting for condition");
+ } while (Time.now() - st < waitForMillis);
+
+ throw new TimeoutException("Timed out waiting for condition. " +
+ "Thread diagnostics:\n" +
+ TimedOutTestsListener.buildThreadDiagnosticString());
}
public static class LogCapturer {
@@ -170,6 +185,7 @@ public abstract class GenericTestUtils {
waitLatch.countDown();
}
+ @Override
public Object answer(InvocationOnMock invocation) throws Throwable {
LOG.info("DelayAnswer firing fireLatch");
fireLatch.countDown();
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MetricsAsserts.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MetricsAsserts.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MetricsAsserts.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MetricsAsserts.java Fri Oct 19 02:25:55 2012
@@ -23,7 +23,9 @@ import static com.google.common.base.Pre
import org.hamcrest.Description;
import org.junit.Assert;
+import static org.mockito.AdditionalMatchers.geq;
import static org.mockito.Mockito.*;
+
import org.mockito.stubbing.Answer;
import org.mockito.internal.matchers.GreaterThan;
import org.mockito.invocation.InvocationOnMock;
@@ -39,6 +41,9 @@ import org.apache.hadoop.metrics2.Metric
import org.apache.hadoop.metrics2.MetricsRecordBuilder;
import org.apache.hadoop.metrics2.MetricsSystem;
import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem;
+import org.apache.hadoop.metrics2.lib.MutableQuantiles;
+import org.apache.hadoop.metrics2.util.Quantile;
+
import static org.apache.hadoop.metrics2.lib.Interns.*;
/**
@@ -328,4 +333,23 @@ public class MetricsAsserts {
MetricsSource source) {
assertGaugeGt(name, greater, getMetrics(source));
}
+
+ /**
+ * Asserts that the NumOps and quantiles for a metric have been changed at
+ * some point to a non-zero value.
+ *
+ * @param prefix of the metric
+ * @param rb MetricsRecordBuilder with the metric
+ */
+ public static void assertQuantileGauges(String prefix,
+ MetricsRecordBuilder rb) {
+ verify(rb).addGauge(eqName(info(prefix + "NumOps", "")), geq(0l));
+ for (Quantile q : MutableQuantiles.quantiles) {
+ String nameTemplate = prefix + "%dthPercentileLatency";
+ int percentile = (int) (100 * q.quantile);
+ verify(rb).addGauge(
+ eqName(info(String.format(nameTemplate, percentile), "")),
+ geq(0l));
+ }
+ }
}
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MultithreadedTestUtil.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MultithreadedTestUtil.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MultithreadedTestUtil.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MultithreadedTestUtil.java Fri Oct 19 02:25:55 2012
@@ -22,6 +22,7 @@ import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.util.Time;
/**
* A utility to easily test threaded/synchronized code.
@@ -109,10 +110,10 @@ public abstract class MultithreadedTestU
* have thrown up an error.
*/
public synchronized void waitFor(long millis) throws Exception {
- long endTime = System.currentTimeMillis() + millis;
+ long endTime = Time.now() + millis;
while (shouldRun() &&
finishedThreads.size() < testThreads.size()) {
- long left = endTime - System.currentTimeMillis();
+ long left = endTime - Time.now();
if (left <= 0) break;
checkException();
wait(left);
@@ -182,6 +183,7 @@ public abstract class MultithreadedTestU
this.ctx = ctx;
}
+ @Override
public void run() {
try {
doWork();
@@ -214,6 +216,7 @@ public abstract class MultithreadedTestU
* Repeats a given user action until the context is asked to stop
* or meets an error.
*/
+ @Override
public final void doWork() throws Exception {
while (ctx.shouldRun() && !stopped) {
doAnAction();
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/TestMultithreadedTestUtil.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/TestMultithreadedTestUtil.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/TestMultithreadedTestUtil.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/TestMultithreadedTestUtil.java Fri Oct 19 02:25:55 2012
@@ -26,6 +26,7 @@ import org.junit.Test;
import org.apache.hadoop.test.MultithreadedTestUtil.TestContext;
import org.apache.hadoop.test.MultithreadedTestUtil.TestingThread;
import org.apache.hadoop.test.MultithreadedTestUtil.RepeatingTestThread;
+import org.apache.hadoop.util.Time;
public class TestMultithreadedTestUtil {
@@ -47,9 +48,9 @@ public class TestMultithreadedTestUtil {
}
assertEquals(0, threadsRun.get());
ctx.startThreads();
- long st = System.currentTimeMillis();
+ long st = Time.now();
ctx.waitFor(30000);
- long et = System.currentTimeMillis();
+ long et = Time.now();
// All threads should have run
assertEquals(3, threadsRun.get());
@@ -69,7 +70,7 @@ public class TestMultithreadedTestUtil {
}
});
ctx.startThreads();
- long st = System.currentTimeMillis();
+ long st = Time.now();
try {
ctx.waitFor(30000);
fail("waitFor did not throw");
@@ -77,7 +78,7 @@ public class TestMultithreadedTestUtil {
// expected
assertEquals(FAIL_MSG, rte.getCause().getMessage());
}
- long et = System.currentTimeMillis();
+ long et = Time.now();
// Test shouldn't have waited the full 30 seconds, since
// the thread throws faster than that
assertTrue("Test took " + (et - st) + "ms",
@@ -94,7 +95,7 @@ public class TestMultithreadedTestUtil {
}
});
ctx.startThreads();
- long st = System.currentTimeMillis();
+ long st = Time.now();
try {
ctx.waitFor(30000);
fail("waitFor did not throw");
@@ -102,7 +103,7 @@ public class TestMultithreadedTestUtil {
// expected
assertEquals("my ioe", rte.getCause().getMessage());
}
- long et = System.currentTimeMillis();
+ long et = Time.now();
// Test shouldn't have waited the full 30 seconds, since
// the thread throws faster than that
assertTrue("Test took " + (et - st) + "ms",
@@ -121,10 +122,10 @@ public class TestMultithreadedTestUtil {
}
});
ctx.startThreads();
- long st = System.currentTimeMillis();
+ long st = Time.now();
ctx.waitFor(3000);
ctx.stop();
- long et = System.currentTimeMillis();
+ long et = Time.now();
long elapsed = et - st;
// Test should have waited just about 3 seconds
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/JarFinder.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/JarFinder.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/JarFinder.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/JarFinder.java Fri Oct 19 02:25:55 2012
@@ -21,7 +21,6 @@ import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.io.OutputStream;
import java.net.URL;
import java.net.URLDecoder;
import java.text.MessageFormat;
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestDataChecksum.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestDataChecksum.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestDataChecksum.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestDataChecksum.java Fri Oct 19 02:25:55 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) {
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestDiskChecker.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestDiskChecker.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestDiskChecker.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestDiskChecker.java Fri Oct 19 02:25:55 2012
@@ -124,4 +124,53 @@ public class TestDiskChecker {
}
System.out.println("checkDir success: "+ success);
}
+
+ /**
+ * These test cases test to test the creation of a local folder with correct
+ * permission for result of mapper.
+ */
+
+ @Test
+ public void testCheckDir_normal_local() throws Throwable {
+ _checkDirs(true, "755", true);
+ }
+
+ @Test
+ public void testCheckDir_notDir_local() throws Throwable {
+ _checkDirs(false, "000", false);
+ }
+
+ @Test
+ public void testCheckDir_notReadable_local() throws Throwable {
+ _checkDirs(true, "000", false);
+ }
+
+ @Test
+ public void testCheckDir_notWritable_local() throws Throwable {
+ _checkDirs(true, "444", false);
+ }
+
+ @Test
+ public void testCheckDir_notListable_local() throws Throwable {
+ _checkDirs(true, "666", false);
+ }
+
+ private void _checkDirs(boolean isDir, String perm, boolean success)
+ throws Throwable {
+ File localDir = File.createTempFile("test", "tmp");
+ localDir.delete();
+ localDir.mkdir();
+ Runtime.getRuntime().exec(
+ "chmod " + perm + " " + localDir.getAbsolutePath()).waitFor();
+ try {
+ DiskChecker.checkDir(localDir);
+ assertTrue("checkDir success", success);
+ } catch (DiskErrorException e) {
+ e.printStackTrace();
+ assertFalse("checkDir success", success);
+ }
+ localDir.delete();
+ System.out.println("checkDir success: " + success);
+
+ }
}
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestIndexedSort.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestIndexedSort.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestIndexedSort.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestIndexedSort.java Fri Oct 19 02:25:55 2012
@@ -23,7 +23,6 @@ import java.util.Random;
import junit.framework.TestCase;
-import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.DataInputBuffer;
import org.apache.hadoop.io.DataOutputBuffer;
import org.apache.hadoop.io.Text;
@@ -208,12 +207,14 @@ public class TestIndexedSort extends Tes
return seed;
}
+ @Override
public int compare(int i, int j) {
// assume positive
return
values[valindirect[valindex[i]]] - values[valindirect[valindex[j]]];
}
+ @Override
public void swap(int i, int j) {
int tmp = valindex[i];
valindex[i] = valindex[j];
@@ -261,12 +262,14 @@ public class TestIndexedSort extends Tes
public int getCmp() { return comparisions; }
public int getSwp() { return swaps; }
+ @Override
public int compare(int i, int j) {
assertTrue("Expected fewer than " + maxcmp + " comparisons",
++comparisions < maxcmp);
return s.compare(i, j);
}
+ @Override
public void swap(int i, int j) {
assertTrue("Expected fewer than " + maxswp + " swaps",
++swaps < maxswp);
@@ -323,6 +326,7 @@ public class TestIndexedSort extends Tes
t.set(sb.toString());
}
+ @Override
public int compare(int i, int j) {
final int ii = indices[i];
final int ij = indices[j];
@@ -332,6 +336,7 @@ public class TestIndexedSort extends Tes
((ij + 1 == indices.length) ? eob : offsets[ij + 1]) - offsets[ij]);
}
+ @Override
public void swap(int i, int j) {
int tmp = indices[i];
indices[i] = indices[j];
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestOptions.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestOptions.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestOptions.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestOptions.java Fri Oct 19 02:25:55 2012
@@ -18,7 +18,6 @@
package org.apache.hadoop.util;
-import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestPureJavaCrc32.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestPureJavaCrc32.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestPureJavaCrc32.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestPureJavaCrc32.java Fri Oct 19 02:25:55 2012
@@ -142,27 +142,38 @@ public class TestPureJavaCrc32 {
for (int j = 0; j < tables.length; j++) {
final int[] t = tables[j];
final StringBuilder b = new StringBuilder();
- b.append(String.format(" static final int[] " + nameformat
- + " = new int[] {", j));
+ b.append(String.format(" /* "+ nameformat +" */", j));
for (int i = 0; i < t.length;) {
b.append("\n ");
for(int k = 0; k < 4; k++) {
b.append(String.format("0x%08X, ", t[i++]));
}
}
- b.setCharAt(b.length() - 2, '\n');
- s[j] = b.toString() + " };\n";
+ s[j] = b.toString();
}
return s;
}
- /** {@inheritDoc} */
+ @Override
public String toString() {
final StringBuilder b = new StringBuilder();
- for(String s : toStrings(String.format("T%d_",
- Integer.numberOfTrailingZeros(tables[0].length)) + "%d")) {
+
+ final String tableFormat = String.format("T%d_",
+ Integer.numberOfTrailingZeros(tables[0].length)) + "%d";
+ final String startFormat = " private static final int "+tableFormat+"_start = %d*256;";
+
+ for (int j = 0; j < tables.length; j++) {
+ b.append(String.format(startFormat, j, j));
+ b.append("\n");
+ }
+
+ b.append(" private static final int[] T = new int[] {");
+ for(String s : toStrings(tableFormat)) {
+ b.append("\n");
b.append(s);
}
+ b.setCharAt(b.length() - 2, '\n');
+ b.append(" };\n");
return b.toString();
}
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestReflectionUtils.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestReflectionUtils.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestReflectionUtils.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestReflectionUtils.java Fri Oct 19 02:25:55 2012
@@ -22,8 +22,6 @@ import java.net.URL;
import java.net.URLClassLoader;
import java.util.HashMap;
-import org.apache.hadoop.conf.Configuration;
-
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
@@ -64,6 +62,7 @@ public class TestReflectionUtils {
Thread[] th = new Thread[32];
for (int i=0; i<th.length; i++) {
th[i] = new Thread() {
+ @Override
public void run() {
try {
doTestCache();
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestRunJar.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestRunJar.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestRunJar.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestRunJar.java Fri Oct 19 02:25:55 2012
@@ -35,6 +35,7 @@ public class TestRunJar extends TestCase
private static final String TEST_JAR_NAME="test-runjar.jar";
+ @Override
@Before
protected void setUp()
throws Exception {
@@ -48,6 +49,7 @@ public class TestRunJar extends TestCase
makeTestJar();
}
+ @Override
@After
protected void tearDown() {
FileUtil.fullyDelete(TEST_ROOT_DIR);
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestShell.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestShell.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestShell.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestShell.java Fri Oct 19 02:25:55 2012
@@ -27,7 +27,6 @@ import java.io.PrintWriter;
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean;
-import java.util.Timer;
public class TestShell extends TestCase {
@@ -38,10 +37,12 @@ public class TestShell extends TestCase
super(interval);
}
+ @Override
protected String[] getExecString() {
return new String[] {"echo", "hello"};
}
+ @Override
protected void parseExecResult(BufferedReader lines) throws IOException {
++runCount;
}
@@ -55,7 +56,7 @@ public class TestShell extends TestCase
testInterval(Long.MIN_VALUE / 60000); // test a negative interval
testInterval(0L); // test a zero interval
testInterval(10L); // interval equal to 10mins
- testInterval(System.currentTimeMillis() / 60000 + 60); // test a very big interval
+ testInterval(Time.now() / 60000 + 60); // test a very big interval
}
/**
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestStringUtils.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestStringUtils.java?rev=1399950&r1=1399949&r2=1399950&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestStringUtils.java (original)
+++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestStringUtils.java Fri Oct 19 02:25:55 2012
@@ -231,7 +231,8 @@ public class TestStringUtils extends Uni
assertArrayEquals(expectedArray, StringUtils.getTrimmedStrings(pathologicalDirList2));
assertArrayEquals(emptyArray, StringUtils.getTrimmedStrings(emptyList1));
- assertArrayEquals(emptyArray, StringUtils.getTrimmedStrings(emptyList2));
+ String[] estring = StringUtils.getTrimmedStrings(emptyList2);
+ assertArrayEquals(emptyArray, estring);
}
@Test
@@ -269,6 +270,30 @@ public class TestStringUtils extends Uni
assertEquals("Yy", StringUtils.camelize("yY"));
assertEquals("Zz", StringUtils.camelize("zZ"));
}
+
+ @Test
+ public void testStringToURI() {
+ String[] str = new String[] { "file://" };
+ try {
+ StringUtils.stringToURI(str);
+ fail("Ignoring URISyntaxException while creating URI from string file://");
+ } catch (IllegalArgumentException iae) {
+ assertEquals("Failed to create uri for file://", iae.getMessage());
+ }
+ }
+
+ @Test
+ public void testSimpleHostName() {
+ assertEquals("Should return hostname when FQDN is specified",
+ "hadoop01",
+ StringUtils.simpleHostname("hadoop01.domain.com"));
+ assertEquals("Should return hostname when only hostname is specified",
+ "hadoop01",
+ StringUtils.simpleHostname("hadoop01"));
+ assertEquals("Should not truncate when IP address is passed",
+ "10.10.5.68",
+ StringUtils.simpleHostname("10.10.5.68"));
+ }
// Benchmark for StringUtils split
public static void main(String []args) {