diff --git a/nova/test.py b/nova/test.py index 031618a71d43..5895f60944d0 100644 --- a/nova/test.py +++ b/nova/test.py @@ -409,6 +409,7 @@ class TestCase(testtools.TestCase): CONF.set_override(k, v, group) def start_service(self, name, host=None, **kwargs): + cell = None if name == 'compute' and self.USES_DB: # NOTE(danms): We need to create the HostMapping first, because # otherwise we'll fail to update the scheduler while running @@ -424,7 +425,7 @@ class TestCase(testtools.TestCase): # Make sure that CONF.host is relevant to the right hostname self.useFixture(nova_fixtures.ConfPatcher(host=host)) svc = self.useFixture( - nova_fixtures.ServiceFixture(name, host, **kwargs)) + nova_fixtures.ServiceFixture(name, host, cell=cell, **kwargs)) return svc.service diff --git a/nova/tests/fixtures.py b/nova/tests/fixtures.py index 0871e077e482..dd66530d4ef3 100644 --- a/nova/tests/fixtures.py +++ b/nova/tests/fixtures.py @@ -65,7 +65,7 @@ SESSION_CONFIGURED = False class ServiceFixture(fixtures.Fixture): """Run a service as a test fixture.""" - def __init__(self, name, host=None, **kwargs): + def __init__(self, name, host=None, cell=None, **kwargs): name = name # If not otherwise specified, the host will default to the # name of the service. Some things like aggregates care that @@ -73,12 +73,18 @@ class ServiceFixture(fixtures.Fixture): host = host or name kwargs.setdefault('host', host) kwargs.setdefault('binary', 'nova-%s' % name) + self.cell = cell self.kwargs = kwargs def setUp(self): super(ServiceFixture, self).setUp() - self.service = service.Service.create(**self.kwargs) - self.service.start() + self.ctxt = context.get_admin_context() + if self.cell: + context.set_target_cell(self.ctxt, self.cell) + with mock.patch('nova.context.get_admin_context', + return_value=self.ctxt): + self.service = service.Service.create(**self.kwargs) + self.service.start() self.addCleanup(self.service.kill)