From 6437ba18c5c26bc271a63aff5ea03756f43dd9a3 Mon Sep 17 00:00:00 2001 From: Mingliang Liu Date: Tue, 27 Sep 2016 20:40:17 -0700 Subject: [PATCH] HDFS-10915. Fix time measurement bug in TestDatanodeRestart. Contributed by Xiaobing Zhou --- .../fsdataset/impl/TestDatanodeRestart.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/TestDatanodeRestart.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/TestDatanodeRestart.java index 40a3d9d7448..0afee5fa57f 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/TestDatanodeRestart.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/TestDatanodeRestart.java @@ -45,6 +45,7 @@ import org.apache.hadoop.hdfs.server.datanode.ReplicaInfo; import org.apache.hadoop.hdfs.server.datanode.fsdataset.FsDatasetSpi; import org.apache.hadoop.hdfs.server.datanode.fsdataset.FsVolumeSpi; import org.apache.hadoop.io.IOUtils; +import org.apache.hadoop.util.Time; import org.junit.Assert; import org.junit.Test; @@ -172,17 +173,17 @@ public class TestDatanodeRestart { cluster = new MiniDFSCluster.Builder(conf).numDataNodes(numDNs).build(); cluster.waitActive(); - start = System.currentTimeMillis(); + start = Time.monotonicNow(); FileSystem fileSys = cluster.getFileSystem(); try { DFSTestUtil.createFile(fileSys, file, 10240L, (short)1, 0L); // It is a bug if this does not fail. throw new IOException("Did not fail!"); } catch (org.apache.hadoop.ipc.RemoteException e) { - long elapsed = System.currentTimeMillis() - start; + long elapsed = Time.monotonicNow() - start; // timers have at-least semantics, so it should be at least 5 seconds. if (elapsed < 5000 || elapsed > 10000) { - throw new IOException(elapsed + " seconds passed.", e); + throw new IOException(elapsed + " milliseconds passed.", e); } } DataNodeFaultInjector.set(oldDnInjector); @@ -195,18 +196,18 @@ public class TestDatanodeRestart { // back to simulating unregistered node. DataNodeFaultInjector.set(dnFaultInjector); byte[] buffer = new byte[8]; - start = System.currentTimeMillis(); + start = Time.monotonicNow(); try { fileSys.open(file).read(0L, buffer, 0, 1); throw new IOException("Did not fail!"); } catch (IOException e) { - long elapsed = System.currentTimeMillis() - start; + long elapsed = Time.monotonicNow() - start; if (e.getMessage().contains("readBlockLength")) { throw new IOException("Failed, but with unexpected exception:", e); } // timers have at-least semantics, so it should be at least 5 seconds. if (elapsed < 5000 || elapsed > 10000) { - throw new IOException(elapsed + " seconds passed.", e); + throw new IOException(elapsed + " milliseconds passed.", e); } } DataNodeFaultInjector.set(oldDnInjector);