60965a50bc
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
51 lines
1.7 KiB
Python
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()
|