[CalendarServer-changes] [12334] 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:20:37 PDT 2014


Revision: 12334
          http://trac.calendarserver.org//changeset/12334
Author:   gaya at apple.com
Date:     2014-01-13 22:37:24 -0800 (Mon, 13 Jan 2014)
Log Message:
-----------
fix test_notificationObjectRevisions

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-14 06:07:17 UTC (rev 12333)
+++ CalendarServer/branches/users/gaya/cleanrevisions/txdav/common/datastore/work/test/test_revision_cleanup.py	2014-01-14 06:37:24 UTC (rev 12334)
@@ -19,12 +19,12 @@
 from twext.enterprise.dal.syntax import Select
 from twext.enterprise.queue import WorkItem
 from twext.python.clsprop import classproperty
-from twisted.internet.defer import inlineCallbacks
+from twisted.internet.defer import inlineCallbacks, returnValue
 from twisted.trial.unittest import TestCase
 from twistedcaldav.config import config
 from twistedcaldav.vcard import Component as VCard
 from txdav.caldav.datastore.test.util import buildCalendarStore
-from txdav.common.datastore.sql_tables import  schema
+from txdav.common.datastore.sql_tables import schema, _BIND_MODE_READ
 from txdav.common.datastore.test.util import CommonCommonTests, populateCalendarsFrom
 from txdav.common.datastore.work.revision_cleanup import FindMinValidRevisionWork, RevisionCleanupWork
 from txdav.common.icommondatastore import SyncTokenValidException
@@ -226,6 +226,12 @@
                     "inbox": {
                     },
                 },
+                "user02": {
+                    "calendar": {
+                    },
+                    "inbox": {
+                    },
+                },
             }
         }
 
@@ -238,9 +244,29 @@
 
 
     @inlineCallbacks
+    def _createCalendarShare(self):
+        # Invite
+        calendar = yield self.calendarUnderTest(home="user01", name="calendar")
+        invites = yield calendar.sharingInvites()
+        self.assertEqual(len(invites), 0)
+
+        shareeView = yield calendar.inviteUserToShare("user02", _BIND_MODE_READ, "summary")
+        inviteUID = shareeView.shareUID()
+        yield self.commit()
+
+        # Accept
+        shareeHome = yield self.homeUnderTest(name="user02")
+        shareeView = yield shareeHome.acceptShare(inviteUID)
+        sharedName = shareeView.name()
+        yield self.commit()
+
+        returnValue(sharedName)
+
+
+    @inlineCallbacks
     def test_calendarObjectRevisions(self):
         """
-        Verify that all extra addressbook object revisions are deleted by the cleaning work items
+        Verify that all extra calendar object revisions are deleted by FindMinValidRevisionWork and RevisionCleanupWork
         """
 
         # get sync token
@@ -293,14 +319,64 @@
         self.failUnlessFailure(calendar.resourceNamesSinceToken(token), SyncTokenValidException)
 
 
+    @inlineCallbacks
     def test_notificationObjectRevisions(self):
-        pass
+        """
+        Verify that all extra notification object revisions are deleted by FindMinValidRevisionWork and RevisionCleanupWork
+        """
 
+        # get sync token
+        home = yield self.homeUnderTest(name="user01")
+        token = yield home.syncToken()
 
+        #make notification changes as side effect of sharing
+        yield self._createCalendarShare()
+
+        # Get object revisions
+        rev = schema.NOTIFICATION_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.NOTIFICATION_OBJECT_REVISIONS
+        revisionRows = yield Select(
+            [rev.REVISION],
+            From=rev,
+        ).on(self.transactionUnderTest())
+        self.assertEqual(len(revisionRows), 1)  # deleteRevisionsBefore() leaves 1 revision behind
+
+        # old sync token fails
+        home = yield self.homeUnderTest(name="user01")
+        self.failUnlessFailure(home.resourceNamesSinceToken(token, "1"), SyncTokenValidException)
+        self.failUnlessFailure(home.resourceNamesSinceToken(token, "infinity"), SyncTokenValidException)
+
+
     @inlineCallbacks
     def test_addressbookObjectRevisions(self):
         """
-        Verify that all extra addressbook object revisions are deleted by the cleaning work items
+        Verify that all extra addressbook object revisions are deleted by FindMinValidRevisionWork and RevisionCleanupWork
         """
 
         # get sync token
@@ -356,7 +432,7 @@
     @inlineCallbacks
     def test_addressbookMembersRevisions(self):
         """
-        Verify that all extra members revisions are deleted by the cleaning work items
+        Verify that all extra members revisions are deleted by FindMinValidRevisionWork and RevisionCleanupWork
         """
 
         # get sync token
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140312/9cab818d/attachment.html>


More information about the calendarserver-changes mailing list