Merge "Fix flakiness DocumentLoader#testCancelTask." into nyc-dev

am: 6b34b31

* commit '6b34b31059fbe21ed947c0213df56e04f6098f59':
  Fix flakiness DocumentLoader#testCancelTask.

Change-Id: Ic9319e8386285afc3ea20350a2d244a917f77812
This commit is contained in:
Daichi Hirono
2016-04-12 04:05:19 +00:00
committed by android-build-merger
2 changed files with 15 additions and 9 deletions

View File

@@ -196,9 +196,10 @@ class DocumentLoader implements AutoCloseable {
}
task.loadObjectInfoList(NUM_LOADING_ENTRIES);
final boolean shouldNotify =
task.mLastNotified.getTime() <
new Date().getTime() - NOTIFY_PERIOD_MS ||
task.getState() != LoaderTask.STATE_LOADING;
task.getState() != LoaderTask.STATE_CANCELLED &&
(task.mLastNotified.getTime() <
new Date().getTime() - NOTIFY_PERIOD_MS ||
task.getState() != LoaderTask.STATE_LOADING);
if (shouldNotify) {
task.notify(mResolver);
}

View File

@@ -143,9 +143,9 @@ public class DocumentLoaderTest extends AndroidTestCase {
}
}
public void testCancelTask() throws IOException, InterruptedException {
public void testCancelTask() throws IOException, InterruptedException, TimeoutException {
setUpDocument(mManager,
DocumentLoader.NUM_INITIAL_ENTRIES + DocumentLoader.NUM_LOADING_ENTRIES + 1);
DocumentLoader.NUM_INITIAL_ENTRIES + 1);
// Block the first iteration in the background thread.
mManager.blockDocument(
@@ -155,19 +155,24 @@ public class DocumentLoaderTest extends AndroidTestCase {
MtpDocumentsProvider.DEFAULT_DOCUMENT_PROJECTION, mParentIdentifier)) {
assertTrue(cursor.getExtras().getBoolean(DocumentsContract.EXTRA_LOADING));
}
Thread.sleep(DocumentLoader.NOTIFY_PERIOD_MS);
final Uri uri = DocumentsContract.buildChildDocumentsUri(
MtpDocumentsProvider.AUTHORITY, mParentIdentifier.mDocumentId);
assertEquals(0, mResolver.getChangeCount(uri));
// Clear task while the first iteration is being blocked.
mLoader.cancelTask(mParentIdentifier);
mManager.unblockDocument(
0, DocumentLoader.NUM_INITIAL_ENTRIES + 1);
mLoader.cancelTask(mParentIdentifier);
Thread.sleep(DocumentLoader.NOTIFY_PERIOD_MS * 2);
Thread.sleep(DocumentLoader.NOTIFY_PERIOD_MS);
assertEquals(0, mResolver.getChangeCount(uri));
// Check if it's OK to query invalidated task.
try (final Cursor cursor = mLoader.queryChildDocuments(
MtpDocumentsProvider.DEFAULT_DOCUMENT_PROJECTION, mParentIdentifier)) {
assertTrue(cursor.getExtras().getBoolean(DocumentsContract.EXTRA_LOADING));
}
mResolver.waitForNotification(uri, 1);
}
private void setUpLoader() {