diff options
| author | Chris Behrens <cbehrens@codestud.com> | 2012-06-25 23:17:33 +0000 |
|---|---|---|
| committer | Chris Behrens <cbehrens@codestud.com> | 2012-06-26 18:00:55 +0000 |
| commit | 9f9fbc54e7336da10fc3056bdaca2ec7d01c7f94 (patch) | |
| tree | 73a9a41a2abdda89796dece40ece12cdd6ab989a /nova/tests | |
| parent | 1a169b8bf98a7fa0c1361ac942bbd9d4041f8e63 (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.py | 4 | ||||
| -rw-r--r-- | nova/tests/api/openstack/test_wsgi.py | 23 |
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 |
