summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2019-08-29 11:22:06 -0600
committerJeff Sharkey <jsharkey@android.com>2019-08-29 11:27:58 -0600
commit344285d87eea6653ddae19414ab3bb14832860d4 (patch)
treec16b251a131cd9d1844a9bf75386bf56e9e81edb
parentc020083ba64a56f8cfed68bea4e48e377b7691f2 (diff)
downloadCalendarProvider-344285d87eea6653ddae19414ab3bb14832860d4.tar.gz
Ignore broken tests, fix flaky tests.
Filed follow-up bug to track re-enabling broken tests. Flaky tests were result of singleton race condition during start-up, so always create CalendarSanityChecker as strong part of CalendarProvider2. Bug: 139358215 Test: atest --test-mapping packages/providers/CalendarProvider Change-Id: I2bb480a0ee5b3cd21debe33f078b260b9337f927
-rw-r--r--src/com/android/providers/calendar/CalendarAlarmManager.java2
-rw-r--r--src/com/android/providers/calendar/CalendarProvider2.java10
-rw-r--r--src/com/android/providers/calendar/CalendarSanityChecker.java16
-rw-r--r--tests/src/com/android/providers/calendar/CalendarDatabaseHelperTest.java31
-rw-r--r--tests/src/com/android/providers/calendar/CalendarProvider2Test.java29
5 files changed, 55 insertions, 33 deletions
diff --git a/src/com/android/providers/calendar/CalendarAlarmManager.java b/src/com/android/providers/calendar/CalendarAlarmManager.java
index d75ea9e..1c39be6 100644
--- a/src/com/android/providers/calendar/CalendarAlarmManager.java
+++ b/src/com/android/providers/calendar/CalendarAlarmManager.java
@@ -249,7 +249,7 @@ public class CalendarAlarmManager {
* @param cp2 TODO
*/
private void scheduleNextAlarmLocked(SQLiteDatabase db, CalendarProvider2 cp2) {
- CalendarSanityChecker.getInstance(mContext).updateLastCheckTime();
+ cp2.mSanityChecker.updateLastCheckTime();
Time time = new Time();
diff --git a/src/com/android/providers/calendar/CalendarProvider2.java b/src/com/android/providers/calendar/CalendarProvider2.java
index 4a6bd22..e439f3a 100644
--- a/src/com/android/providers/calendar/CalendarProvider2.java
+++ b/src/com/android/providers/calendar/CalendarProvider2.java
@@ -189,6 +189,7 @@ public class CalendarProvider2 extends SQLiteContentProvider implements OnAccoun
*/
MetaData mMetaData;
CalendarCache mCalendarCache;
+ CalendarSanityChecker mSanityChecker;
private CalendarDatabaseHelper mDbHelper;
private CalendarInstancesHelper mInstancesHelper;
@@ -529,6 +530,7 @@ public class CalendarProvider2 extends SQLiteContentProvider implements OnAccoun
mMetaData = new MetaData(mDbHelper);
mInstancesHelper = new CalendarInstancesHelper(mDbHelper, mMetaData);
+ mSanityChecker = new CalendarSanityChecker(mContext);
// Register for Intent broadcasts
IntentFilter filter = new IntentFilter();
@@ -851,7 +853,7 @@ public class CalendarProvider2 extends SQLiteContentProvider implements OnAccoun
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
String sortOrder) {
- CalendarSanityChecker.getInstance(mContext).checkLastCheckTime();
+ mSanityChecker.checkLastCheckTime();
// Note don't use mCallingUid here. That's only used by mutation functions.
final int callingUid = Binder.getCallingUid();
@@ -2325,7 +2327,7 @@ public class CalendarProvider2 extends SQLiteContentProvider implements OnAccoun
if (Log.isLoggable(TAG, Log.VERBOSE)) {
Log.v(TAG, "insertInTransaction: " + uri);
}
- CalendarSanityChecker.getInstance(mContext).checkLastCheckTime();
+ mSanityChecker.checkLastCheckTime();
validateUriParameters(uri.getQueryParameterNames());
final int match = sUriMatcher.match(uri);
@@ -3315,7 +3317,7 @@ public class CalendarProvider2 extends SQLiteContentProvider implements OnAccoun
if (Log.isLoggable(TAG, Log.VERBOSE)) {
Log.v(TAG, "deleteInTransaction: " + uri);
}
- CalendarSanityChecker.getInstance(mContext).checkLastCheckTime();
+ mSanityChecker.checkLastCheckTime();
validateUriParameters(uri.getQueryParameterNames());
final int match = sUriMatcher.match(uri);
@@ -4194,7 +4196,7 @@ public class CalendarProvider2 extends SQLiteContentProvider implements OnAccoun
if (Log.isLoggable(TAG, Log.VERBOSE)) {
Log.v(TAG, "updateInTransaction: " + uri);
}
- CalendarSanityChecker.getInstance(mContext).checkLastCheckTime();
+ mSanityChecker.checkLastCheckTime();
validateUriParameters(uri.getQueryParameterNames());
final int match = sUriMatcher.match(uri);
diff --git a/src/com/android/providers/calendar/CalendarSanityChecker.java b/src/com/android/providers/calendar/CalendarSanityChecker.java
index 19cb5b1..ce7b62a 100644
--- a/src/com/android/providers/calendar/CalendarSanityChecker.java
+++ b/src/com/android/providers/calendar/CalendarSanityChecker.java
@@ -16,14 +16,10 @@
package com.android.providers.calendar;
-import android.annotation.Nullable;
-import android.content.ContentProvider;
import android.content.Context;
-import android.content.IContentProvider;
import android.content.SharedPreferences;
import android.os.SystemClock;
import android.os.UserManager;
-import android.provider.CalendarContract;
import android.provider.Settings;
import android.provider.Settings.Global;
import android.text.format.DateUtils;
@@ -64,7 +60,6 @@ public class CalendarSanityChecker {
private static final String LAST_CHECK_BOOT_COUNT_PREF_KEY = "last_check_boot_count";
private static final String LAST_WTF_REALTIME_PREF_KEY = "last_wtf_realtime";
- private static CalendarSanityChecker sInstance;
private final Context mContext;
private final Object mLock = new Object();
@@ -73,7 +68,7 @@ public class CalendarSanityChecker {
@VisibleForTesting
final SharedPreferences mPrefs;
- protected CalendarSanityChecker(Context context) {
+ public CalendarSanityChecker(Context context) {
mContext = context;
mPrefs = mContext.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
}
@@ -90,7 +85,7 @@ public class CalendarSanityChecker {
@VisibleForTesting
protected long getUserUnlockTime() {
- final UserManager um = mContext.getSystemService(UserManager.class);
+ final UserManager um = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
final long startTime = um.getUserStartRealtime();
final long unlockTime = um.getUserUnlockRealtime();
if (DEBUG) {
@@ -99,13 +94,6 @@ public class CalendarSanityChecker {
return unlockTime;
}
- public static synchronized CalendarSanityChecker getInstance(Context context) {
- if (sInstance == null) {
- sInstance = new CalendarSanityChecker(context);
- }
- return sInstance;
- }
-
/**
* Called by {@link CalendarAlarmManager#scheduleNextAlarmLocked}
*/
diff --git a/tests/src/com/android/providers/calendar/CalendarDatabaseHelperTest.java b/tests/src/com/android/providers/calendar/CalendarDatabaseHelperTest.java
index 79c84e8..a2925d4 100644
--- a/tests/src/com/android/providers/calendar/CalendarDatabaseHelperTest.java
+++ b/tests/src/com/android/providers/calendar/CalendarDatabaseHelperTest.java
@@ -13,24 +13,34 @@
* See the License for the specific language governing permissions and
* limitations under the License
*/
-package com.android.providers.calendar;
+package com.android.providers.calendar;
-import com.android.common.content.SyncStateContentProviderHelper;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
import android.database.Cursor;
import android.database.DatabaseUtils;
import android.database.sqlite.SQLiteDatabase;
import android.test.mock.MockContext;
-import android.test.suitebuilder.annotation.MediumTest;
import android.text.TextUtils;
import android.util.Log;
-import java.util.Arrays;
+import androidx.test.runner.AndroidJUnit4;
-import junit.framework.TestCase;
+import com.android.common.content.SyncStateContentProviderHelper;
+
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.Arrays;
-public class CalendarDatabaseHelperTest extends TestCase {
+@RunWith(AndroidJUnit4.class)
+public class CalendarDatabaseHelperTest {
private static final String TAG = "CDbHelperTest";
private SQLiteDatabase mBadDb;
@@ -38,7 +48,7 @@ public class CalendarDatabaseHelperTest extends TestCase {
private DatabaseUtils.InsertHelper mBadEventsInserter;
private DatabaseUtils.InsertHelper mGoodEventsInserter;
- @Override
+ @Before
public void setUp() {
mBadDb = SQLiteDatabase.create(null);
assertNotNull(mBadDb);
@@ -386,7 +396,7 @@ public class CalendarDatabaseHelperTest extends TestCase {
assertEquals(mGoodDb.rawQuery("SELECT _id FROM Events;", null).getCount(), 2);
}
- @MediumTest
+ @Test
public void testUpgradeToVersion69() {
// Create event tables
createVersion67EventsTable(mBadDb);
@@ -416,7 +426,8 @@ public class CalendarDatabaseHelperTest extends TestCase {
}
}
- @MediumTest
+ @Test
+ @Ignore("b/140236227")
public void testUpgradeToCurrentVersion() {
// Create event tables
bootstrapDbVersion50(mBadDb);
@@ -452,6 +463,8 @@ public class CalendarDatabaseHelperTest extends TestCase {
private static final String[] PROJECTION = {"tbl_name", "sql"};
+ @Test
+ @Ignore("b/140236227")
public void testSchemasEqualForAllTables() {
CalendarDatabaseHelper cDbHelper = new CalendarDatabaseHelper(new MockContext());
diff --git a/tests/src/com/android/providers/calendar/CalendarProvider2Test.java b/tests/src/com/android/providers/calendar/CalendarProvider2Test.java
index e0a4edf..466497c 100644
--- a/tests/src/com/android/providers/calendar/CalendarProvider2Test.java
+++ b/tests/src/com/android/providers/calendar/CalendarProvider2Test.java
@@ -23,6 +23,7 @@ import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.pm.ProviderInfo;
import android.content.res.Resources;
@@ -988,15 +989,22 @@ public class CalendarProvider2Test extends AndroidTestCase {
RenamingDelegatingContext targetContextWrapper = new RenamingDelegatingContext(
new MockContext2(), // The context that most methods are delegated to
getContext(), // The context that file methods are delegated to
- filenamePrefix);
+ filenamePrefix) {
+ @Override
+ public SharedPreferences getSharedPreferences(String name, int mode) {
+ return getContext().getSharedPreferences(name, mode);
+ }
+ };
mContext = new IsolatedContext(mResolver, targetContextWrapper) {
@Override
public Object getSystemService(String name) {
- // for accessing wakelock.
- if (Context.POWER_SERVICE.equals(name)) {
- return getContext().getSystemService(name);
+ switch (name) {
+ case Context.POWER_SERVICE:
+ case Context.USER_SERVICE:
+ return getContext().getSystemService(name);
+ default:
+ return super.getSystemService(name);
}
- return super.getSystemService(name);
}
};
@@ -1005,6 +1013,17 @@ public class CalendarProvider2Test extends AndroidTestCase {
public int getUserId() {
return WORK_PROFILE_USER_ID;
}
+
+ @Override
+ public Object getSystemService(String name) {
+ switch (name) {
+ case Context.POWER_SERVICE:
+ case Context.USER_SERVICE:
+ return getContext().getSystemService(name);
+ default:
+ return super.getSystemService(name);
+ }
+ }
};
mProvider = new CalendarProvider2ForTesting() {