summaryrefslogtreecommitdiffstats
path: root/nova/tests
diff options
context:
space:
mode:
authorChris Behrens <cbehrens@codestud.com>2012-06-25 23:17:33 +0000
committerChris Behrens <cbehrens@codestud.com>2012-06-26 18:00:55 +0000
commit9f9fbc54e7336da10fc3056bdaca2ec7d01c7f94 (patch)
tree73a9a41a2abdda89796dece40ece12cdd6ab989a /nova/tests
parent1a169b8bf98a7fa0c1361ac942bbd9d4041f8e63 (diff)
Remove extra DB calls for instances from OS API extensions
Allow the core API to store DB results so that extensions can use data already retrieved within the same API request...eliminating extra expensive DB calls. This implements storing of instances only, so far. Fixes bug 1017756 Change-Id: I98a2e3323f5ea69ab9e7470f95d821790510989e
Diffstat (limited to 'nova/tests')
-rw-r--r--nova/tests/api/openstack/fakes.py4
-rw-r--r--nova/tests/api/openstack/test_wsgi.py23
2 files changed, 24 insertions, 3 deletions
diff --git a/nova/tests/api/openstack/fakes.py b/nova/tests/api/openstack/fakes.py
index 1479a8f6e..ca6b25c67 100644
--- a/nova/tests/api/openstack/fakes.py
+++ b/nova/tests/api/openstack/fakes.py
@@ -301,13 +301,13 @@ class FakeRequestContext(context.RequestContext):
return super(FakeRequestContext, self).__init__(*args, **kwargs)
-class HTTPRequest(webob.Request):
+class HTTPRequest(os_wsgi.Request):
@classmethod
def blank(cls, *args, **kwargs):
kwargs['base_url'] = 'http://localhost/v2'
use_admin_context = kwargs.pop('use_admin_context', False)
- out = webob.Request.blank(*args, **kwargs)
+ out = os_wsgi.Request.blank(*args, **kwargs)
out.environ['nova.context'] = FakeRequestContext('fake_user', 'fake',
is_admin=use_admin_context)
return out
diff --git a/nova/tests/api/openstack/test_wsgi.py b/nova/tests/api/openstack/test_wsgi.py
index f32704775..f45450495 100644
--- a/nova/tests/api/openstack/test_wsgi.py
+++ b/nova/tests/api/openstack/test_wsgi.py
@@ -75,6 +75,27 @@ class RequestTest(test.TestCase):
result = request.best_match_content_type()
self.assertEqual(result, "application/json")
+ def test_cache_and_retrieve_instances(self):
+ request = wsgi.Request.blank('/foo')
+ instances = []
+ for x in xrange(3):
+ instances.append({'uuid': 'uuid%s' % x})
+ # Store 2
+ request.cache_db_instances(instances[:2])
+ # Store 1
+ request.cache_db_instance(instances[2])
+ self.assertEqual(request.get_db_instance('uuid0'),
+ instances[0])
+ self.assertEqual(request.get_db_instance('uuid1'),
+ instances[1])
+ self.assertEqual(request.get_db_instance('uuid2'),
+ instances[2])
+ self.assertEqual(request.get_db_instance('uuid3'), None)
+ self.assertEqual(request.get_db_instances(),
+ {'uuid0': instances[0],
+ 'uuid1': instances[1],
+ 'uuid2': instances[2]})
+
class ActionDispatcherTest(test.TestCase):
def test_dispatch(self):
@@ -215,7 +236,7 @@ class ResourceTest(test.TestCase):
expected = 'off'
self.assertEqual(actual, expected)
- def test_get_method_unknown_controller_action(self):
+ def test_get_method_unknown_controller_method(self):
class Controller(object):
def index(self, req, pants=None):
return pants