[Checkins] SVN: lovely.memcached/trunk/ added hits and misses counter for the testing client.

Jürgen Kartnaller juergen at kartnaller.at
Tue Jun 19 03:44:31 EDT 2007


Log message for revision 76781:
  added hits and misses counter for the testing client.
  bumped version to 0.1.1
  

Changed:
  U   lovely.memcached/trunk/CHANGES.txt
  U   lovely.memcached/trunk/setup.py
  U   lovely.memcached/trunk/src/lovely/memcached/testing/README.txt
  U   lovely.memcached/trunk/src/lovely/memcached/testing/memcache.py

-=-
Modified: lovely.memcached/trunk/CHANGES.txt
===================================================================
--- lovely.memcached/trunk/CHANGES.txt	2007-06-19 07:23:28 UTC (rev 76780)
+++ lovely.memcached/trunk/CHANGES.txt	2007-06-19 07:44:30 UTC (rev 76781)
@@ -2,6 +2,12 @@
 Changes in lovely.memcached
 ===========================
 
+2007/06/19 0.1.1
+================
+
+- added hits and misses counter for the testing client
+
+
 2007/06/04 0.1.0
 ================
 

Modified: lovely.memcached/trunk/setup.py
===================================================================
--- lovely.memcached/trunk/setup.py	2007-06-19 07:23:28 UTC (rev 76780)
+++ lovely.memcached/trunk/setup.py	2007-06-19 07:44:30 UTC (rev 76781)
@@ -3,7 +3,7 @@
 
 setup (
     name='lovely.memcached',
-    version='0.1.0',
+    version='0.1.1',
     author = "Lovely Systems",
     author_email = "office at lovelysystems.com",
     description = "A memcached client utiltiy for zope 3",
@@ -24,7 +24,7 @@
                                   'zope.testbrowser',
                                   ]),
     install_requires = ['setuptools',
-                        'python-memcached',    
+                        'python-memcached',
                         'zope.app.component',
                         'zope.app.intid',
                         'zope.event',

Modified: lovely.memcached/trunk/src/lovely/memcached/testing/README.txt
===================================================================
--- lovely.memcached/trunk/src/lovely/memcached/testing/README.txt	2007-06-19 07:23:28 UTC (rev 76780)
+++ lovely.memcached/trunk/src/lovely/memcached/testing/README.txt	2007-06-19 07:44:30 UTC (rev 76781)
@@ -26,6 +26,34 @@
   >>> cache.query('key') is None
   True
 
+The testcache has also a hit/misses counter which is sometimes useful for
+testing.
+
+  >>> cache.hits
+  2
+  >>> cache.misses
+  2
+  >>> cache.query('key') is None
+  True
+  >>> cache.hits
+  2
+  >>> cache.misses
+  3
+  >>> cache.set('value', 'key')
+  '613fb124907164bf8f0b04beb02cf59e'
+  >>> cache.query('key')
+  'value'
+  >>> cache.hits
+  3
+  >>> cache.misses
+  3
+
+  >>> cache.resetCounts()
+  >>> cache.hits
+  0
+  >>> cache.misses
+  0
+
 The TestMemcachedClient does it's best to simulate the behaviour of the
 original memcached implementation.
 

Modified: lovely.memcached/trunk/src/lovely/memcached/testing/memcache.py
===================================================================
--- lovely.memcached/trunk/src/lovely/memcached/testing/memcache.py	2007-06-19 07:23:28 UTC (rev 76780)
+++ lovely.memcached/trunk/src/lovely/memcached/testing/memcache.py	2007-06-19 07:44:30 UTC (rev 76781)
@@ -27,11 +27,23 @@
     def _instantiateClient(self, debug):
         return SimulatedMemcached()
 
+    @property
+    def hits(self):
+        return self.client.hits
 
+    @property
+    def misses(self):
+        return self.client.misses
+
+    def resetCounts(self):
+        self.client.resetCounts()
+
+
 class SimulatedMemcached(object):
 
     def __init__(self):
         self.cache = {}
+        self.resetCounts()
 
     def getStats(self):
         return []
@@ -51,10 +63,13 @@
         str(key)
         data = self.cache.get(key, None)
         if data is None:
+            self._misses += 1
             return None
         if data[1] is None or datetime.now()<data[1]:
+            self._hits += 1
             return data[0]
         del self.cache[key]
+        self._misses += 1
         return None
 
     def delete(self, key):
@@ -64,3 +79,15 @@
     def flush_all(self):
         self.cache = {}
 
+    @property
+    def hits(self):
+        return self._hits
+
+    @property
+    def misses(self):
+        return self._misses
+
+    def resetCounts(self):
+        self._hits = 0
+        self._misses = 0
+



More information about the Checkins mailing list