Modified: hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/file/tfile/TestTFileByteArrays.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/file/tfile/TestTFileByteArrays.java?rev=1369164&r1=1369163&r2=1369164&view=diff ============================================================================== --- hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/file/tfile/TestTFileByteArrays.java (original) +++ hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/file/tfile/TestTFileByteArrays.java Fri Aug 3 19:00:15 2012 @@ -30,6 +30,7 @@ import org.apache.hadoop.fs.FSDataOutput import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.WritableUtils; +import org.apache.hadoop.io.compress.zlib.ZlibFactory; import org.apache.hadoop.io.file.tfile.TFile.Reader; import org.apache.hadoop.io.file.tfile.TFile.Writer; import org.apache.hadoop.io.file.tfile.TFile.Reader.Location; @@ -57,7 +58,7 @@ public class TestTFileByteArrays { private static final String VALUE = "value"; private FileSystem fs; - private Configuration conf; + private Configuration conf = new Configuration(); private Path path; private FSDataOutputStream out; private Writer writer; @@ -71,8 +72,9 @@ public class TestTFileByteArrays { * generated key and value strings. This is slightly different based on * whether or not the native libs are present. */ - private int records1stBlock = NativeCodeLoader.isNativeCodeLoaded() ? 5674 : 4480; - private int records2ndBlock = NativeCodeLoader.isNativeCodeLoaded() ? 5574 : 4263; + private boolean usingNative = ZlibFactory.isNativeZlibLoaded(conf); + private int records1stBlock = usingNative ? 5674 : 4480; + private int records2ndBlock = usingNative ? 5574 : 4263; public void init(String compression, String comparator, String outputFile, int numRecords1stBlock, int numRecords2ndBlock) { @@ -89,7 +91,6 @@ public class TestTFileByteArrays { @Before public void setUp() throws IOException { - conf = new Configuration(); path = new Path(ROOT, outputFile); fs = path.getFileSystem(conf); out = fs.create(path);
Modified: hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/file/tfile/TestTFileSeqFileComparison.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/file/tfile/TestTFileSeqFileComparison.java?rev=1369164&r1=1369163&r2=1369164&view=diff ============================================================================== --- hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/file/tfile/TestTFileSeqFileComparison.java (original) +++ hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/file/tfile/TestTFileSeqFileComparison.java Fri Aug 3 19:00:15 2012 @@ -43,6 +43,7 @@ import org.apache.hadoop.io.BytesWritabl import org.apache.hadoop.io.SequenceFile; import org.apache.hadoop.io.compress.CompressionCodec; import org.apache.hadoop.io.file.tfile.TFile.Reader.Scanner.Entry; +import org.apache.hadoop.util.Time; public class TestTFileSeqFileComparison extends TestCase { MyOptions options; @@ -87,12 +88,12 @@ public class TestTFileSeqFileComparison } public void startTime() throws IOException { - startTimeEpoch = System.currentTimeMillis(); + startTimeEpoch = Time.now(); System.out.println(formatTime() + " Started timing."); } public void stopTime() throws IOException { - finishTimeEpoch = System.currentTimeMillis(); + finishTimeEpoch = Time.now(); System.out.println(formatTime() + " Stopped timing."); } @@ -112,7 +113,7 @@ public class TestTFileSeqFileComparison } public String formatTime() { - return formatTime(System.currentTimeMillis()); + return formatTime(Time.now()); } private interface KVAppendable { Modified: hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/file/tfile/Timer.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/file/tfile/Timer.java?rev=1369164&r1=1369163&r2=1369164&view=diff ============================================================================== --- hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/file/tfile/Timer.java (original) +++ hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/file/tfile/Timer.java Fri Aug 3 19:00:15 2012 @@ -20,6 +20,8 @@ import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; +import org.apache.hadoop.util.Time; + /** * this class is a time class to * measure to measure the time @@ -31,11 +33,11 @@ public class Timer { private DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public void startTime() throws IOException { - startTimeEpoch = System.currentTimeMillis(); + startTimeEpoch = Time.now(); } public void stopTime() throws IOException { - finishTimeEpoch = System.currentTimeMillis(); + finishTimeEpoch = Time.now(); } public long getIntervalMillis() throws IOException { @@ -56,7 +58,7 @@ public class Timer { } public String formatCurrentTime() { - return formatTime(System.currentTimeMillis()); + return formatTime(Time.now()); } } Modified: hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/nativeio/TestNativeIO.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/nativeio/TestNativeIO.java?rev=1369164&r1=1369163&r2=1369164&view=diff ============================================================================== --- hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/nativeio/TestNativeIO.java (original) +++ hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/nativeio/TestNativeIO.java Fri Aug 3 19:00:15 2012 @@ -38,6 +38,7 @@ import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.fs.permission.FsPermission; import org.apache.hadoop.util.NativeCodeLoader; +import org.apache.hadoop.util.Time; public class TestNativeIO { static final Log LOG = LogFactory.getLog(TestNativeIO.class); @@ -88,8 +89,8 @@ public class TestNativeIO { for (int i = 0; i < 10; i++) { Thread statter = new Thread() { public void run() { - long et = System.currentTimeMillis() + 5000; - while (System.currentTimeMillis() < et) { + long et = Time.now() + 5000; + while (Time.now() < et) { try { NativeIO.Stat stat = NativeIO.fstat(fos.getFD()); assertEquals(System.getProperty("user.name"), stat.getOwner()); Modified: hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/MiniRPCBenchmark.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/MiniRPCBenchmark.java?rev=1369164&r1=1369163&r2=1369164&view=diff ============================================================================== --- hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/MiniRPCBenchmark.java (original) +++ hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/MiniRPCBenchmark.java Fri Aug 3 19:00:15 2012 @@ -42,6 +42,7 @@ import org.apache.hadoop.security.token. import org.apache.hadoop.security.token.delegation.AbstractDelegationTokenSelector; import org.apache.hadoop.security.token.delegation.TestDelegationToken.TestDelegationTokenIdentifier; import org.apache.hadoop.security.token.delegation.TestDelegationToken.TestDelegationTokenSecretManager; +import org.apache.hadoop.util.Time; import org.apache.log4j.Level; import org.apache.log4j.LogManager; @@ -186,10 +187,10 @@ public class MiniRPCBenchmark { throws IOException { MiniProtocol client = null; try { - long start = System.currentTimeMillis(); + long start = Time.now(); client = (MiniProtocol) RPC.getProxy(MiniProtocol.class, MiniProtocol.versionID, addr, conf); - long end = System.currentTimeMillis(); + long end = Time.now(); return end - start; } finally { RPC.stopProxy(client); @@ -231,7 +232,7 @@ public class MiniRPCBenchmark { final Configuration conf, final InetSocketAddress addr) throws IOException { MiniProtocol client = null; try { - long start = System.currentTimeMillis(); + long start = Time.now(); try { client = currentUgi.doAs(new PrivilegedExceptionAction<MiniProtocol>() { public MiniProtocol run() throws IOException { @@ -242,7 +243,7 @@ public class MiniRPCBenchmark { } catch (InterruptedException e) { e.printStackTrace(); } - long end = System.currentTimeMillis(); + long end = Time.now(); return end - start; } finally { RPC.stopProxy(client); Modified: hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/log/TestLog4Json.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/log/TestLog4Json.java?rev=1369164&r1=1369163&r2=1369164&view=diff ============================================================================== --- hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/log/TestLog4Json.java (original) +++ hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/log/TestLog4Json.java Fri Aug 3 19:00:15 2012 @@ -21,6 +21,7 @@ package org.apache.hadoop.log; import junit.framework.TestCase; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.util.Time; import org.apache.log4j.Appender; import org.apache.log4j.Category; import org.apache.log4j.Level; @@ -63,7 +64,7 @@ public class TestLog4Json extends TestCa new NoRouteToHostException("that box caught fire 3 years ago"); ThrowableInformation ti = new ThrowableInformation(e); Log4Json l4j = new Log4Json(); - long timeStamp = System.currentTimeMillis(); + long timeStamp = Time.now(); String outcome = l4j.toJson(new StringWriter(), "testException", timeStamp, @@ -82,7 +83,7 @@ public class TestLog4Json extends TestCa Exception ioe = new IOException("Datacenter problems", e); ThrowableInformation ti = new ThrowableInformation(ioe); Log4Json l4j = new Log4Json(); - long timeStamp = System.currentTimeMillis(); + long timeStamp = Time.now(); String outcome = l4j.toJson(new StringWriter(), "testNestedException", timeStamp, Modified: hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/lib/TestMutableMetrics.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/lib/TestMutableMetrics.java?rev=1369164&r1=1369163&r2=1369164&view=diff ============================================================================== --- hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/lib/TestMutableMetrics.java (original) +++ hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/lib/TestMutableMetrics.java Fri Aug 3 19:00:15 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/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestDNS.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestDNS.java?rev=1369164&r1=1369163&r2=1369164&view=diff ============================================================================== --- hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestDNS.java (original) +++ hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestDNS.java Fri Aug 3 19:00:15 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/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestSocketIOWithTimeout.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestSocketIOWithTimeout.java?rev=1369164&r1=1369163&r2=1369164&view=diff ============================================================================== --- hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestSocketIOWithTimeout.java (original) +++ hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestSocketIOWithTimeout.java Fri Aug 3 19:00:15 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/branch-trunk-win/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/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/delegation/TestDelegationToken.java?rev=1369164&r1=1369163&r2=1369164&view=diff ============================================================================== --- hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/delegation/TestDelegationToken.java (original) +++ hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/delegation/TestDelegationToken.java Fri Aug 3 19:00:15 2012 @@ -40,12 +40,15 @@ 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.*; @@ -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, @@ -188,7 +237,7 @@ public class TestDelegationToken { } }, 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(); Modified: hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java?rev=1369164&r1=1369163&r2=1369164&view=diff ============================================================================== --- hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java (original) +++ hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java Fri Aug 3 19:00:15 2012 @@ -31,6 +31,7 @@ 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; @@ -94,7 +95,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,7 +103,7 @@ public abstract class GenericTestUtils { } Thread.sleep(checkEveryMillis); - } while (System.currentTimeMillis() - st < waitForMillis); + } while (Time.now() - st < waitForMillis); throw new TimeoutException("Timed out waiting for condition"); } Modified: hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MetricsAsserts.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MetricsAsserts.java?rev=1369164&r1=1369163&r2=1369164&view=diff ============================================================================== --- hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MetricsAsserts.java (original) +++ hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MetricsAsserts.java Fri Aug 3 19:00:15 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,7 +41,11 @@ 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.*; +import static org.apache.hadoop.test.MetricsAsserts.eqName; /** * Helpers for metrics source tests @@ -328,4 +334,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/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MultithreadedTestUtil.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MultithreadedTestUtil.java?rev=1369164&r1=1369163&r2=1369164&view=diff ============================================================================== --- hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MultithreadedTestUtil.java (original) +++ hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MultithreadedTestUtil.java Fri Aug 3 19:00:15 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); Modified: hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/TestMultithreadedTestUtil.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/TestMultithreadedTestUtil.java?rev=1369164&r1=1369163&r2=1369164&view=diff ============================================================================== --- hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/TestMultithreadedTestUtil.java (original) +++ hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/TestMultithreadedTestUtil.java Fri Aug 3 19:00:15 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/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestDiskChecker.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestDiskChecker.java?rev=1369164&r1=1369163&r2=1369164&view=diff ============================================================================== --- hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestDiskChecker.java (original) +++ hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestDiskChecker.java Fri Aug 3 19:00:15 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/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestShell.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestShell.java?rev=1369164&r1=1369163&r2=1369164&view=diff ============================================================================== --- hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestShell.java (original) +++ hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestShell.java Fri Aug 3 19:00:15 2012 @@ -55,7 +55,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/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestStringUtils.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestStringUtils.java?rev=1369164&r1=1369163&r2=1369164&view=diff ============================================================================== --- hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestStringUtils.java (original) +++ hadoop/common/branches/branch-trunk-win/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestStringUtils.java Fri Aug 3 19:00:15 2012 @@ -269,6 +269,17 @@ 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()); + } + } // Benchmark for StringUtils split public static void main(String []args) {
