Search in sources :

Example 41 with Query

use of android.app.DownloadManager.Query in project android_frameworks_base by ParanoidAndroid.

the class DownloadManagerStressTest method testMultipleDownloads.

/**
     * Attempts to download several files simultaneously
     */
@LargeTest
public void testMultipleDownloads() throws Exception {
    // need to be sure all current downloads have stopped first
    removeAllCurrentDownloads();
    int NUM_FILES = 10;
    // 10 kb
    int MAX_FILE_SIZE = 10 * 1024;
    Random r = new LoggingRng();
    for (int i = 0; i < NUM_FILES; ++i) {
        int size = r.nextInt(MAX_FILE_SIZE);
        byte[] blobData = generateData(size, DataType.TEXT);
        Uri uri = getServerUri(DEFAULT_FILENAME + i);
        Request request = new Request(uri);
        request.setTitle(String.format("%s--%d", DEFAULT_FILENAME + i, i));
        // Prepare the mock server with a standard response
        enqueueResponse(buildResponse(HTTP_OK, blobData));
        long requestID = mDownloadManager.enqueue(request);
    }
    waitForDownloadsOrTimeout(WAIT_FOR_DOWNLOAD_POLL_TIME, MAX_WAIT_FOR_DOWNLOAD_TIME);
    Cursor cursor = mDownloadManager.query(new Query());
    try {
        assertEquals(NUM_FILES, cursor.getCount());
        if (cursor.moveToFirst()) {
            do {
                int status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS));
                String filename = cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_URI));
                String errorString = String.format("File %s failed to download successfully. Status code: %d", filename, status);
                assertEquals(errorString, DownloadManager.STATUS_SUCCESSFUL, status);
            } while (cursor.moveToNext());
        }
        assertEquals(NUM_FILES, mReceiver.numDownloadsCompleted());
    } finally {
        cursor.close();
    }
}
Also used : Random(java.util.Random) Query(android.app.DownloadManager.Query) Request(android.app.DownloadManager.Request) Cursor(android.database.Cursor) Uri(android.net.Uri) LargeTest(android.test.suitebuilder.annotation.LargeTest)

Example 42 with Query

use of android.app.DownloadManager.Query in project android_frameworks_base by ParanoidAndroid.

the class DownloadManagerBaseTest method getCursor.

/**
     * Performs a query based on ID and returns a Cursor for the query.
     *
     * @param id The id of the download in DL Manager; pass -1 to query all downloads
     * @return A cursor for the query results
     */
protected Cursor getCursor(long id) throws Exception {
    Query query = new Query();
    if (id != -1) {
        query.setFilterById(id);
    }
    Cursor cursor = mDownloadManager.query(query);
    int currentWaitTime = 0;
    try {
        while (!cursor.moveToFirst()) {
            Thread.sleep(DEFAULT_WAIT_POLL_TIME);
            currentWaitTime += DEFAULT_WAIT_POLL_TIME;
            if (currentWaitTime > DEFAULT_MAX_WAIT_TIME) {
                fail("timed out waiting for a non-null query result");
            }
            cursor.requery();
        }
    } catch (Exception e) {
        cursor.close();
        throw e;
    }
    return cursor;
}
Also used : Query(android.app.DownloadManager.Query) Cursor(android.database.Cursor) TimeoutException(java.util.concurrent.TimeoutException) IOException(java.io.IOException) FileNotFoundException(java.io.FileNotFoundException)

Example 43 with Query

use of android.app.DownloadManager.Query in project android_frameworks_base by ParanoidAndroid.

the class DownloadManagerFunctionalTest method testRemoveDownload.

/**
     * Tests that we can remove a download from the download manager.
     */
@LargeTest
public void testRemoveDownload() throws Exception {
    int fileSize = 1024;
    byte[] blobData = generateData(fileSize, DataType.BINARY);
    long dlRequest = doBasicDownload(blobData, DOWNLOAD_TO_DOWNLOAD_CACHE_DIR);
    Cursor cursor = mDownloadManager.query(new Query().setFilterById(dlRequest));
    try {
        assertEquals("The count of downloads with this ID is not 1!", 1, cursor.getCount());
        mDownloadManager.remove(dlRequest);
        cursor.requery();
        assertEquals("The count of downloads with this ID is not 0!", 0, cursor.getCount());
    } finally {
        cursor.close();
    }
}
Also used : Query(android.app.DownloadManager.Query) Cursor(android.database.Cursor) LargeTest(android.test.suitebuilder.annotation.LargeTest)

Example 44 with Query

use of android.app.DownloadManager.Query in project android_frameworks_base by ParanoidAndroid.

the class DownloadManagerFunctionalTest method verifyDownload.

/**
     * Helper to verify a standard single-file download from the mock server, and clean up after
     * verification
     *
     * Note that this also calls the Download manager's remove, which cleans up the file from cache.
     *
     * @param requestId The id of the download to remove
     * @param fileData The data to verify the file contains
     */
private void verifyDownload(long requestId, byte[] fileData) throws Exception {
    int fileSize = fileData.length;
    ParcelFileDescriptor pfd = mDownloadManager.openDownloadedFile(requestId);
    Cursor cursor = mDownloadManager.query(new Query().setFilterById(requestId));
    try {
        assertEquals(1, cursor.getCount());
        assertTrue(cursor.moveToFirst());
        verifyFileSize(pfd, fileSize);
        verifyFileContents(pfd, fileData);
        int colIndex = cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME);
        String fileName = cursor.getString(colIndex);
        assertTrue(fileName.startsWith(CACHE_DIR));
    } finally {
        pfd.close();
        cursor.close();
    }
}
Also used : Query(android.app.DownloadManager.Query) ParcelFileDescriptor(android.os.ParcelFileDescriptor) Cursor(android.database.Cursor)

Example 45 with Query

use of android.app.DownloadManager.Query in project android_frameworks_base by ParanoidAndroid.

the class DownloadManagerBaseTest method getCursor.

/**
     * Performs a query based on ID and returns a Cursor for the query.
     *
     * @param id The id of the download in DL Manager; pass -1 to query all downloads
     * @return A cursor for the query results
     */
protected Cursor getCursor(long id) throws Exception {
    Query query = new Query();
    if (id != -1) {
        query.setFilterById(id);
    }
    Cursor cursor = mDownloadManager.query(query);
    int currentWaitTime = 0;
    try {
        while (!cursor.moveToFirst()) {
            Thread.sleep(DEFAULT_WAIT_POLL_TIME);
            currentWaitTime += DEFAULT_WAIT_POLL_TIME;
            if (currentWaitTime > DEFAULT_MAX_WAIT_TIME) {
                fail("timed out waiting for a non-null query result");
            }
            cursor.requery();
        }
    } catch (Exception e) {
        cursor.close();
        throw e;
    }
    return cursor;
}
Also used : Query(android.app.DownloadManager.Query) Cursor(android.database.Cursor) TimeoutException(java.util.concurrent.TimeoutException)

Aggregations

Query (android.app.DownloadManager.Query)76 Cursor (android.database.Cursor)76 DownloadManager (android.app.DownloadManager)15 ArrayList (java.util.ArrayList)13 ParcelFileDescriptor (android.os.ParcelFileDescriptor)12 LargeTest (android.test.suitebuilder.annotation.LargeTest)12 TimeoutException (java.util.concurrent.TimeoutException)12 File (java.io.File)11 IOException (java.io.IOException)7 Request (android.app.DownloadManager.Request)6 Uri (android.net.Uri)6 FileNotFoundException (java.io.FileNotFoundException)6 Random (java.util.Random)6