summaryrefslogtreecommitdiffstats
path: root/common/tests
diff options
context:
space:
mode:
authorDan Egnor <egnor@google.com>2010-02-17 17:07:01 -0800
committerDan Egnor <egnor@google.com>2010-02-17 17:07:01 -0800
commit8a2e0111958b9f6b665d0ed9a6d8bceb9d8fa31a (patch)
treeb35fbfc302a46cd9331d511d5b88c96d0ac5126b /common/tests
parent6a70d7d1e28bd0b98d03e7ecab3fd08ea5973e34 (diff)
downloadframeworks_base-8a2e0111958b9f6b665d0ed9a6d8bceb9d8fa31a.zip
frameworks_base-8a2e0111958b9f6b665d0ed9a6d8bceb9d8fa31a.tar.gz
frameworks_base-8a2e0111958b9f6b665d0ed9a6d8bceb9d8fa31a.tar.bz2
Add some useful methods to OperationScheduler to inquire into
the history, in case you want to second-guess its scheduling.
Diffstat (limited to 'common/tests')
-rw-r--r--common/tests/src/com/android/common/OperationSchedulerTest.java18
1 files changed, 18 insertions, 0 deletions
diff --git a/common/tests/src/com/android/common/OperationSchedulerTest.java b/common/tests/src/com/android/common/OperationSchedulerTest.java
index 28178b5..f728eea 100644
--- a/common/tests/src/com/android/common/OperationSchedulerTest.java
+++ b/common/tests/src/com/android/common/OperationSchedulerTest.java
@@ -28,6 +28,8 @@ public class OperationSchedulerTest extends AndroidTestCase {
OperationScheduler scheduler = new OperationScheduler(storage);
OperationScheduler.Options options = new OperationScheduler.Options();
assertEquals(Long.MAX_VALUE, scheduler.getNextTimeMillis(options));
+ assertEquals(0, scheduler.getLastSuccessTimeMillis());
+ assertEquals(0, scheduler.getLastAttemptTimeMillis());
long beforeTrigger = System.currentTimeMillis();
scheduler.setTriggerTimeMillis(beforeTrigger + 1000000);
@@ -49,6 +51,9 @@ public class OperationSchedulerTest extends AndroidTestCase {
long beforeError = System.currentTimeMillis();
scheduler.onTransientError();
long afterError = System.currentTimeMillis();
+ assertEquals(0, scheduler.getLastSuccessTimeMillis());
+ assertTrue(beforeError <= scheduler.getLastAttemptTimeMillis());
+ assertTrue(afterError >= scheduler.getLastAttemptTimeMillis());
assertEquals(beforeTrigger + 1500000, scheduler.getNextTimeMillis(options));
options.backoffFixedMillis = 1000000;
options.backoffIncrementalMillis = 500000;
@@ -59,9 +64,18 @@ public class OperationSchedulerTest extends AndroidTestCase {
beforeError = System.currentTimeMillis();
scheduler.onTransientError();
afterError = System.currentTimeMillis();
+ assertTrue(beforeError <= scheduler.getLastAttemptTimeMillis());
+ assertTrue(afterError >= scheduler.getLastAttemptTimeMillis());
assertTrue(beforeError + 2000000 <= scheduler.getNextTimeMillis(options));
assertTrue(afterError + 2000000 >= scheduler.getNextTimeMillis(options));
+ // Reset transient error: no backoff interval
+ scheduler.resetTransientError();
+ assertEquals(0, scheduler.getLastSuccessTimeMillis());
+ assertEquals(beforeTrigger + 1500000, scheduler.getNextTimeMillis(options));
+ assertTrue(beforeError <= scheduler.getLastAttemptTimeMillis());
+ assertTrue(afterError >= scheduler.getLastAttemptTimeMillis());
+
// Permanent error holds true even if transient errors are reset
// However, we remember that the transient error was reset...
scheduler.onPermanentError();
@@ -75,6 +89,10 @@ public class OperationSchedulerTest extends AndroidTestCase {
long beforeSuccess = System.currentTimeMillis();
scheduler.onSuccess();
long afterSuccess = System.currentTimeMillis();
+ assertTrue(beforeSuccess <= scheduler.getLastAttemptTimeMillis());
+ assertTrue(afterSuccess >= scheduler.getLastAttemptTimeMillis());
+ assertTrue(beforeSuccess <= scheduler.getLastSuccessTimeMillis());
+ assertTrue(afterSuccess >= scheduler.getLastSuccessTimeMillis());
assertEquals(Long.MAX_VALUE, scheduler.getNextTimeMillis(options));
// The moratorium is not reset by success!