/* * The Alluxio Open Foundation licenses this work under the Apache License, version 2.0 * (the "License"). You may not use this work except in compliance with the License, which is * available at www.apache.org/licenses/LICENSE-2.0 * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied, as more fully set forth in the License. * * See the NOTICE file distributed with this work for information regarding copyright ownership. */ package alluxio.clock; /** * A manually set clock useful for testing. */ public final class ManualClock implements Clock { private long mTimeMs; /** * Constructs a {@link ManualClock} set to the current system time. */ public ManualClock() { this(System.currentTimeMillis()); } /** * Constructs a {@link ManualClock} set to the specified time. * * @param time the time to set the clock to */ public ManualClock(long time) { mTimeMs = time; } /** * Sets the clock to the specified time. * * @param timeMs the time to set the clock to */ public synchronized void setTimeMs(long timeMs) { mTimeMs = timeMs; } /** * Moves the clock forward the specified amount of time. * * @param timeMs the time to add in milliseconds */ public synchronized void addTimeMs(long timeMs) { mTimeMs += timeMs; } @Override public synchronized long millis() { return mTimeMs; } }