summaryrefslogtreecommitdiffstats
path: root/tests/src/com/android/providers
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2012-12-23 19:28:09 -0800
committerJeff Sharkey <jsharkey@android.com>2013-01-09 18:32:03 -0800
commit0de55602ec6d350548248feddc68c91b29326eff (patch)
treef64aa79577aa145c331a81bdbf23f12c6e8bd9be /tests/src/com/android/providers
parent8ac10e0e0667a4fe35191deebb5fa9786bf4226c (diff)
downloadandroid_packages_providers_DownloadProvider-0de55602ec6d350548248feddc68c91b29326eff.tar.gz
android_packages_providers_DownloadProvider-0de55602ec6d350548248feddc68c91b29326eff.tar.bz2
android_packages_providers_DownloadProvider-0de55602ec6d350548248feddc68c91b29326eff.zip
Simplify download flow control, handle redirects.
Move redirection handling into a single loop, and handle each HTTP response code inline to make flow control easier to reason about. Fix race condition in tests by waiting for first status update. Bug: 7887226 Change-Id: Id4bfd182941baad4cd0bb702376c4beeb7275bb2
Diffstat (limited to 'tests/src/com/android/providers')
-rw-r--r--tests/src/com/android/providers/downloads/AbstractPublicApiTest.java19
-rw-r--r--tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java2
2 files changed, 12 insertions, 9 deletions
diff --git a/tests/src/com/android/providers/downloads/AbstractPublicApiTest.java b/tests/src/com/android/providers/downloads/AbstractPublicApiTest.java
index 12c04f6a..e7f08c90 100644
--- a/tests/src/com/android/providers/downloads/AbstractPublicApiTest.java
+++ b/tests/src/com/android/providers/downloads/AbstractPublicApiTest.java
@@ -100,21 +100,24 @@ public abstract class AbstractPublicApiTest extends AbstractDownloadProviderFunc
}
void runUntilStatus(int status) throws TimeoutException {
+ final long startMillis = mSystemFacade.currentTimeMillis();
startService(null);
- waitForStatus(status);
+ waitForStatus(status, startMillis);
}
- void waitForStatus(int expected) throws TimeoutException {
+ void waitForStatus(int expected, long afterMillis) throws TimeoutException {
int actual = -1;
final long timeout = SystemClock.elapsedRealtime() + (15 * SECOND_IN_MILLIS);
while (SystemClock.elapsedRealtime() < timeout) {
- actual = getStatus();
- if (actual == STATUS_SUCCESSFUL || actual == STATUS_FAILED) {
- assertEquals(expected, actual);
- return;
- } else if (actual == expected) {
- return;
+ if (getLongField(DownloadManager.COLUMN_LAST_MODIFIED_TIMESTAMP) >= afterMillis) {
+ actual = getStatus();
+ if (actual == STATUS_SUCCESSFUL || actual == STATUS_FAILED) {
+ assertEquals(expected, actual);
+ return;
+ } else if (actual == expected) {
+ return;
+ }
}
SystemClock.sleep(100);
diff --git a/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java b/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java
index 4159beb6..157cce89 100644
--- a/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java
+++ b/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java
@@ -421,7 +421,7 @@ public class PublicApiFunctionalTest extends AbstractPublicApiTest {
mManager.remove(download.mId);
// make sure the row is gone from the database
- download.waitForStatus(-1);
+ download.waitForStatus(-1, -1);
}
public void testDownloadCompleteBroadcast() throws Exception {