FileDocCategorySizeDatePackage
SyncBaseInstrumentation.javaAPI DocAndroid 5.1 API2891Thu Mar 12 22:22:42 GMT 2015android.test

SyncBaseInstrumentation

public 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
Constructors Summary
Methods Summary
protected voidcancelSyncsandDisableAutoSync()

        ContentResolver.setMasterSyncAutomatically(false);
        ContentResolver.cancelSync(null /* all accounts */, null /* all authorities */);
    
protected voidsetUp()


    
         
        super.setUp();
        mTargetContext = getInstrumentation().getTargetContext();
        mContentResolver = mTargetContext.getContentResolver();
    
protected voidsyncProvider(android.net.Uri uri, java.lang.String accountName, java.lang.String authority)
Syncs the specified provider.

throws
Exception

        Bundle extras = new Bundle();
        extras.putBoolean(ContentResolver.SYNC_EXTRAS_IGNORE_SETTINGS, true);
        Account account = new Account(accountName, "com.google");

        ContentResolver.requestSync(account, authority, 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 (ContentResolver.isSyncActive(account, authority)) {
                counter = 0;
                continue;
            }
            counter++;
        }