diff options
author | Makoto Onuki <omakoto@google.com> | 2017-01-11 17:37:20 -0800 |
---|---|---|
committer | Makoto Onuki <omakoto@google.com> | 2017-01-17 15:37:12 -0800 |
commit | 5358da6ad10305f9359373ec3cc876a09d8d4e92 (patch) | |
tree | 318a2dfda193463d15b69504215639b8bb1ca6be /tests | |
parent | a4ae2c38359a9732138a13569392a431549735cd (diff) | |
download | ContactsProvider-5358da6ad10305f9359373ec3cc876a09d8d4e92.tar.gz |
Add ProviderStatus.DATABASE_CREATION_TIMESTAMP
Also stop sending CONTACTS_DATABASE_CREATED
Test: adb shell am instrument -w -e size small com.android.providers.contacts.tests
Test: adb shell am instrument -w -e size medium com.android.providers.contacts.tests
Test: adb shell am instrument -w -e size large com.android.providers.contacts.tests
Bug 33390320
Change-Id: I135fc66aee70d31d0547aa3e8bbcbf3f7ccf514f
Diffstat (limited to 'tests')
3 files changed, 102 insertions, 1 deletions
diff --git a/tests/src/com/android/providers/contacts/ContactsDatabaseHelperTest.java b/tests/src/com/android/providers/contacts/ContactsDatabaseHelperTest.java index e0b5ea58..a9751e5f 100644 --- a/tests/src/com/android/providers/contacts/ContactsDatabaseHelperTest.java +++ b/tests/src/com/android/providers/contacts/ContactsDatabaseHelperTest.java @@ -17,13 +17,19 @@ package com.android.providers.contacts; import android.content.ContentValues; +import android.database.ContentObserver; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; +import android.net.Uri; +import android.os.Handler; +import android.os.Looper; import android.provider.ContactsContract; +import android.provider.ContactsContract.ProviderStatus; import android.provider.ContactsContract.RawContacts; import android.test.MoreAsserts; import android.test.suitebuilder.annotation.LargeTest; import android.test.suitebuilder.annotation.SmallTest; +import android.util.Log; import com.android.providers.contacts.ContactsDatabaseHelper.LowRes; import com.android.providers.contacts.ContactsDatabaseHelper.MimetypesColumns; @@ -33,9 +39,14 @@ import com.google.android.collect.Sets; import java.util.HashSet; import java.util.Set; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicReference; @SmallTest public class ContactsDatabaseHelperTest extends BaseContactsProvider2Test { + private static final String TAG = "ContactsDHT"; + private ContactsDatabaseHelper mDbHelper; private SQLiteDatabase mDb; @@ -485,4 +496,87 @@ public class ContactsDatabaseHelperTest extends BaseContactsProvider2Test { assertEquals((Object) (86400 * i), checkGetLastTimeUsedExpression(86400 * i + 86399)); } } + + public void testNotifyProviderStatusChange() throws Exception { + final AtomicReference<Uri> calledUri = new AtomicReference<>(); + + final Handler h = new Handler(Looper.getMainLooper()); + + final CountDownLatch latch = new CountDownLatch(1); + + final ContentObserver observer = new ContentObserver(h) { + @Override + public void onChange(boolean selfChange, Uri uri) { + calledUri.set(uri); + latch.countDown(); + } + }; + + // Notify on ProviderStatus.CONTENT_URI. + getContext().getContentResolver().registerContentObserver( + ProviderStatus.CONTENT_URI, + /* notifyForDescendants= */ false, observer); + + // This should trigger it. + calledUri.set(null); + ContactsDatabaseHelper.notifyProviderStatusChange(getContext()); + + assertTrue(latch.await(30, TimeUnit.SECONDS)); + assertEquals(ProviderStatus.CONTENT_URI, calledUri.get()); + } + + public void testNotifyProviderStatusChange_alternate() throws Exception { + final AtomicReference<Uri> calledUri = new AtomicReference<>(); + + final Handler h = new Handler(Looper.getMainLooper()); + + final CountDownLatch latch = new CountDownLatch(1); + + final ContentObserver observer = new ContentObserver(h) { + @Override + public void onChange(boolean selfChange, Uri uri) { + calledUri.set(uri); + latch.countDown(); + } + }; + + // Notify on ProviderStatus.CONTENT_URI. + getContext().getContentResolver().registerContentObserver( + ProviderStatus.STATUS_CHANGE_NOTIFICATION_CONTENT_URI, + /* notifyForDescendants= */ false, observer); + + // This should trigger it. + calledUri.set(null); + ContactsDatabaseHelper.notifyProviderStatusChange(getContext()); + + assertTrue(latch.await(30, TimeUnit.SECONDS)); + assertEquals(ProviderStatus.STATUS_CHANGE_NOTIFICATION_CONTENT_URI, calledUri.get()); + } + + public void testOpenTimestamp() { + final long startTime = System.currentTimeMillis(); + + final String dbFilename = "testOpenTimestamp.db"; + + getContext().deleteDatabase(dbFilename); + + final ContactsDatabaseHelper dbHelper = ContactsDatabaseHelper.getNewInstanceForTest( + mContext, dbFilename); + + dbHelper.getReadableDatabase(); // Open the DB. + + final long creationTime = dbHelper.getDatabaseCreationTime(); + + assertTrue("Expected " + creationTime + " >= " + startTime, creationTime >= startTime); + + dbHelper.close(); + + // Open again. + final ContactsDatabaseHelper dbHelper2 = ContactsDatabaseHelper.getNewInstanceForTest( + mContext, dbFilename); + + dbHelper2.getReadableDatabase(); // Open the DB. + + assertEquals(creationTime, dbHelper2.getDatabaseCreationTime()); + } } diff --git a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java index 932e862c..930a8fa8 100644 --- a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java +++ b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java @@ -947,6 +947,13 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test { }); } + public void testProviderStatusProjection() { + assertProjection(ProviderStatus.CONTENT_URI, new String[]{ + ProviderStatus.STATUS, + ProviderStatus.DATABASE_CREATION_TIMESTAMP, + }); + } + public void testRawContactsInsert() { ContentValues values = new ContentValues(); diff --git a/tests/src/com/android/providers/contacts/TestUtils.java b/tests/src/com/android/providers/contacts/TestUtils.java index 4d1f2d67..322e5b46 100644 --- a/tests/src/com/android/providers/contacts/TestUtils.java +++ b/tests/src/com/android/providers/contacts/TestUtils.java @@ -52,7 +52,7 @@ public class TestUtils { * we'll switch to file-based DBs, so we can call {@link #createDatabaseSnapshot} * , pull the snapshot DBs and take a look at them. */ - public static final boolean ENABLE_DATABASE_SNAPSHOT = true; // DO NOT SUBMIT WITH TRUE. + public static final boolean ENABLE_DATABASE_SNAPSHOT = false; // DO NOT SUBMIT WITH TRUE. private static final Object sDatabasePathLock = new Object(); private static File sDatabasePath = null; |