summaryrefslogtreecommitdiffstats
path: root/services/tests
diff options
context:
space:
mode:
authorMatthew Williams <mjwilliams@google.com>2013-07-26 12:56:39 -0700
committerMatthew Williams <mjwilliams@google.com>2013-09-16 15:23:41 -0700
commit06485a7c6e3bbea1f427f345ac3a18b2346750e0 (patch)
treeec25556c025afd966e155f67de4752abb7ad477a /services/tests
parentdf2dae01b065ef18b7de7f76b29a9857bf70f443 (diff)
downloadframeworks_base-06485a7c6e3bbea1f427f345ac3a18b2346750e0.zip
frameworks_base-06485a7c6e3bbea1f427f345ac3a18b2346750e0.tar.gz
frameworks_base-06485a7c6e3bbea1f427f345ac3a18b2346750e0.tar.bz2
Pending op fix didn't merge properly from KLP-dev.
Manually merge in Cl c/342668. Add another test to ensure that it WAI. Change-Id: Iae603328d525cc71e4e31ad30a13384efc50f823
Diffstat (limited to 'services/tests')
-rw-r--r--services/tests/servicestests/src/com/android/server/content/SyncStorageEngineTest.java79
1 files changed, 76 insertions, 3 deletions
diff --git a/services/tests/servicestests/src/com/android/server/content/SyncStorageEngineTest.java b/services/tests/servicestests/src/com/android/server/content/SyncStorageEngineTest.java
index d328a30..0354ffd 100644
--- a/services/tests/servicestests/src/com/android/server/content/SyncStorageEngineTest.java
+++ b/services/tests/servicestests/src/com/android/server/content/SyncStorageEngineTest.java
@@ -46,6 +46,7 @@ import com.android.server.content.SyncStorageEngine.EndPoint;
public class SyncStorageEngineTest extends AndroidTestCase {
protected Account account1;
+ protected Account account2;
protected ComponentName syncService1;
protected String authority1 = "testprovider";
protected Bundle defaultBundle;
@@ -67,6 +68,7 @@ public class SyncStorageEngineTest extends AndroidTestCase {
@Override
public void setUp() {
account1 = new Account("a@example.com", "example.type");
+ account2 = new Account("b@example.com", "example.type");
syncService1 = new ComponentName("com.example", "SyncService");
// Default bundle.
defaultBundle = new Bundle();
@@ -98,7 +100,7 @@ public class SyncStorageEngineTest extends AndroidTestCase {
SyncOperation.REASON_PERIODIC,
SyncStorageEngine.SOURCE_LOCAL,
authority,
- null, time0, 0 /* flex*/, 0, 0, true);
+ Bundle.EMPTY, time0, 0 /* flex*/, 0, 0, true);
long historyId = engine.insertStartSyncEvent(op, time0);
long time1 = time0 + SyncStorageEngine.MILLIS_IN_4WEEKS * 2;
engine.stopSyncEvent(historyId, time1 - time0, "yay", 0, 0);
@@ -108,11 +110,11 @@ public class SyncStorageEngineTest extends AndroidTestCase {
* Test persistence of pending operations.
*/
@MediumTest
- public void testPending() throws Exception {
+ public void testAppendPending() throws Exception {
SyncOperation sop = new SyncOperation(account1,
DEFAULT_USER,
SyncOperation.REASON_PERIODIC,
- SyncStorageEngine.SOURCE_LOCAL, authority1, null,
+ SyncStorageEngine.SOURCE_LOCAL, authority1, Bundle.EMPTY,
0 /* runtime */, 0 /* flex */, 0 /* backoff */, 0 /* delayuntil */,
true /* expedited */);
engine.insertIntoPending(sop);
@@ -134,6 +136,77 @@ public class SyncStorageEngineTest extends AndroidTestCase {
}
/**
+ * Verify {@link com.android.server.content.SyncStorageEngine#writePendingOperationsLocked()}
+ */
+ public void testWritePendingOperationsLocked() throws Exception {
+ SyncOperation sop = new SyncOperation(account1,
+ DEFAULT_USER,
+ SyncOperation.REASON_IS_SYNCABLE,
+ SyncStorageEngine.SOURCE_LOCAL, authority1, Bundle.EMPTY,
+ 1000L /* runtime */, 57L /* flex */, 0 /* backoff */, 0 /* delayuntil */,
+ true /* expedited */);
+ SyncOperation sop1 = new SyncOperation(account2,
+ DEFAULT_USER,
+ SyncOperation.REASON_PERIODIC,
+ SyncStorageEngine.SOURCE_LOCAL, authority1, defaultBundle,
+ 0 /* runtime */, 0 /* flex */, 20L /* backoff */, 100L /* delayuntil */,
+ false /* expedited */);
+ SyncOperation deleted = new SyncOperation(account2,
+ DEFAULT_USER,
+ SyncOperation.REASON_SYNC_AUTO,
+ SyncStorageEngine.SOURCE_LOCAL, authority1, Bundle.EMPTY,
+ 0 /* runtime */, 0 /* flex */, 20L /* backoff */, 100L /* delayuntil */,
+ false /* expedited */);
+ engine.insertIntoPending(sop);
+ engine.insertIntoPending(sop1);
+ engine.insertIntoPending(deleted);
+
+ SyncStorageEngine.PendingOperation popDeleted = engine.getPendingOperations().get(2);
+ // Free verifying, going to delete it anyway.
+ assertEquals(deleted.target.account, popDeleted.target.account);
+ assertEquals(deleted.target.provider, popDeleted.target.provider);
+ assertEquals(deleted.target.service, popDeleted.target.service);
+ assertEquals(deleted.target.userId, popDeleted.target.userId);
+ assertEquals(deleted.reason, popDeleted.reason);
+ assertEquals(deleted.syncSource, popDeleted.syncSource);
+ assertEquals(deleted.expedited, popDeleted.expedited);
+ assert(android.content.PeriodicSync.syncExtrasEquals(deleted.extras, popDeleted.extras));
+ // Delete one to force write-all
+ engine.deleteFromPending(popDeleted);
+ assertEquals("Delete of pending op failed.", 2, engine.getPendingOperationCount());
+ // If there's dirty pending data (which there is because we deleted a pending op) this
+ // re-writes the entire file.
+ engine.writeAllState();
+
+ engine.clearAndReadState();
+
+ // Validate state read back out.
+ assertEquals("Delete of pending op failed.", 2, engine.getPendingOperationCount());
+
+ List<SyncStorageEngine.PendingOperation> pops = engine.getPendingOperations();
+
+ SyncStorageEngine.PendingOperation popRetrieved = pops.get(0);
+ assertEquals(sop.target.account, popRetrieved.target.account);
+ assertEquals(sop.target.provider, popRetrieved.target.provider);
+ assertEquals(sop.target.service, popRetrieved.target.service);
+ assertEquals(sop.target.userId, popRetrieved.target.userId);
+ assertEquals(sop.reason, popRetrieved.reason);
+ assertEquals(sop.syncSource, popRetrieved.syncSource);
+ assertEquals(sop.expedited, popRetrieved.expedited);
+ assert(android.content.PeriodicSync.syncExtrasEquals(sop.extras, popRetrieved.extras));
+
+ popRetrieved = pops.get(1);
+ assertEquals(sop1.target.account, popRetrieved.target.account);
+ assertEquals(sop1.target.provider, popRetrieved.target.provider);
+ assertEquals(sop1.target.service, popRetrieved.target.service);
+ assertEquals(sop1.target.userId, popRetrieved.target.userId);
+ assertEquals(sop1.reason, popRetrieved.reason);
+ assertEquals(sop1.syncSource, popRetrieved.syncSource);
+ assertEquals(sop1.expedited, popRetrieved.expedited);
+ assert(android.content.PeriodicSync.syncExtrasEquals(sop1.extras, popRetrieved.extras));
+ }
+
+ /**
* Test that we can create, remove and retrieve periodic syncs. Backwards compatibility -
* periodic syncs with no flex time are no longer used.
*/