From 962e12883b6a07ff5b33bd9d269869e4da50b799 Mon Sep 17 00:00:00 2001 From: Maxim Siniavine Date: Fri, 28 Mar 2014 16:24:29 -0700 Subject: [PATCH] DownloadManager test will wait until certain progress, is made during download before moving to next stage of the test. Increase the timeout for waiting for download to complete. Change-Id: I61820a9525256f4f2e16571e1ac075d2f5268cae --- .../DownloadManagerBaseTest.java | 11 ++++--- .../DownloadManagerTestApp.java | 33 +++++++++++-------- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/core/tests/hosttests/test-apps/DownloadManagerTestApp/src/com/android/frameworks/downloadmanagertests/DownloadManagerBaseTest.java b/core/tests/hosttests/test-apps/DownloadManagerTestApp/src/com/android/frameworks/downloadmanagertests/DownloadManagerBaseTest.java index fc2897f2418ff..f4bab43e4c520 100644 --- a/core/tests/hosttests/test-apps/DownloadManagerTestApp/src/com/android/frameworks/downloadmanagertests/DownloadManagerBaseTest.java +++ b/core/tests/hosttests/test-apps/DownloadManagerTestApp/src/com/android/frameworks/downloadmanagertests/DownloadManagerBaseTest.java @@ -466,15 +466,16 @@ public class DownloadManagerBaseTest extends InstrumentationTestCase { * bytes downloaded so far. * * @param id DownloadManager download id that needs to be checked. + * @param bytesToReceive how many bytes do we need to wait to receive. * @throws Exception if timed out while waiting for the file to grow in size. */ - protected void waitToReceiveData(long id) throws Exception { + protected void waitToReceiveData(long id, long bytesToReceive) throws Exception { int currentWaitTime = 0; - long originalSize = getBytesDownloaded(id); + long expectedSize = getBytesDownloaded(id) + bytesToReceive; long currentSize = 0; - while ((currentSize = getBytesDownloaded(id)) <= originalSize) { - Log.i(LOG_TAG, String.format("orig: %d, cur: %d. Waiting for file to be written to...", - originalSize, currentSize)); + while ((currentSize = getBytesDownloaded(id)) <= expectedSize) { + Log.i(LOG_TAG, String.format("expect: %d, cur: %d. Waiting for file to be written to...", + expectedSize, currentSize)); currentWaitTime = timeoutWait(currentWaitTime, WAIT_FOR_DOWNLOAD_POLL_TIME, MAX_WAIT_FOR_DOWNLOAD_TIME, "Timed out waiting for file to be written to."); } diff --git a/core/tests/hosttests/test-apps/DownloadManagerTestApp/src/com/android/frameworks/downloadmanagertests/DownloadManagerTestApp.java b/core/tests/hosttests/test-apps/DownloadManagerTestApp/src/com/android/frameworks/downloadmanagertests/DownloadManagerTestApp.java index ef48a18b0bf87..bcf2e45d5bb2a 100644 --- a/core/tests/hosttests/test-apps/DownloadManagerTestApp/src/com/android/frameworks/downloadmanagertests/DownloadManagerTestApp.java +++ b/core/tests/hosttests/test-apps/DownloadManagerTestApp/src/com/android/frameworks/downloadmanagertests/DownloadManagerTestApp.java @@ -40,6 +40,9 @@ public class DownloadManagerTestApp extends DownloadManagerBaseTest { protected static final String DOWNLOAD_FILENAME = "External93mb.apk"; protected static final long DOWNLOAD_FILESIZE = 95251708; + // Wait until download manager actually start downloading something + // Will wait for 1 MB to be downloaded. + private static final long EXPECTED_PROGRESS = 1024 * 1024; private static final String FILE_CONCURRENT_DOWNLOAD_FILE_PREFIX = "file"; private static final String FILE_CONCURRENT_DOWNLOAD_FILE_EXTENSION = ".bin"; @@ -284,7 +287,7 @@ public class DownloadManagerTestApp extends DownloadManagerBaseTest { dlRequest = mDownloadManager.enqueue(request); waitForDownloadToStart(dlRequest); // make sure we're starting to download some data... - waitToReceiveData(dlRequest); + waitToReceiveData(dlRequest, EXPECTED_PROGRESS); // download disable setWiFiStateOn(false); @@ -292,27 +295,29 @@ public class DownloadManagerTestApp extends DownloadManagerBaseTest { // download disable Log.i(LOG_TAG, "Turning on airplane mode..."); setAirplaneModeOn(true); - Thread.sleep(30 * 1000); // wait 30 secs + Thread.sleep(5 * 1000); // wait 5 secs // download disable setWiFiStateOn(true); - Thread.sleep(30 * 1000); // wait 30 secs + Thread.sleep(5 * 1000); // wait 5 secs + waitToReceiveData(dlRequest, EXPECTED_PROGRESS); // download enable Log.i(LOG_TAG, "Turning off airplane mode..."); setAirplaneModeOn(false); Thread.sleep(5 * 1000); // wait 5 seconds + waitToReceiveData(dlRequest, EXPECTED_PROGRESS); // download disable Log.i(LOG_TAG, "Turning off WiFi..."); setWiFiStateOn(false); - Thread.sleep(30 * 1000); // wait 30 secs + Thread.sleep(5 * 1000); // wait 5 secs // finally, turn WiFi back on and finish up the download Log.i(LOG_TAG, "Turning on WiFi..."); setWiFiStateOn(true); - Log.i(LOG_TAG, "Waiting up to 3 minutes for download to complete..."); - assertTrue(waitForDownload(dlRequest, 3 * 60 * 1000)); + Log.i(LOG_TAG, "Waiting up to 10 minutes for download to complete..."); + assertTrue(waitForDownload(dlRequest, 10 * 60 * 1000)); ParcelFileDescriptor pfd = mDownloadManager.openDownloadedFile(dlRequest); verifyFileSize(pfd, filesize); } finally { @@ -358,7 +363,7 @@ public class DownloadManagerTestApp extends DownloadManagerBaseTest { dlRequest = mDownloadManager.enqueue(request); waitForDownloadToStart(dlRequest); // are we making any progress? - waitToReceiveData(dlRequest); + waitToReceiveData(dlRequest, EXPECTED_PROGRESS); // download disable Log.i(LOG_TAG, "Turning off WiFi..."); @@ -368,7 +373,7 @@ public class DownloadManagerTestApp extends DownloadManagerBaseTest { // enable download... Log.i(LOG_TAG, "Turning on WiFi again..."); setWiFiStateOn(true); - waitToReceiveData(dlRequest); + waitToReceiveData(dlRequest, EXPECTED_PROGRESS); // download disable Log.i(LOG_TAG, "Turning off WiFi..."); @@ -379,8 +384,8 @@ public class DownloadManagerTestApp extends DownloadManagerBaseTest { Log.i(LOG_TAG, "Turning on WiFi again..."); setWiFiStateOn(true); - Log.i(LOG_TAG, "Waiting up to 3 minutes for download to complete..."); - assertTrue(waitForDownload(dlRequest, 3 * 60 * 1000)); + Log.i(LOG_TAG, "Waiting up to 10 minutes for download to complete..."); + assertTrue(waitForDownload(dlRequest, 10 * 60 * 1000)); ParcelFileDescriptor pfd = mDownloadManager.openDownloadedFile(dlRequest); verifyFileSize(pfd, filesize); } finally { @@ -428,7 +433,7 @@ public class DownloadManagerTestApp extends DownloadManagerBaseTest { dlRequest = mDownloadManager.enqueue(request); waitForDownloadToStart(dlRequest); // are we making any progress? - waitToReceiveData(dlRequest); + waitToReceiveData(dlRequest, EXPECTED_PROGRESS); // download disable Log.i(LOG_TAG, "Turning on Airplane mode..."); @@ -439,7 +444,7 @@ public class DownloadManagerTestApp extends DownloadManagerBaseTest { Log.i(LOG_TAG, "Turning off Airplane mode..."); setAirplaneModeOn(false); // make sure we're starting to download some data... - waitToReceiveData(dlRequest); + waitToReceiveData(dlRequest, EXPECTED_PROGRESS); // reenable the connection to start up the download again Log.i(LOG_TAG, "Turning on Airplane mode again..."); @@ -450,8 +455,8 @@ public class DownloadManagerTestApp extends DownloadManagerBaseTest { Log.i(LOG_TAG, "Turning off Airplane mode again..."); setAirplaneModeOn(false); - Log.i(LOG_TAG, "Waiting up to 3 minutes for donwload to complete..."); - assertTrue(waitForDownload(dlRequest, 180 * 1000)); // wait up to 3 mins before timeout + Log.i(LOG_TAG, "Waiting up to 10 minutes for donwload to complete..."); + assertTrue(waitForDownload(dlRequest, 10 * 60 * 1000)); // wait up to 10 mins ParcelFileDescriptor pfd = mDownloadManager.openDownloadedFile(dlRequest); verifyFileSize(pfd, filesize); } finally {