summaryrefslogtreecommitdiffstats
path: root/tests/src/com/android/providers/downloads/DownloadProviderFunctionalTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/com/android/providers/downloads/DownloadProviderFunctionalTest.java')
-rw-r--r--tests/src/com/android/providers/downloads/DownloadProviderFunctionalTest.java32
1 files changed, 19 insertions, 13 deletions
diff --git a/tests/src/com/android/providers/downloads/DownloadProviderFunctionalTest.java b/tests/src/com/android/providers/downloads/DownloadProviderFunctionalTest.java
index 23d300f8..dbab203c 100644
--- a/tests/src/com/android/providers/downloads/DownloadProviderFunctionalTest.java
+++ b/tests/src/com/android/providers/downloads/DownloadProviderFunctionalTest.java
@@ -16,14 +16,17 @@
package com.android.providers.downloads;
+import static android.text.format.DateUtils.SECOND_IN_MILLIS;
+import static java.net.HttpURLConnection.HTTP_OK;
+
import android.content.ContentValues;
import android.database.Cursor;
import android.net.ConnectivityManager;
import android.net.Uri;
import android.os.Environment;
+import android.os.SystemClock;
import android.provider.Downloads;
import android.test.suitebuilder.annotation.LargeTest;
-import android.util.Log;
import com.google.mockwebserver.MockWebServer;
import com.google.mockwebserver.RecordedRequest;
@@ -31,6 +34,7 @@ import com.google.mockwebserver.RecordedRequest;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.UnknownHostException;
+import java.util.concurrent.TimeoutException;
/**
* This test exercises the entire download manager working together -- it requests downloads through
@@ -109,20 +113,22 @@ public class DownloadProviderFunctionalTest extends AbstractDownloadProviderFunc
}
}
- private void runUntilStatus(Uri downloadUri, int status) throws Exception {
- runService();
- boolean done = false;
- while (!done) {
- int rslt = getDownloadStatus(downloadUri);
- if (rslt == Downloads.Impl.STATUS_RUNNING || rslt == Downloads.Impl.STATUS_PENDING) {
- Log.i(TAG, "status is: " + rslt + ", for: " + downloadUri);
- DownloadHandler.getInstance().waitUntilDownloadsTerminate();
- Thread.sleep(100);
- } else {
- done = true;
+ private void runUntilStatus(Uri downloadUri, int expected) throws Exception {
+ startService(null);
+
+ int actual = -1;
+
+ final long timeout = SystemClock.elapsedRealtime() + (15 * SECOND_IN_MILLIS);
+ while (SystemClock.elapsedRealtime() < timeout) {
+ actual = getDownloadStatus(downloadUri);
+ if (expected == actual) {
+ return;
}
+
+ SystemClock.sleep(100);
}
- assertEquals(status, getDownloadStatus(downloadUri));
+
+ throw new TimeoutException("Expected status " + expected + "; only reached " + actual);
}
protected int getDownloadStatus(Uri downloadUri) {