summaryrefslogtreecommitdiff
path: root/django/tests/cache_tests.py
diff options
context:
space:
mode:
authorAdrian Holovaty <adrian@holovaty.com>2005-07-13 01:25:57 +0000
committerAdrian Holovaty <adrian@holovaty.com>2005-07-13 01:25:57 +0000
commited114e15106192b22ebb78ef5bf5bce72b419d13 (patch)
treef7c27f035cca8d50bd69e2ecbd7497fccec4a35a /django/tests/cache_tests.py
parent07ffc7d605cc96557db28a9e35da69bc0719611b (diff)
Imported Django from private SVN repository (created from r. 8825)
git-svn-id: http://code.djangoproject.com/svn/django/trunk@3 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/tests/cache_tests.py')
-rw-r--r--django/tests/cache_tests.py119
1 files changed, 119 insertions, 0 deletions
diff --git a/django/tests/cache_tests.py b/django/tests/cache_tests.py
new file mode 100644
index 0000000000..a9cce041fa
--- /dev/null
+++ b/django/tests/cache_tests.py
@@ -0,0 +1,119 @@
+"""
+Unit tests for django.core.cache
+
+If you don't have memcached running on localhost port 11211, the memcached tests
+will fail.
+"""
+
+from django.core import cache
+import unittest
+import time
+
+# functions/classes for complex data type tests
+def f():
+ return 42
+class C:
+ def m(n):
+ return 24
+
+class CacheBackendsTest(unittest.TestCase):
+
+ def testBackends(self):
+ sc = cache.get_cache('simple://')
+ mc = cache.get_cache('memcached://127.0.0.1:11211/')
+ self.failUnless(isinstance(sc, cache._SimpleCache))
+ self.failUnless(isinstance(mc, cache._MemcachedCache))
+
+ def testInvalidBackends(self):
+ self.assertRaises(cache.InvalidCacheBackendError, cache.get_cache, 'nothing://foo/')
+ self.assertRaises(cache.InvalidCacheBackendError, cache.get_cache, 'not a uri')
+
+ def testDefaultTimeouts(self):
+ sc = cache.get_cache('simple:///?timeout=15')
+ mc = cache.get_cache('memcached://127.0.0.1:11211/?timeout=15')
+ self.assertEquals(sc.default_timeout, 15)
+ self.assertEquals(sc.default_timeout, 15)
+
+class SimpleCacheTest(unittest.TestCase):
+
+ def setUp(self):
+ self.cache = cache.get_cache('simple://')
+
+ def testGetSet(self):
+ self.cache.set('key', 'value')
+ self.assertEqual(self.cache.get('key'), 'value')
+
+ def testNonExistantKeys(self):
+ self.assertEqual(self.cache.get('does not exist'), None)
+ self.assertEqual(self.cache.get('does not exist', 'bang!'), 'bang!')
+
+ def testGetMany(self):
+ self.cache.set('a', 'a')
+ self.cache.set('b', 'b')
+ self.cache.set('c', 'c')
+ self.cache.set('d', 'd')
+ self.assertEqual(self.cache.get_many(['a', 'c', 'd']), {'a' : 'a', 'c' : 'c', 'd' : 'd'})
+ self.assertEqual(self.cache.get_many(['a', 'b', 'e']), {'a' : 'a', 'b' : 'b'})
+
+ def testDelete(self):
+ self.cache.set('key1', 'spam')
+ self.cache.set('key2', 'eggs')
+ self.assertEqual(self.cache.get('key1'), 'spam')
+ self.cache.delete('key1')
+ self.assertEqual(self.cache.get('key1'), None)
+ self.assertEqual(self.cache.get('key2'), 'eggs')
+
+ def testHasKey(self):
+ self.cache.set('hello', 'goodbye')
+ self.assertEqual(self.cache.has_key('hello'), True)
+ self.assertEqual(self.cache.has_key('goodbye'), False)
+
+ def testDataTypes(self):
+ items = {
+ 'string' : 'this is a string',
+ 'int' : 42,
+ 'list' : [1, 2, 3, 4],
+ 'tuple' : (1, 2, 3, 4),
+ 'dict' : {'A': 1, 'B' : 2},
+ 'function' : f,
+ 'class' : C,
+ }
+ for (key, value) in items.items():
+ self.cache.set(key, value)
+ self.assertEqual(self.cache.get(key), value)
+
+ def testExpiration(self):
+ self.cache.set('expire', 'very quickly', 1)
+ time.sleep(2)
+ self.assertEqual(self.cache.get('expire'), None)
+
+ def testCull(self):
+ c = cache.get_cache('simple://?max_entries=9&cull_frequency=3')
+ for i in range(10):
+ c.set('culltest%i' % i, i)
+ n = 0
+ for i in range(10):
+ if c.get('culltest%i' % i):
+ n += 1
+ self.assertEqual(n, 6)
+
+ def testCullAll(self):
+ c = cache.get_cache('simple://?max_entries=9&cull_frequency=0')
+ for i in range(10):
+ c.set('cullalltest%i' % i, i)
+ for i in range(10):
+ self.assertEqual(self.cache.get('cullalltest%i' % i), None)
+
+class MemcachedCacheTest(SimpleCacheTest):
+
+ def setUp(self):
+ self.cache = cache.get_cache('memcached://127.0.0.1:11211/')
+
+ testCull = testCullAll = lambda s: None
+
+def tests():
+ s = unittest.TestLoader().loadTestsFromName(__name__)
+ unittest.TextTestRunner(verbosity=0).run(s)
+
+if __name__ == "__main__":
+ tests()