memcached_tests.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. """Tests for cement.ext.ext_memcached."""
  2. import sys
  3. import pylibmc
  4. from time import sleep
  5. from random import random
  6. from cement.core import handler
  7. from cement.utils import test
  8. from cement.utils.misc import init_defaults
  9. class MemcachedExtTestCase(test.CementTestCase):
  10. def setUp(self):
  11. self.key = "cement-tests-random-key-%s" % random()
  12. defaults = init_defaults('tests', 'cache.memcached')
  13. defaults['cache.memcached']['hosts'] = '127.0.0.1, localhost'
  14. self.app = self.make_app('tests',
  15. config_defaults=defaults,
  16. extensions=['memcached'],
  17. cache_handler='memcached',
  18. )
  19. self.app.setup()
  20. def tearDown(self):
  21. self.app.cache.delete(self.key)
  22. def test_memcache_list_type_config(self):
  23. defaults = init_defaults('tests', 'cache.memcached')
  24. defaults['cache.memcached']['hosts'] = ['127.0.0.1', 'localhost']
  25. self.app = self.make_app('tests',
  26. config_defaults=defaults,
  27. extensions=['memcached'],
  28. cache_handler='memcached',
  29. )
  30. self.app.setup()
  31. self.eq(self.app.config.get('cache.memcached', 'hosts'),
  32. ['127.0.0.1', 'localhost'])
  33. def test_memcache_str_type_config(self):
  34. defaults = init_defaults('tests', 'cache.memcached')
  35. defaults['cache.memcached']['hosts'] = '127.0.0.1, localhost'
  36. self.app = self.make_app('tests',
  37. config_defaults=defaults,
  38. extensions=['memcached'],
  39. cache_handler='memcached',
  40. )
  41. self.app.setup()
  42. self.eq(self.app.config.get('cache.memcached', 'hosts'),
  43. ['127.0.0.1', 'localhost'])
  44. def test_memcached_set(self):
  45. self.app.cache.set(self.key, 1001)
  46. self.eq(self.app.cache.get(self.key), 1001)
  47. def test_memcached_get(self):
  48. # get empty value
  49. self.app.cache.delete(self.key)
  50. self.eq(self.app.cache.get(self.key), None)
  51. # get empty value with fallback
  52. self.eq(self.app.cache.get(self.key, 1234), 1234)
  53. def test_memcached_delete(self):
  54. self.app.cache.delete(self.key)
  55. def test_memcached_purge(self):
  56. self.app.cache.set(self.key, 1002)
  57. self.app.cache.purge()
  58. self.eq(self.app.cache.get(self.key), None)
  59. def test_memcache_expire(self):
  60. self.app.cache.set(self.key, 1003, time=2)
  61. sleep(3)
  62. self.eq(self.app.cache.get(self.key), None)