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; ...@@ -19,22 +19,25 @@ import org.chromium.base.test.BaseRobolectricTestRunner;
public final class EngagementTimeUtilTest { public final class EngagementTimeUtilTest {
private static final long TEST_ELAPSED_MS = 5000L; private static final long TEST_ELAPSED_MS = 5000L;
private EngagementTimeUtil mEngagementTimeUtil; private MockEngagementTimeUtil mEngagementTimeUtil;
@Before @Before
public void setUp() { public void setUp() {
mEngagementTimeUtil = new EngagementTimeUtil(); mEngagementTimeUtil = new MockEngagementTimeUtil();
} }
@Test @Test
public void timeSinceLastEngagement_shouldReportElapsedTimeSinceLastEngagement() { public void timeSinceLastEngagement_shouldReportElapsedTimeSinceLastEngagement() {
long currentTimeMillis = System.currentTimeMillis();
mEngagementTimeUtil.setCurrentTime(currentTimeMillis);
assertEquals(TEST_ELAPSED_MS, assertEquals(TEST_ELAPSED_MS,
mEngagementTimeUtil.timeSinceLastEngagement( mEngagementTimeUtil.timeSinceLastEngagement(currentTimeMillis - TEST_ELAPSED_MS));
System.currentTimeMillis() - TEST_ELAPSED_MS));
} }
@Test @Test
public void timeSinceLastEngagement_shouldReportInvalidIfNegative() { public void timeSinceLastEngagement_shouldReportInvalidIfNegative() {
long currentTimeMillis = System.currentTimeMillis();
mEngagementTimeUtil.setCurrentTime(currentTimeMillis);
assertEquals(-1, assertEquals(-1,
mEngagementTimeUtil.timeSinceLastEngagement( mEngagementTimeUtil.timeSinceLastEngagement(
System.currentTimeMillis() + TEST_ELAPSED_MS)); System.currentTimeMillis() + TEST_ELAPSED_MS));
...@@ -43,9 +46,24 @@ public final class EngagementTimeUtilTest { ...@@ -43,9 +46,24 @@ public final class EngagementTimeUtilTest {
@Test @Test
public void timeSinceLastEngagement_shouldReportElapsedTimeBetweenTimestamps() { public void timeSinceLastEngagement_shouldReportElapsedTimeBetweenTimestamps() {
long currentTimeMillis = System.currentTimeMillis(); long currentTimeMillis = System.currentTimeMillis();
mEngagementTimeUtil.setCurrentTime(currentTimeMillis);
assertEquals(TEST_ELAPSED_MS, assertEquals(TEST_ELAPSED_MS,
mEngagementTimeUtil.timeSinceLastEngagement( mEngagementTimeUtil.timeSinceLastEngagement(
currentTimeMillis - (2L * TEST_ELAPSED_MS), currentTimeMillis - (2L * TEST_ELAPSED_MS),
currentTimeMillis - 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