nova/nova/tests/test_test.py
Russell Bryant 60965a50bc Get instances from conductor in init_host.
Update compute's init_host() to get the list of instances on this host
via the conductor service.  This removes a db read from compute.

Most of the test fixes are to ensure conductor is running anywhere that
compute is running.  The EC2 availability zones test change (from 13 to
15) is because this output includes info on each service that's running,
so running nova-conductor in this test suite added more info here.

Note that this uses the previously-added ping() call in conductor to
determine when the service is available. The compute manager pings the
conductor every ten seconds for ten attempts and then falls back to the
default configured RPC timeout. This should be a reasonable compromise
between requiring strict service startup ordering and extreme delays.

Part of blueprint no-db-compute.

Change-Id: Ie2953f7ae79819a1b6e24e8997ed4332fd4d2356
2013-01-07 11:28:55 -08:00

51 lines
1.7 KiB
Python

# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2010 United States Government as represented by the
# Administrator of the National Aeronautics and Space Administration.
# 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.
"""Tests for the testing base code."""
from nova.openstack.common import cfg
from nova.openstack.common import rpc
from nova import test
CONF = cfg.CONF
CONF.import_opt('use_local', 'nova.conductor.api', group='conductor')
class IsolationTestCase(test.TestCase):
"""Ensure that things are cleaned up after failed tests.
These tests don't really do much here, but if isolation fails a bunch
of other tests should fail.
"""
def test_service_isolation(self):
self.flags(use_local=True, group='conductor')
self.useFixture(test.ServiceFixture('compute'))
def test_rpc_consumer_isolation(self):
class NeverCalled(object):
def __getattribute__(*args):
assert False, "I should never get called."
connection = rpc.create_connection(new=True)
proxy = NeverCalled()
connection.create_consumer('compute', proxy, fanout=False)
connection.consume_in_thread()