summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/src/com/android/providers/downloads/AbstractDownloadManagerFunctionalTest.java7
-rw-r--r--tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java64
2 files changed, 48 insertions, 23 deletions
diff --git a/tests/src/com/android/providers/downloads/AbstractDownloadManagerFunctionalTest.java b/tests/src/com/android/providers/downloads/AbstractDownloadManagerFunctionalTest.java
index 9e7ef0f9..3e4bccc3 100644
--- a/tests/src/com/android/providers/downloads/AbstractDownloadManagerFunctionalTest.java
+++ b/tests/src/com/android/providers/downloads/AbstractDownloadManagerFunctionalTest.java
@@ -49,7 +49,7 @@ public abstract class AbstractDownloadManagerFunctionalTest extends
protected static final String LOG_TAG = "DownloadManagerFunctionalTest";
private static final String PROVIDER_AUTHORITY = "downloads";
protected static final long RETRY_DELAY_MILLIS = 61 * 1000;
- protected static final String FILE_CONTENT = "hello world";
+ protected static final String FILE_CONTENT = "hello world hello world hello world hello world";
protected static final int HTTP_OK = 200;
protected static final int HTTP_PARTIAL_CONTENT = 206;
protected static final int HTTP_NOT_FOUND = 404;
@@ -209,8 +209,9 @@ public abstract class AbstractDownloadManagerFunctionalTest extends
MockResponse enqueueResponse(int status, String body) {
MockResponse response = new MockResponse()
.setResponseCode(status)
- .setBody(body);
- response.addHeader("Content-type", "text/plain");
+ .setBody(body)
+ .addHeader("Content-type", "text/plain")
+ .setCloseConnectionAfter(true);
mServer.enqueue(response);
return response;
}
diff --git a/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java b/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java
index c1a015af..d33e458d 100644
--- a/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java
+++ b/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java
@@ -102,7 +102,7 @@ public class PublicApiFunctionalTest extends AbstractPublicApiTest {
assertEquals(mSystemFacade.currentTimeMillis(),
download.getLongField(DownloadManager.COLUMN_LAST_MODIFIED_TIMESTAMP));
- assertEquals(FILE_CONTENT, download.getContents());
+ checkCompleteDownload(download);
}
public void testTitleAndDescription() throws Exception {
@@ -138,9 +138,7 @@ public class PublicApiFunctionalTest extends AbstractPublicApiTest {
mSystemFacade.incrementTimeMillis(RETRY_DELAY_MILLIS);
download.runUntilStatus(DownloadManager.STATUS_SUCCESSFUL);
- assertEquals(FILE_CONTENT.length(),
- download.getLongField(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR));
- assertEquals(FILE_CONTENT, download.getContents());
+ checkCompleteDownload(download);
List<String> headers = takeRequest().getHeaders();
assertTrue("No Range header: " + headers,
@@ -150,30 +148,32 @@ public class PublicApiFunctionalTest extends AbstractPublicApiTest {
public void testInterruptedExternalDownload() throws Exception {
enqueueInterruptedDownloadResponses(5);
- Uri destination = getExternalUri();
- Download download = enqueueRequest(getRequest().setDestinationUri(destination));
+ Download download = enqueueRequest(getRequest().setDestinationUri(getExternalUri()));
download.runUntilStatus(DownloadManager.STATUS_PAUSED);
mSystemFacade.incrementTimeMillis(RETRY_DELAY_MILLIS);
download.runUntilStatus(DownloadManager.STATUS_SUCCESSFUL);
- assertEquals(FILE_CONTENT, download.getContents());
+ checkCompleteDownload(download);
}
private void enqueueInterruptedDownloadResponses(int initialLength) {
- int totalLength = FILE_CONTENT.length();
// the first response has normal headers but unexpectedly closes after initialLength bytes
- enqueuePartialResponse(initialLength);
+ enqueuePartialResponse(0, initialLength);
// the second response returns partial content for the rest of the data
- enqueueResponse(HTTP_PARTIAL_CONTENT, FILE_CONTENT.substring(initialLength))
- .addHeader("Content-range",
- "bytes " + initialLength + "-" + totalLength + "/" + totalLength)
- .addHeader("Etag", ETAG);
+ enqueuePartialResponse(initialLength, FILE_CONTENT.length());
}
- private MockResponse enqueuePartialResponse(int initialLength) {
- return enqueueResponse(HTTP_OK, FILE_CONTENT.substring(0, initialLength))
- .addHeader("Content-length", FILE_CONTENT.length())
- .addHeader("Etag", ETAG)
- .setCloseConnectionAfter(true);
+ private MockResponse enqueuePartialResponse(int start, int end) {
+ int totalLength = FILE_CONTENT.length();
+ boolean isFirstResponse = (start == 0);
+ int status = isFirstResponse ? HTTP_OK : HTTP_PARTIAL_CONTENT;
+ MockResponse response = enqueueResponse(status, FILE_CONTENT.substring(start, end))
+ .addHeader("Content-length", totalLength)
+ .addHeader("Etag", ETAG);
+ if (!isFirstResponse) {
+ response.addHeader("Content-range",
+ "bytes " + start + "-" + totalLength + "/" + totalLength);
+ }
+ return response;
}
public void testFiltering() throws Exception {
@@ -304,7 +304,7 @@ public class PublicApiFunctionalTest extends AbstractPublicApiTest {
}
public void testNoEtag() throws Exception {
- enqueuePartialResponse(5).removeHeader("Etag");
+ enqueuePartialResponse(0, 5).removeHeader("Etag");
runSimpleFailureTest(HTTP_LENGTH_REQUIRED);
}
@@ -334,7 +334,7 @@ public class PublicApiFunctionalTest extends AbstractPublicApiTest {
}
public void testCancel() throws Exception {
- enqueuePartialResponse(5);
+ enqueuePartialResponse(0, 5);
Download download = enqueueRequest(getRequest());
download.runUntilStatus(DownloadManager.STATUS_PAUSED);
@@ -463,6 +463,30 @@ public class PublicApiFunctionalTest extends AbstractPublicApiTest {
download.runUntilStatus(DownloadManager.STATUS_SUCCESSFUL);
}
+ public void testManyInterruptions() throws Exception {
+ int bytesPerResponse = 1;
+ int start = 0;
+
+ Download download = enqueueRequest(getRequest());
+ while (start + bytesPerResponse < FILE_CONTENT.length()) {
+ enqueuePartialResponse(start, start + bytesPerResponse);
+ download.runUntilStatus(DownloadManager.STATUS_PAUSED);
+ takeRequest();
+ start += bytesPerResponse;
+ mSystemFacade.incrementTimeMillis(RETRY_DELAY_MILLIS);
+ }
+
+ enqueuePartialResponse(start, FILE_CONTENT.length());
+ download.runUntilStatus(DownloadManager.STATUS_SUCCESSFUL);
+ checkCompleteDownload(download);
+ }
+
+ private void checkCompleteDownload(Download download) throws Exception {
+ assertEquals(FILE_CONTENT.length(),
+ download.getLongField(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR));
+ assertEquals(FILE_CONTENT, download.getContents());
+ }
+
private void runSimpleFailureTest(int expectedErrorCode) throws Exception {
Download download = enqueueRequest(getRequest());
download.runUntilStatus(DownloadManager.STATUS_FAILED);