summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorVishvananda Ishaya <vishvananda@gmail.com>2013-03-01 09:39:02 -0800
committerVishvananda Ishaya <vishvananda@gmail.com>2013-03-01 10:02:34 -0800
commit844123e2197358a2aeb39feb7275305f55b03e38 (patch)
tree702c6c25314477821db57df2855a490831081da5 /tests
parenteaab5fae2502198e9fa57d0d90a7204a2bd83b16 (diff)
downloadoslo-844123e2197358a2aeb39feb7275305f55b03e38.tar.gz
oslo-844123e2197358a2aeb39feb7275305f55b03e38.tar.xz
oslo-844123e2197358a2aeb39feb7275305f55b03e38.zip
Add simple in-memory cache from nova.
Nova's simple in-memory cache replicates the memcache interface, so clients can cache things in memcache or in memory using the same commands. Using memcached requires having the client library installed and the memcached_servers config option set. Callers can also pass in a list of memcached servers when they initialize the client. Change-Id: I831142a36797b04006cba4792df803e09f6fd69b
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/test_memorycache.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/unit/test_memorycache.py b/tests/unit/test_memorycache.py
new file mode 100644
index 0000000..48a36b5
--- /dev/null
+++ b/tests/unit/test_memorycache.py
@@ -0,0 +1,58 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+# Copyright 2013 Nebula, 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. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import datetime
+
+from openstack.common import memorycache
+from openstack.common import timeutils
+from tests import utils
+
+
+class MemorycacheTest(utils.BaseTestCase):
+ def setUp(self):
+ self.client = memorycache.get_client()
+ super(MemorycacheTest, self).setUp()
+
+ def test_set_get(self):
+ self.client.set('foo', 'bar')
+ self.assertEqual(self.client.get('foo'), 'bar')
+
+ def test_add_get(self):
+ self.client.add('foo', 'bar')
+ self.assertEqual(self.client.get('foo'), 'bar')
+
+ def test_set_add_get(self):
+ self.client.set('foo', 'bar')
+ self.client.add('foo', 'baz')
+ self.assertEqual(self.client.get('foo'), 'bar')
+
+ def test_set_delete(self):
+ self.client.set('foo', 'bar')
+ self.client.delete('foo')
+ self.assertEqual(self.client.get('foo'), None)
+
+ def test_timeout(self):
+ try:
+ now = datetime.datetime.utcnow()
+ timeutils.set_time_override(now)
+ self.client.set('foo', 'bar', time=3)
+ timeutils.set_time_override(now + datetime.timedelta(seconds=1))
+ self.assertEqual(self.client.get('foo'), 'bar')
+ timeutils.set_time_override(now + datetime.timedelta(seconds=3))
+ self.assertEqual(self.client.get('foo'), None)
+ finally:
+ timeutils.clear_time_override()