[CalendarServer-changes] [4226] CalendarServer/branches/release/CalendarServer-2.2-dev

source_changes at macosforge.org source_changes at macosforge.org
Mon May 11 11:46:58 PDT 2009


Revision: 4226
          http://trac.macosforge.org/projects/calendarserver/changeset/4226
Author:   wsanchez at apple.com
Date:     2009-05-11 11:46:57 -0700 (Mon, 11 May 2009)
Log Message:
-----------
Pulled up r4197 from trunk.

Modified Paths:
--------------
    CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/memcachelock.py
    CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/memcacher.py
    CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/resource.py
    CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/test/test_memcachelock.py
    CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/test/test_memcacher.py

Property Changed:
----------------
    CalendarServer/branches/release/CalendarServer-2.2-dev/
    CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-privatecomments.txt
    CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-privatecomments.xml
    CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-schedulingchanges.txt
    CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-schedulingchanges.xml


Property changes on: CalendarServer/branches/release/CalendarServer-2.2-dev
___________________________________________________________________
Modified: svn:mergeinfo
   - /CalendarServer/branches/users/sagen/resource-delegates-4038:4040-4067
/CalendarServer/branches/users/sagen/resource-delegates-4066:4068-4075
/CalendarServer/trunk:4105-4107,4113-4116,4121-4124,4137-4139,4141-4144,4154-4159,4163-4167,4172,4174-4176,4178-4180,4191,4194,4213
   + /CalendarServer/branches/users/sagen/resource-delegates-4038:4040-4067
/CalendarServer/branches/users/sagen/resource-delegates-4066:4068-4075
/CalendarServer/trunk:4105-4107,4113-4116,4121-4124,4137-4139,4141-4144,4154-4159,4163-4167,4172,4174-4176,4178-4180,4191,4194,4197,4213


Property changes on: CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-privatecomments.txt
___________________________________________________________________
Modified: svn:mergeinfo
   - /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-privatecomments-00.txt:2887-2910
/CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-privatecomments-00.txt:2938-3097
/CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-privatecomments.txt:3307-3349
/CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-privatecomments-00.txt:2948-2989
/CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-privatecomments.txt:3574-3581
/CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-privatecomments.txt:4040-4067
/CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-privatecomments.txt:4068-4075
/CalendarServer/trunk/doc/Extensions/caldav-privatecomments.txt:4105-4107,4113-4116,4121-4124,4137-4139,4141-4144,4154-4159,4163-4167,4172,4174-4176,4178-4180,4191,4194,4213
   + /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-privatecomments-00.txt:2887-2910
/CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-privatecomments-00.txt:2938-3097
/CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-privatecomments.txt:3307-3349
/CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-privatecomments-00.txt:2948-2989
/CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-privatecomments.txt:3574-3581
/CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-privatecomments.txt:4040-4067
/CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-privatecomments.txt:4068-4075
/CalendarServer/trunk/doc/Extensions/caldav-privatecomments.txt:4105-4107,4113-4116,4121-4124,4137-4139,4141-4144,4154-4159,4163-4167,4172,4174-4176,4178-4180,4191,4194,4197,4213


Property changes on: CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-privatecomments.xml
___________________________________________________________________
Modified: svn:mergeinfo
   - /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-privatecomments-00.xml:2887-2910
/CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-privatecomments-00.xml:2938-3097
/CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-privatecomments.xml:3307-3349
/CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-privatecomments-00.xml:2948-2989
/CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-privatecomments.xml:3574-3581
/CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-privatecomments.xml:4040-4067
/CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-privatecomments.xml:4068-4075
/CalendarServer/trunk/doc/Extensions/caldav-privatecomments.xml:4105-4107,4113-4116,4121-4124,4137-4139,4141-4144,4154-4159,4163-4167,4172,4174-4176,4178-4180,4191,4194,4213
   + /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-privatecomments-00.xml:2887-2910
/CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-privatecomments-00.xml:2938-3097
/CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-privatecomments.xml:3307-3349
/CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-privatecomments-00.xml:2948-2989
/CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-privatecomments.xml:3574-3581
/CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-privatecomments.xml:4040-4067
/CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-privatecomments.xml:4068-4075
/CalendarServer/trunk/doc/Extensions/caldav-privatecomments.xml:4105-4107,4113-4116,4121-4124,4137-4139,4141-4144,4154-4159,4163-4167,4172,4174-4176,4178-4180,4191,4194,4197,4213


Property changes on: CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-schedulingchanges.txt
___________________________________________________________________
Modified: svn:mergeinfo
   - /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-schedulingchanges-01.txt:2887-2910
/CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-schedulingchanges-01.txt:2938-3097
/CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-schedulingchanges.txt:3307-3349
/CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-schedulingchanges-01.txt:2948-2989
/CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-schedulingchanges.txt:3574-3581
/CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-schedulingchanges.txt:4040-4067
/CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-schedulingchanges.txt:4068-4075
/CalendarServer/trunk/doc/Extensions/caldav-schedulingchanges.txt:4105-4107,4113-4116,4121-4124,4137-4139,4141-4144,4154-4159,4163-4167,4172,4174-4176,4178-4180,4191,4194,4213
   + /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-schedulingchanges-01.txt:2887-2910
/CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-schedulingchanges-01.txt:2938-3097
/CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-schedulingchanges.txt:3307-3349
/CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-schedulingchanges-01.txt:2948-2989
/CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-schedulingchanges.txt:3574-3581
/CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-schedulingchanges.txt:4040-4067
/CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-schedulingchanges.txt:4068-4075
/CalendarServer/trunk/doc/Extensions/caldav-schedulingchanges.txt:4105-4107,4113-4116,4121-4124,4137-4139,4141-4144,4154-4159,4163-4167,4172,4174-4176,4178-4180,4191,4194,4197,4213


Property changes on: CalendarServer/branches/release/CalendarServer-2.2-dev/doc/Extensions/caldav-schedulingchanges.xml
___________________________________________________________________
Modified: svn:mergeinfo
   - /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-schedulingchanges-01.xml:2887-2910
/CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-schedulingchanges-01.xml:2938-3097
/CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-schedulingchanges.xml:3307-3349
/CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-schedulingchanges-01.xml:2948-2989
/CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-schedulingchanges.xml:3574-3581
/CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-schedulingchanges.xml:4040-4067
/CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-schedulingchanges.xml:4068-4075
/CalendarServer/trunk/doc/Extensions/caldav-schedulingchanges.xml:4105-4107,4113-4116,4121-4124,4137-4139,4141-4144,4154-4159,4163-4167,4172,4174-4176,4178-4180,4191,4194,4213
   + /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-schedulingchanges-01.xml:2887-2910
/CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-schedulingchanges-01.xml:2938-3097
/CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-schedulingchanges.xml:3307-3349
/CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-schedulingchanges-01.xml:2948-2989
/CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-schedulingchanges.xml:3574-3581
/CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-schedulingchanges.xml:4040-4067
/CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-schedulingchanges.xml:4068-4075
/CalendarServer/trunk/doc/Extensions/caldav-schedulingchanges.xml:4105-4107,4113-4116,4121-4124,4137-4139,4141-4144,4154-4159,4163-4167,4172,4174-4176,4178-4180,4191,4194,4197,4213

Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/memcachelock.py
===================================================================
--- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/memcachelock.py	2009-05-11 18:44:43 UTC (rev 4225)
+++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/memcachelock.py	2009-05-11 18:46:57 UTC (rev 4226)
@@ -1,5 +1,5 @@
 ##
-# Copyright (c) 2008 Apple Inc. All rights reserved.
+# Copyright (c) 2008-2009 Apple Inc. All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -18,7 +18,6 @@
 from twisted.internet.defer import inlineCallbacks, Deferred, returnValue,\
     succeed
 from twisted.internet import reactor
-import hashlib
 import time
 
 class MemcacheLock(Memcacher):
@@ -39,10 +38,7 @@
         """
 
         super(MemcacheLock, self).__init__(namespace)
-        if isinstance(locktoken, unicode):
-            locktoken = locktoken.encode("utf-8")
-        assert isinstance(locktoken, str), "Lock token must be a str."
-        self._locktoken = hashlib.md5(locktoken).hexdigest()
+        self._locktoken = locktoken
         self._timeout = timeout
         self._retry_interval = retry_interval
         self._expire_time = expire_time

Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/memcacher.py
===================================================================
--- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/memcacher.py	2009-05-11 18:44:43 UTC (rev 4225)
+++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/memcacher.py	2009-05-11 18:46:57 UTC (rev 4226)
@@ -1,5 +1,5 @@
 ##
-# Copyright (c) 2008 Apple Inc. All rights reserved.
+# Copyright (c) 2008-2009 Apple Inc. All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -19,10 +19,20 @@
 from twistedcaldav.log import LoggingMixIn
 from twistedcaldav.memcachepool import CachePoolUserMixIn
 from twistedcaldav.config import config
+import hashlib
 import cPickle
+import string
 
 class Memcacher(LoggingMixIn, CachePoolUserMixIn):
 
+    MEMCACHE_KEY_LIMIT   = 250      # the memcached key length limit
+    NAMESPACE_MAX_LENGTH = 32       # max size of namespace we will allow
+    HASH_LENGTH          = 32       # length of hash we will generate
+    TRUNCATED_KEY_LENGTH = MEMCACHE_KEY_LIMIT - NAMESPACE_MAX_LENGTH - HASH_LENGTH - 2  # 2 accounts for delimiters
+
+    # Translation table: all ctrls (0x00 - 0x1F) and space and 0x7F mapped to _
+    keyNormalizeTranslateTable = string.maketrans("".join([chr(i) for i in range(33)]) + chr(0x7F), "_"*33 + "_")
+
     class memoryCacher():
         """
         A class implementing the memcache client API we care about but
@@ -92,6 +102,8 @@
             nullCacher will be used for the multi-instance case when memcached is not configured.
         @type no_invalidation: C{bool}
         """
+        
+        assert len(namespace) <= Memcacher.NAMESPACE_MAX_LENGTH, "Memcacher namespace must be less than or equal to %s characters long" % (Memcacher.NAMESPACE_MAX_LENGTH,)
         self._memcacheProtocol = None
         self._namespace = namespace
         self._pickle = pickle
@@ -118,6 +130,16 @@
         return self._memcacheProtocol
 
 
+    def _normalizeKey(self, key):
+        
+        if isinstance(key, unicode):
+            key = key.encode("utf-8")
+        assert isinstance(key, str), "Key must be a str."
+
+        hash = hashlib.md5(key).hexdigest()
+        key = key[:Memcacher.TRUNCATED_KEY_LENGTH]
+        return "%s-%s" % (key.translate(Memcacher.keyNormalizeTranslateTable), hash,)
+
     def add(self, key, value, expire_time=0):
         
         proto = self._getMemcacheProtocol()
@@ -126,7 +148,7 @@
         if self._pickle:
             my_value = cPickle.dumps(value)
         self.log_debug("Adding Cache Token for %r" % (key,))
-        return proto.add('%s:%s' % (self._namespace, key), my_value, expireTime=expire_time)
+        return proto.add('%s:%s' % (self._namespace, self._normalizeKey(key)), my_value, expireTime=expire_time)
 
     def set(self, key, value, expire_time=0):
         
@@ -136,7 +158,7 @@
         if self._pickle:
             my_value = cPickle.dumps(value)
         self.log_debug("Setting Cache Token for %r" % (key,))
-        return proto.set('%s:%s' % (self._namespace, key), my_value, expireTime=expire_time)
+        return proto.set('%s:%s' % (self._namespace, self._normalizeKey(key)), my_value, expireTime=expire_time)
 
     def get(self, key):
         def _gotit(result):
@@ -146,11 +168,11 @@
             return value
 
         self.log_debug("Getting Cache Token for %r" % (key,))
-        d = self._getMemcacheProtocol().get('%s:%s' % (self._namespace, key))
+        d = self._getMemcacheProtocol().get('%s:%s' % (self._namespace, self._normalizeKey(key)))
         d.addCallback(_gotit)
         return d
 
 
     def delete(self, key):
         self.log_debug("Deleting Cache Token for %r" % (key,))
-        return self._getMemcacheProtocol().delete('%s:%s' % (self._namespace, key))
+        return self._getMemcacheProtocol().delete('%s:%s' % (self._namespace, self._normalizeKey(key)))

Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/resource.py
===================================================================
--- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/resource.py	2009-05-11 18:44:43 UTC (rev 4225)
+++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/resource.py	2009-05-11 18:46:57 UTC (rev 4226)
@@ -27,7 +27,6 @@
     "isPseudoCalendarCollectionResource",
 ]
 
-import os
 import urllib
 
 from zope.interface import implements
@@ -61,8 +60,6 @@
 from twistedcaldav.ical import allowedComponents
 from twistedcaldav.icaldav import ICalDAVResource, ICalendarPrincipalResource
 from twistedcaldav.log import LoggingMixIn
-from twistedcaldav.memcacher import Memcacher
-from twistedcaldav.sql import AbstractSQLDatabase, db_prefix
 
 from urlparse import urlsplit
 

Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/test/test_memcachelock.py
===================================================================
--- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/test/test_memcachelock.py	2009-05-11 18:44:43 UTC (rev 4225)
+++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/test/test_memcachelock.py	2009-05-11 18:46:57 UTC (rev 4226)
@@ -91,8 +91,8 @@
         lock = MemCacheTestCase.FakedMemcacheLock(self.proto, "lock", "locking")
         return self._test(
             lock.get("foo"),
-            "get lock:foo\r\n",
-            "VALUE lock:foo 0 3\r\nbar\r\nEND\r\n",
+            "get lock:foo-acbd18db4cc2f85cedef654fccc4a4d8\r\n",
+            "VALUE lock:foo-acbd18db4cc2f85cedef654fccc4a4d8 0 3\r\nbar\r\nEND\r\n",
             "bar"
         )
 
@@ -105,7 +105,7 @@
         lock = MemCacheTestCase.FakedMemcacheLock(self.proto, "lock", "locking")
         return self._test(
             lock.set("foo", "bar"),
-            "set lock:foo 0 0 3\r\nbar\r\n",
+            "set lock:foo-acbd18db4cc2f85cedef654fccc4a4d8 0 0 3\r\nbar\r\n",
             "STORED\r\n",
             True
         )
@@ -120,7 +120,7 @@
         lock = MemCacheTestCase.FakedMemcacheLock(self.proto, "lock", "locking")
         yield self._test(
             lock.acquire(),
-            "add lock:559159aa00cc525bfe5c4b34cf16cccb 0 0 1\r\n1\r\n",
+            "add lock:locking-559159aa00cc525bfe5c4b34cf16cccb 0 0 1\r\n1\r\n",
             "STORED\r\n",
             True
         )
@@ -136,7 +136,7 @@
         lock = MemCacheTestCase.FakedMemcacheLock(self.proto, "lock", "locking", timeout=0)
         yield self._test(
             lock.acquire(),
-            "add lock:559159aa00cc525bfe5c4b34cf16cccb 0 0 1\r\n1\r\n",
+            "add lock:locking-559159aa00cc525bfe5c4b34cf16cccb 0 0 1\r\n1\r\n",
             "STORED\r\n",
             True
         )
@@ -153,7 +153,7 @@
         try:
             yield self._test(
                 lock.acquire(),
-                "add lock:559159aa00cc525bfe5c4b34cf16cccb 0 0 1\r\n1\r\n",
+                "add lock:locking-559159aa00cc525bfe5c4b34cf16cccb 0 0 1\r\n1\r\n",
                 "NOT_STORED\r\n",
                 True
             )
@@ -175,14 +175,14 @@
         lock = MemCacheTestCase.FakedMemcacheLock(self.proto, "lock", "locking")
         yield self._test(
             lock.acquire(),
-            "add lock:559159aa00cc525bfe5c4b34cf16cccb 0 0 1\r\n1\r\n",
+            "add lock:locking-559159aa00cc525bfe5c4b34cf16cccb 0 0 1\r\n1\r\n",
             "STORED\r\n",
             True
         )
         self.assertTrue(lock._hasLock)
         yield self._test(
             lock.release(),
-            "delete lock:559159aa00cc525bfe5c4b34cf16cccb\r\n",
+            "delete lock:locking-559159aa00cc525bfe5c4b34cf16cccb\r\n",
             "DELETED\r\n",
             True
         )
@@ -198,13 +198,13 @@
         lock = MemCacheTestCase.FakedMemcacheLock(self.proto, "lock", "locking")
         yield self._test(
             lock.acquire(),
-            "add lock:559159aa00cc525bfe5c4b34cf16cccb 0 0 1\r\n1\r\n",
+            "add lock:locking-559159aa00cc525bfe5c4b34cf16cccb 0 0 1\r\n1\r\n",
             "STORED\r\n",
             True
         )
         yield self._test(
             lock.clean(),
-            "delete lock:559159aa00cc525bfe5c4b34cf16cccb\r\n",
+            "delete lock:locking-559159aa00cc525bfe5c4b34cf16cccb\r\n",
             "DELETED\r\n",
             True
         )
@@ -219,19 +219,34 @@
         lock = MemCacheTestCase.FakedMemcacheLock(self.proto, "lock", u"locking")
         yield self._test(
             lock.acquire(),
-            "add lock:559159aa00cc525bfe5c4b34cf16cccb 0 0 1\r\n1\r\n",
+            "add lock:locking-559159aa00cc525bfe5c4b34cf16cccb 0 0 1\r\n1\r\n",
             "STORED\r\n",
             True
         )
         self.assertTrue(lock._hasLock)
 
-    def test_acquire_invalid_token(self):
+    @inlineCallbacks
+    def test_acquire_invalid_token1(self):
         """
         L{MemCacheProtocol.get} should return a L{Deferred} which is
         called back with the value and the flag associated with the given key
         if the server returns a successful result.
         """
         
-        self.assertRaises(AssertionError, MemCacheTestCase.FakedMemcacheLock, *(self.proto, "lock", 1))
-        self.assertRaises(AssertionError, MemCacheTestCase.FakedMemcacheLock, *(self.proto, "lock", ("abc",)))
+        try:
+            lock = MemCacheTestCase.FakedMemcacheLock(self.proto, "lock", 1)
+            yield lock.acquire()
+            self.fail("AssertionError not raised")
+        except AssertionError:
+            pass
+        except:
+            self.fail("AssertionError not raised")
 
+        try:
+            lock = MemCacheTestCase.FakedMemcacheLock(self.proto, "lock", ("abc",))
+            yield lock.acquire()
+            self.fail("AssertionError not raised")
+        except AssertionError:
+            pass
+        except:
+            self.fail("AssertionError not raised")

Modified: CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/test/test_memcacher.py
===================================================================
--- CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/test/test_memcacher.py	2009-05-11 18:44:43 UTC (rev 4225)
+++ CalendarServer/branches/release/CalendarServer-2.2-dev/twistedcaldav/test/test_memcacher.py	2009-05-11 18:46:57 UTC (rev 4226)
@@ -110,3 +110,18 @@
             result = yield cacher.get("akey")
             self.assertEquals(None, result)
 
+    def test_keynormalization(self):
+
+        for processType in ("Single", "Combined",):
+            config.ProcessType = processType
+
+            cacher = Memcacher("testing")
+            
+            self.assertTrue(len(cacher._normalizeKey("A" * 100)) <= 250)
+            self.assertTrue(len(cacher._normalizeKey("A" * 512)) <= 250)
+            
+            key = cacher._normalizeKey(" \n\t\r" * 20)
+            self.assertTrue(" " not in key)
+            self.assertTrue("\n" not in key)
+            self.assertTrue("\t" not in key)
+            self.assertTrue("\r" not in key)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20090511/a83dc883/attachment-0001.html>


More information about the calendarserver-changes mailing list