[CalendarServer-changes] [11959] CalendarServer/branches/users/sagen/groupcacher

source_changes at macosforge.org source_changes at macosforge.org
Wed Mar 12 11:24:58 PDT 2014


Revision: 11959
          http://trac.calendarserver.org//changeset/11959
Author:   gaya at apple.com
Date:     2013-11-15 21:15:04 -0800 (Fri, 15 Nov 2013)
Log Message:
-----------
Fix UUID issues in group cacher and delegates

Modified Paths:
--------------
    CalendarServer/branches/users/sagen/groupcacher/twext/who/test/test_delegates.py
    CalendarServer/branches/users/sagen/groupcacher/twext/who/test/test_groups.py
    CalendarServer/branches/users/sagen/groupcacher/txdav/common/datastore/sql.py

Modified: CalendarServer/branches/users/sagen/groupcacher/twext/who/test/test_delegates.py
===================================================================
--- CalendarServer/branches/users/sagen/groupcacher/twext/who/test/test_delegates.py	2013-11-15 23:31:07 UTC (rev 11958)
+++ CalendarServer/branches/users/sagen/groupcacher/twext/who/test/test_delegates.py	2013-11-16 05:15:04 UTC (rev 11959)
@@ -22,10 +22,11 @@
     addDelegate, removeDelegate, delegatesOf, delegatedTo, allGroupDelegates
 )
 from twext.who.groups import GroupCacher
+from twext.who.idirectory import RecordType
 from twext.who.test.test_xml import xmlService
 from twisted.internet.defer import inlineCallbacks
 from twistedcaldav.test.util import StoreTestCase
-from twext.who.idirectory import RecordType
+from uuid import UUID
 
 class DelegationTest(StoreTestCase):
 
@@ -112,11 +113,11 @@
         groups = (yield allGroupDelegates(txn))
         self.assertEquals(
             set([
-                "49b350c69611477b94d95516b13856ab",
-                "86144f73345a409782f1b782672087c7"
+                UUID("49b350c69611477b94d95516b13856ab"),
+                UUID("86144f73345a409782f1b782672087c7")
                 ]), set(groups))
 
-        # Delegate to a user who is already indirectly delegated-to 
+        # Delegate to a user who is already indirectly delegated-to
         yield addDelegate(txn, delegator, delegate1, True)
         delegates = (yield delegatesOf(txn, delegator, True))
         self.assertEquals(set(["sagen", "cdaboo", "glyph"]),
@@ -128,8 +129,8 @@
             record = (yield self.xmlService.recordWithShortName(RecordType.user,
                 name))
             newSet.add(record.guid)
-        groupID, name, membershipHash = (yield txn.groupByGUID(group1.guid))
-        numAdded, numRemoved = (yield self.groupCacher.synchronizeMembers(txn,
+        groupID, name, membershipHash = (yield txn.groupByGUID(group1.guid)) #@UnusedVariable
+        numAdded, numRemoved = (yield self.groupCacher.synchronizeMembers(txn, #@UnusedVariable
             groupID, newSet))
         delegates = (yield delegatesOf(txn, delegator, True))
         self.assertEquals(set(["sagen", "cdaboo", "glyph", "dre"]),

Modified: CalendarServer/branches/users/sagen/groupcacher/twext/who/test/test_groups.py
===================================================================
--- CalendarServer/branches/users/sagen/groupcacher/twext/who/test/test_groups.py	2013-11-15 23:31:07 UTC (rev 11958)
+++ CalendarServer/branches/users/sagen/groupcacher/twext/who/test/test_groups.py	2013-11-16 05:15:04 UTC (rev 11959)
@@ -19,11 +19,12 @@
 """
 
 from twext.who.groups import GroupCacher, _expandedMembers
+from twext.who.idirectory import RecordType
 from twext.who.test.test_xml import xmlService
-from twext.who.idirectory import RecordType
 from twisted.internet.defer import inlineCallbacks
 from twistedcaldav.test.util import StoreTestCase
 from txdav.common.icommondatastore import NotFoundError
+from uuid import UUID
 
 class GroupCacherTest(StoreTestCase):
 
@@ -73,19 +74,19 @@
         yield self.groupCacher.refreshGroup(txn, record.guid)
 
         groupID, name, membershipHash = (yield txn.groupByGUID(record.guid))
-        self.assertEquals(membershipHash, "e90052eb63d47f32d5b03df0073f7854")
+        self.assertEquals(membershipHash, "4b0e162f2937f0f3daa6d10e5a6a6c33")
 
         groupGUID, name, membershipHash = (yield txn.groupByID(groupID))
         self.assertEquals(groupGUID, record.guid)
         self.assertEquals(name, "Top Group 1")
-        self.assertEquals(membershipHash, "e90052eb63d47f32d5b03df0073f7854")
+        self.assertEquals(membershipHash, "4b0e162f2937f0f3daa6d10e5a6a6c33")
 
         members = (yield txn.membersOfGroup(groupID))
         self.assertEquals(
-            set(["9064df911dbc4e079c2b6839b0953876",
-                 "4ad155cbae9b475f986ce08a7537893e",
-                 "3bdcb95484d54f6d8035eac19a6d6e1f",
-                 "7d45cb10479e456bb54d528958c5734b"]),
+            set([UUID("9064df911dbc4e079c2b6839b0953876"),
+                 UUID("4ad155cbae9b475f986ce08a7537893e"),
+                 UUID("3bdcb95484d54f6d8035eac19a6d6e1f"),
+                 UUID("7d45cb10479e456bb54d528958c5734b")]),
             members
         )
 
@@ -108,9 +109,9 @@
         txn = store.newTransaction()
 
         # Refresh the group so it's assigned a group_id
-        guid = "49b350c69611477b94d95516b13856ab"
+        guid = UUID("49b350c69611477b94d95516b13856ab")
         yield self.groupCacher.refreshGroup(txn, guid)
-        groupID, name, membershipHash = (yield txn.groupByGUID(guid))
+        groupID, name, membershipHash = (yield txn.groupByGUID(guid)) #@UnusedVariable
 
         # Remove two members, and add one member
         newSet = set()
@@ -146,10 +147,10 @@
         # Non-existent groupID
         self.failUnlessFailure(txn.groupByID(42), NotFoundError)
 
-        guid = "49b350c69611477b94d95516b13856ab"
-        hash = "e90052eb63d47f32d5b03df0073f7854"
+        guid = UUID("49b350c69611477b94d95516b13856ab")
+        hash = "4b0e162f2937f0f3daa6d10e5a6a6c33"
         yield self.groupCacher.refreshGroup(txn, guid)
-        groupID, name, membershipHash = (yield txn.groupByGUID(guid))
+        groupID, name, membershipHash = (yield txn.groupByGUID(guid)) #@UnusedVariable
         results = (yield txn.groupByID(groupID))
         self.assertEquals([guid, "Top Group 1", hash], results)
 

Modified: CalendarServer/branches/users/sagen/groupcacher/txdav/common/datastore/sql.py
===================================================================
--- CalendarServer/branches/users/sagen/groupcacher/txdav/common/datastore/sql.py	2013-11-15 23:31:07 UTC (rev 11958)
+++ CalendarServer/branches/users/sagen/groupcacher/txdav/common/datastore/sql.py	2013-11-16 05:15:04 UTC (rev 11959)
@@ -961,6 +961,8 @@
     def groupByID(self, groupID):
         try:
             results = (yield self._groupByID.on(self, groupID=groupID))[0]
+            if results:
+                results = [UUID("urn:uuid:" + results[0])] + results[1:]
             returnValue(results)
         except IndexError:
             raise NotFoundError
@@ -980,6 +982,7 @@
         return Insert({gm.GROUP_ID: Parameter("groupID"),
                        gm.MEMBER_GUID: Parameter("memberGUID")})
 
+
     @classproperty
     def _removeMemberFromGroupQuery(cls): #@NoSelf
         gm = schema.GROUP_MEMBERSHIP
@@ -1023,7 +1026,7 @@
         results = (yield self._selectGroupMembersQuery.on(self,
             groupID=groupID))
         for row in results:
-            members.add(row[0])
+            members.add(UUID("urn:uuid:" + row[0]))
         returnValue(members)
 
     # End of Group Members
@@ -1189,7 +1192,7 @@
         @type readWrite: C{boolean}
         """
         return self._removeDelegateQuery.on(self, delegator=str(delegator),
-            delegate=delegate, readWrite=1 if readWrite else 0)
+            delegate=str(delegate), readWrite=1 if readWrite else 0)
 
 
     def removeDelegateGroup(self, delegator, delegateGroupID, readWrite):
@@ -1232,13 +1235,13 @@
         results = (yield self._selectDelegatesQuery.on(self,
             delegator=str(delegator), readWrite=1 if readWrite else 0))
         for row in results:
-            delegates.add(row[0])
+            delegates.add(UUID("urn:uuid:" + row[0]))
 
         # Finally get those who are in groups which have been delegated to
         results = (yield self._selectIndirectDelegatesQuery.on(self,
             delegator=str(delegator), readWrite=1 if readWrite else 0))
         for row in results:
-            delegates.add(row[0])
+            delegates.add(UUID("urn:uuid:" + row[0]))
 
         returnValue(delegates)
 
@@ -1262,16 +1265,16 @@
 
         # First get the direct delegators
         results = (yield self._selectDirectDelegatorsQuery.on(self,
-            delegate=delegate, readWrite=1 if readWrite else 0))
+            delegate=str(delegate), readWrite=1 if readWrite else 0))
         for row in results:
-            delegators.add(row[0])
+            delegators.add(UUID("urn:uuid:" + row[0]))
 
         # Finally get those who have delegated to groups the delegate
         # is a member of
         results = (yield self._selectIndirectDelegatorsQuery.on(self,
-            delegate=delegate, readWrite=1 if readWrite else 0))
+            delegate=str(delegate), readWrite=1 if readWrite else 0))
         for row in results:
-            delegators.add(row[0])
+            delegators.add(UUID("urn:uuid:" + row[0]))
 
         returnValue(delegators)
 
@@ -1296,7 +1299,7 @@
         ).on(self))
         delegates = set()
         for row in results:
-            delegates.add(row[0])
+            delegates.add(UUID("urn:uuid:" + row[0]))
 
         returnValue(delegates)
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140312/c854961b/attachment.html>


More information about the calendarserver-changes mailing list