SyncBaseInstrumentationpublic class SyncBaseInstrumentation extends InstrumentationTestCase If you would like to test sync a single provider with an
{@link InstrumentationTestCase}, this provides some of the boiler plate in {@link #setUp} and
{@link #tearDown}. |
Fields Summary |
---|
private android.content.Context | mTargetContext | android.content.ContentResolver | mContentResolver | private static final int | MAX_TIME_FOR_SYNC_IN_MINS |
Methods Summary |
---|
protected void | cancelSyncsandDisableAutoSync()
Sync.Settings.QueryMap mSyncSettings =
new Sync.Settings.QueryMap(mContentResolver, true, null);
mSyncSettings.setListenForNetworkTickles(false);
mContentResolver.cancelSync(null);
mSyncSettings.close();
| private boolean | isActiveInActiveQueryMap(Sync.Active.QueryMap activemap, java.lang.String account, java.lang.String authority)
Map<String, ContentValues> rows = activemap.getRows();
for (ContentValues values : rows.values()) {
if (values.getAsString("account").equals(account)
&& values.getAsString("authority").equals(authority)) {
return true;
}
}
return false;
| private boolean | isSyncActive(java.lang.String account, java.lang.String authority)This method tests if any sync is active or not. Sync is considered to be active if the
entry is in either the Pending or Active tables.
Sync.Pending.QueryMap pendingQueryMap = null;
Sync.Active.QueryMap activeQueryMap = null;
try {
pendingQueryMap = new Sync.Pending.QueryMap(mContentResolver, false, null);
activeQueryMap = new Sync.Active.QueryMap(mContentResolver, false, null);
if (pendingQueryMap.isPending(account, authority)) {
return true;
}
if (isActiveInActiveQueryMap(activeQueryMap, account, authority)) {
return true;
}
return false;
} finally {
activeQueryMap.close();
pendingQueryMap.close();
}
| protected void | setUp()
super.setUp();
mTargetContext = getInstrumentation().getTargetContext();
mContentResolver = mTargetContext.getContentResolver();
| protected void | syncProvider(android.net.Uri uri, java.lang.String account, java.lang.String authority)Syncs the specified provider.
Bundle extras = new Bundle();
extras.putBoolean(ContentResolver.SYNC_EXTRAS_FORCE, true);
extras.putString(ContentResolver.SYNC_EXTRAS_ACCOUNT, account);
mContentResolver.startSync(uri, extras);
long startTimeInMillis = SystemClock.elapsedRealtime();
long endTimeInMillis = startTimeInMillis + MAX_TIME_FOR_SYNC_IN_MINS * 60000;
int counter = 0;
// Making sure race condition does not occur when en entry have been removed from pending
// and active tables and loaded in memory (therefore sync might be still in progress)
while (counter < 2) {
// Sleep for 1 second.
Thread.sleep(1000);
// Finish test if time to sync has exceeded max time.
if (SystemClock.elapsedRealtime() > endTimeInMillis) {
break;
}
if (isSyncActive(account, authority)) {
counter = 0;
continue;
}
counter++;
}
|
|