[CalendarServer-changes] [12329] CalendarServer/branches/users/gaya/cleanrevisions/txdav/common/ datastore/work/test/test_revision_cleanup.py
source_changes at macosforge.org
source_changes at macosforge.org
Wed Mar 12 11:22:23 PDT 2014
Revision: 12329
http://trac.calendarserver.org//changeset/12329
Author: gaya at apple.com
Date: 2014-01-13 14:58:49 -0800 (Mon, 13 Jan 2014)
Log Message:
-----------
test_addressbookObjectRevisions works
Modified Paths:
--------------
CalendarServer/branches/users/gaya/cleanrevisions/txdav/common/datastore/work/test/test_revision_cleanup.py
Modified: CalendarServer/branches/users/gaya/cleanrevisions/txdav/common/datastore/work/test/test_revision_cleanup.py
===================================================================
--- CalendarServer/branches/users/gaya/cleanrevisions/txdav/common/datastore/work/test/test_revision_cleanup.py 2014-01-13 22:56:21 UTC (rev 12328)
+++ CalendarServer/branches/users/gaya/cleanrevisions/txdav/common/datastore/work/test/test_revision_cleanup.py 2014-01-13 22:58:49 UTC (rev 12329)
@@ -176,14 +176,66 @@
pass
+ @inlineCallbacks
def test_addressbookObjectRevisions(self):
- pass
+ """
+ Verify that all extra addressbook object revisions are deleted by the cleaning work items
+ """
+ # get sync token
+ addressbook = yield self.addressbookUnderTest(home="user01", name="addressbook")
+ token = yield addressbook.syncToken()
+ #make changes
+ card1Object = yield self.addressbookObjectUnderTest(self.transactionUnderTest(), name="card1.vcf", addressbook_name="addressbook", home="user01")
+ yield card1Object.remove()
+ card2Object = yield self.addressbookObjectUnderTest(self.transactionUnderTest(), name="card2.vcf", addressbook_name="addressbook", home="user01")
+ yield card2Object.remove()
+
+ # Get object revisions
+ rev = schema.ADDRESSBOOK_OBJECT_REVISIONS
+ revisionRows = yield Select(
+ [rev.REVISION],
+ From=rev,
+ ).on(self.transactionUnderTest())
+ self.assertNotEqual(len(revisionRows), 0)
+
+ # do FindMinValidRevisionWork
+ wp = yield self.transactionUnderTest().enqueue(FindMinValidRevisionWork, notBefore=datetime.datetime.utcnow())
+ yield self.commit()
+ yield wp.whenExecuted()
+
+ # Get the minimum valid revision and check it
+ cs = schema.CALENDARSERVER
+ minValidRevision = int((yield Select(
+ [cs.VALUE],
+ From=cs,
+ Where=(cs.NAME == "MIN-VALID-REVISION")
+ ).on(self.transactionUnderTest()))[0][0])
+ self.assertEqual(minValidRevision, max([row[0] for row in revisionRows]))
+
+ # do RevisionCleanupWork
+ wp = yield self.transactionUnderTest().enqueue(RevisionCleanupWork, notBefore=datetime.datetime.utcnow())
+ yield self.commit()
+ yield wp.whenExecuted()
+
+ # Get group1 object revision
+ rev = schema.ADDRESSBOOK_OBJECT_REVISIONS
+ revisionRows = yield Select(
+ [rev.REVISION],
+ From=rev,
+ ).on(self.transactionUnderTest())
+ self.assertEqual(len(revisionRows), 1) # current algo leaves 1 revision behind TOTAL, so what?
+
+ # old sync token fails
+ addressbook = yield self.addressbookUnderTest(home="user01", name="addressbook")
+ self.failUnlessFailure(addressbook.resourceNamesSinceToken(token), SyncTokenValidException)
+
+
@inlineCallbacks
def test_addressbookMembersRevisions(self):
"""
- Verify that resourceNamesSinceRevision returns all resources after initial bind and sync.
+ Verify that all extra members revisions are deleted by the cleaning work items
"""
# get sync token
@@ -198,7 +250,7 @@
yield group1Object.setComponent(VCard.fromString(self.group1))
self.commit()
- # generate 2 revisions per member of group2, and make max revision of group1 members < max revision used
+ # generate 2 revisions per member of group2, and make max revision of group1 members < max valid revision
group2Object = yield self.addressbookObjectUnderTest(self.transactionUnderTest(), name="group2.vcf", addressbook_name="addressbook", home="user01")
yield group2Object.setComponent(VCard.fromString(self.group2Empty))
self.commit()
@@ -249,10 +301,6 @@
).on(self.transactionUnderTest()))[0][0])
self.assertEqual(minValidRevision, max([row[3] for row in group1Rows + group2Rows]))
- # old sync token fails
- addressbook = yield self.addressbookUnderTest(home="user01", name="addressbook")
- self.failUnlessFailure(addressbook.resourceNamesSinceToken(token), SyncTokenValidException)
-
# do RevisionCleanupWork
wp = yield self.transactionUnderTest().enqueue(RevisionCleanupWork, notBefore=datetime.datetime.utcnow())
yield self.commit()
@@ -278,3 +326,7 @@
Where=aboMembers.GROUP_ID == group2Object._resourceID,
).on(self.transactionUnderTest())
self.assertEqual(len(group2Rows), 0) # 0 members
+
+ # old sync token fails
+ addressbook = yield self.addressbookUnderTest(home="user01", name="addressbook")
+ self.failUnlessFailure(addressbook.resourceNamesSinceToken(token), SyncTokenValidException)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140312/c710813b/attachment.html>
More information about the calendarserver-changes
mailing list