diff --git a/keystone/common/wsgi.py b/keystone/common/wsgi.py index 59b49de242..ee5aac6bd6 100644 --- a/keystone/common/wsgi.py +++ b/keystone/common/wsgi.py @@ -55,6 +55,7 @@ class Server(object): self.port = port self.pool = eventlet.GreenPool(threads) self.socket_info = {} + self.greenthread = None def start(self, host='0.0.0.0', key=None, backlog=128): """Run a WSGI server with the given application.""" @@ -63,10 +64,14 @@ class Server(object): 'host': host, 'port': self.port}) socket = eventlet.listen((host, self.port), backlog=backlog) - self.pool.spawn_n(self._run, self.application, socket) + self.greenthread = self.pool.spawn(self._run, self.application, socket) if key: self.socket_info[key] = socket.getsockname() + def kill(self): + if self.greenthread: + self.greenthread.kill() + def wait(self): """Wait until all servers have completed running.""" try: diff --git a/tests/test_keystoneclient.py b/tests/test_keystoneclient.py index 036e62d8c5..3f17cd9242 100644 --- a/tests/test_keystoneclient.py +++ b/tests/test_keystoneclient.py @@ -1,12 +1,10 @@ # vim: tabstop=4 shiftwidth=4 softtabstop=4 import nose.exc -from keystone import config from keystone import test import default_fixtures -CONF = config.CONF OPENSTACK_REPO = 'https://review.openstack.org/p/openstack' KEYSTONECLIENT_REPO = '%s/python-keystoneclient.git' % OPENSTACK_REPO @@ -19,9 +17,6 @@ class CompatTestCase(test.TestCase): self.add_path(revdir) self.clear_module('keystoneclient') - self.public_app = self.loadapp('keystone', name='main') - self.admin_app = self.loadapp('keystone', name='admin') - self.load_backends() self.load_fixtures(default_fixtures) @@ -36,14 +31,19 @@ class CompatTestCase(test.TestCase): self.user_foo['id'], self.tenant_bar['id'], dict(roles=['keystone_admin'], is_admin='1')) + def tearDown(self): + self.public_server.kill() + self.admin_server.kill() + self.public_server = None + self.admin_server = None + super(CompatTestCase, self).tearDown() + def _public_url(self): public_port = self.public_server.socket_info['socket'][1] - CONF.public_port = public_port return "http://localhost:%s/v2.0" % public_port def _admin_url(self): admin_port = self.admin_server.socket_info['socket'][1] - CONF.admin_port = admin_port return "http://localhost:%s/v2.0" % admin_port def _client(self, **kwargs): @@ -473,10 +473,10 @@ class KcEssex3TestCase(CompatTestCase, KeystoneClientTests): roleref_refs = client.roles.get_user_role_refs( user_id=self.user_foo['id']) for roleref_ref in roleref_refs: - if (roleref_ref.roleId == self.role_useless['id'] and - roleref_ref.tenantId == self.tenant_baz['id']): - # use python's scope fall through to leave roleref_ref set - break + if (roleref_ref.roleId == self.role_useless['id'] + and roleref_ref.tenantId == self.tenant_baz['id']): + # use python's scope fall through to leave roleref_ref set + break client.roles.remove_user_from_tenant(tenant_id=self.tenant_baz['id'], user_id=self.user_foo['id'],