diff options
author | Jeff Sharkey <jsharkey@android.com> | 2013-02-22 11:57:48 -0800 |
---|---|---|
committer | Jeff Sharkey <jsharkey@android.com> | 2013-02-25 11:14:45 -0800 |
commit | 7ce206b2108714035eeed29c1dc268a3f1ccf359 (patch) | |
tree | 1f10038b90151b2129ad6d7eb6caededee0b9320 /tests/src/com/android/providers/downloads/AbstractPublicApiTest.java | |
parent | 54277c8d2de6ba2db1cb5c632914a89aa4ad499c (diff) | |
download | android_packages_providers_DownloadProvider-7ce206b2108714035eeed29c1dc268a3f1ccf359.tar.gz android_packages_providers_DownloadProvider-7ce206b2108714035eeed29c1dc268a3f1ccf359.tar.bz2 android_packages_providers_DownloadProvider-7ce206b2108714035eeed29c1dc268a3f1ccf359.zip |
Test to verify extremely large downloads.
Streams a 3GB file to verify that it downloads correctly, using new
MockWebServer streaming API.
Bug: 8209169
Change-Id: Ic36271bfef3176e1ccea2b40edc7abb1044222f1
Diffstat (limited to 'tests/src/com/android/providers/downloads/AbstractPublicApiTest.java')
-rw-r--r-- | tests/src/com/android/providers/downloads/AbstractPublicApiTest.java | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/tests/src/com/android/providers/downloads/AbstractPublicApiTest.java b/tests/src/com/android/providers/downloads/AbstractPublicApiTest.java index bff9333a..348dbd1b 100644 --- a/tests/src/com/android/providers/downloads/AbstractPublicApiTest.java +++ b/tests/src/com/android/providers/downloads/AbstractPublicApiTest.java @@ -18,6 +18,7 @@ package com.android.providers.downloads; import static android.app.DownloadManager.STATUS_FAILED; import static android.app.DownloadManager.STATUS_SUCCESSFUL; +import static android.text.format.DateUtils.MINUTE_IN_MILLIS; import static android.text.format.DateUtils.SECOND_IN_MILLIS; import android.app.DownloadManager; @@ -109,11 +110,21 @@ public abstract class AbstractPublicApiTest extends AbstractDownloadProviderFunc waitForStatus(status, startMillis); } + void runUntilStatus(int status, long timeout) throws TimeoutException { + final long startMillis = mSystemFacade.currentTimeMillis(); + startService(null); + waitForStatus(status, startMillis, timeout); + } + void waitForStatus(int expected, long afterMillis) throws TimeoutException { + waitForStatus(expected, afterMillis, 15 * SECOND_IN_MILLIS); + } + + void waitForStatus(int expected, long afterMillis, long timeout) throws TimeoutException { int actual = -1; - final long timeout = SystemClock.elapsedRealtime() + (15 * SECOND_IN_MILLIS); - while (SystemClock.elapsedRealtime() < timeout) { + final long elapsedTimeout = SystemClock.elapsedRealtime() + timeout; + while (SystemClock.elapsedRealtime() < elapsedTimeout) { if (getLongField(DownloadManager.COLUMN_LAST_MODIFIED_TIMESTAMP) >= afterMillis) { actual = getStatus(); if (actual == STATUS_SUCCESSFUL || actual == STATUS_FAILED) { @@ -122,9 +133,20 @@ public abstract class AbstractPublicApiTest extends AbstractDownloadProviderFunc } else if (actual == expected) { return; } + + if (timeout > MINUTE_IN_MILLIS) { + final int percent = (int) (100 + * getLongField(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR) + / getLongField(DownloadManager.COLUMN_TOTAL_SIZE_BYTES)); + Log.d(LOG_TAG, percent + "% complete"); + } } - SystemClock.sleep(100); + if (timeout > MINUTE_IN_MILLIS) { + SystemClock.sleep(SECOND_IN_MILLIS * 3); + } else { + SystemClock.sleep(100); + } } throw new TimeoutException("Expected status " + expected + "; only reached " + actual); |