Repository: hadoop Updated Branches: refs/heads/branch-2.7 c2350ec42 -> 03892df21
HADOOP-14827. Allow StopWatch to accept a Timer parameter for tests. Contributed by Erik Krogen (cherry picked from commit dd814946f68d52a9b1627ac4dd61f9ab093423ae) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/03892df2 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/03892df2 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/03892df2 Branch: refs/heads/branch-2.7 Commit: 03892df215634a8901910db9f84ed10c039d90a2 Parents: c2350ec Author: Jason Lowe <jl...@apache.org> Authored: Wed Sep 6 16:04:30 2017 -0500 Committer: Jason Lowe <jl...@apache.org> Committed: Wed Sep 6 16:17:43 2017 -0500 ---------------------------------------------------------------------- .../java/org/apache/hadoop/util/StopWatch.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/03892df2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/StopWatch.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/StopWatch.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/StopWatch.java index b9d0d0b..c0eedf6 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/StopWatch.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/StopWatch.java @@ -25,11 +25,22 @@ import java.util.concurrent.TimeUnit; * A simplified StopWatch implementation which can measure times in nanoseconds. */ public class StopWatch implements Closeable { + private final Timer timer; private boolean isStarted; private long startNanos; private long currentElapsedNanos; public StopWatch() { + this(new Timer()); + } + + /** + * Used for tests to be able to create a StopWatch which does not follow real + * time. + * @param timer The timer to base this StopWatch's timekeeping off of. + */ + public StopWatch(Timer timer) { + this.timer = timer; } /** @@ -49,7 +60,7 @@ public class StopWatch implements Closeable { throw new IllegalStateException("StopWatch is already running"); } isStarted = true; - startNanos = System.nanoTime(); + startNanos = timer.monotonicNowNanos(); return this; } @@ -61,7 +72,7 @@ public class StopWatch implements Closeable { if (!isStarted) { throw new IllegalStateException("StopWatch is already stopped"); } - long now = System.nanoTime(); + long now = timer.monotonicNowNanos(); isStarted = false; currentElapsedNanos += now - startNanos; return this; @@ -90,7 +101,7 @@ public class StopWatch implements Closeable { */ public long now() { return isStarted ? - System.nanoTime() - startNanos + currentElapsedNanos : + timer.monotonicNowNanos() - startNanos + currentElapsedNanos : currentElapsedNanos; } --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org