Commit a5741729 authored by David Trainor's avatar David Trainor Committed by Commit Bot

Fix flaky EngagementTimeUtilTest test

The test still used System.currentTimeMillis() which could very rarely
return a different value even between just a few instructions.

Change-Id: I8cc649771cec6506b28decba91bd74a1ed1a7e03
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1929084Reviewed-by: default avatarMin Qin <qinmin@chromium.org>
Commit-Queue: David Trainor <dtrainor@chromium.org>
Cr-Commit-Position: refs/heads/master@{#718399}
parent 30062b02
......@@ -19,22 +19,25 @@ import org.chromium.base.test.BaseRobolectricTestRunner;
public final class EngagementTimeUtilTest {
private static final long TEST_ELAPSED_MS = 5000L;
private EngagementTimeUtil mEngagementTimeUtil;
private MockEngagementTimeUtil mEngagementTimeUtil;
@Before
public void setUp() {
mEngagementTimeUtil = new EngagementTimeUtil();
mEngagementTimeUtil = new MockEngagementTimeUtil();
}
@Test
public void timeSinceLastEngagement_shouldReportElapsedTimeSinceLastEngagement() {
long currentTimeMillis = System.currentTimeMillis();
mEngagementTimeUtil.setCurrentTime(currentTimeMillis);
assertEquals(TEST_ELAPSED_MS,
mEngagementTimeUtil.timeSinceLastEngagement(
System.currentTimeMillis() - TEST_ELAPSED_MS));
mEngagementTimeUtil.timeSinceLastEngagement(currentTimeMillis - TEST_ELAPSED_MS));
}
@Test
public void timeSinceLastEngagement_shouldReportInvalidIfNegative() {
long currentTimeMillis = System.currentTimeMillis();
mEngagementTimeUtil.setCurrentTime(currentTimeMillis);
assertEquals(-1,
mEngagementTimeUtil.timeSinceLastEngagement(
System.currentTimeMillis() + TEST_ELAPSED_MS));
......@@ -43,9 +46,24 @@ public final class EngagementTimeUtilTest {
@Test
public void timeSinceLastEngagement_shouldReportElapsedTimeBetweenTimestamps() {
long currentTimeMillis = System.currentTimeMillis();
mEngagementTimeUtil.setCurrentTime(currentTimeMillis);
assertEquals(TEST_ELAPSED_MS,
mEngagementTimeUtil.timeSinceLastEngagement(
currentTimeMillis - (2L * TEST_ELAPSED_MS),
currentTimeMillis - TEST_ELAPSED_MS));
}
private static class MockEngagementTimeUtil extends EngagementTimeUtil {
private long mCurrentTime = System.currentTimeMillis();
public void setCurrentTime(long currentTime) {
mCurrentTime = currentTime;
}
// EngagementTimeUtil implementation.
@Override
public long currentTime() {
return mCurrentTime;
}
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment