Amulet test fixes:
* Makefile: Only run precise-icehouse and trusty-icehouse tests by default and increase test timeout * t/00-setup: Simplify dependencies install * t/README: Mention charm-tools dependency * t/basic_deployment.py: - Specify unstable charm deployment - Let things settle with short sleep after deployment - Use dicts in add_services - Rename restart test - Cleanup on test failure
This commit is contained in:
parent
a67c2883d3
commit
f325458d63
3
Makefile
3
Makefile
@ -23,7 +23,8 @@ test:
|
|||||||
# coreycb note: The -v should only be temporary until Amulet sends
|
# coreycb note: The -v should only be temporary until Amulet sends
|
||||||
# raise_status() messages to stderr:
|
# raise_status() messages to stderr:
|
||||||
# https://bugs.launchpad.net/amulet/+bug/1320357
|
# https://bugs.launchpad.net/amulet/+bug/1320357
|
||||||
@juju test -v -p AMULET_HTTP_PROXY
|
@juju test -v -p AMULET_HTTP_PROXY --timeout 900 \
|
||||||
|
00-setup 14-basic-precise-icehouse 15-basic-trusty-icehouse
|
||||||
|
|
||||||
publish: lint unit_test
|
publish: lint unit_test
|
||||||
bzr push lp:charms/nova-compute
|
bzr push lp:charms/nova-compute
|
||||||
|
@ -4,7 +4,7 @@ set -ex
|
|||||||
|
|
||||||
sudo add-apt-repository --yes ppa:juju/stable
|
sudo add-apt-repository --yes ppa:juju/stable
|
||||||
sudo apt-get update --yes
|
sudo apt-get update --yes
|
||||||
sudo apt-get install --yes python-amulet
|
sudo apt-get install --yes python-amulet \
|
||||||
sudo apt-get install --yes python-glanceclient
|
python-glanceclient \
|
||||||
sudo apt-get install --yes python-keystoneclient
|
python-keystoneclient \
|
||||||
sudo apt-get install --yes python-novaclient
|
python-novaclient
|
||||||
|
@ -1,6 +1,12 @@
|
|||||||
This directory provides Amulet tests that focus on verification of nova-compute
|
This directory provides Amulet tests that focus on verification of nova-compute
|
||||||
deployments.
|
deployments.
|
||||||
|
|
||||||
|
In order to run tests, you'll need charm-tools installed (in addition to
|
||||||
|
juju, of course):
|
||||||
|
sudo add-apt-repository ppa:juju/stable
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install charm-tools
|
||||||
|
|
||||||
If you use a web proxy server to access the web, you'll need to set the
|
If you use a web proxy server to access the web, you'll need to set the
|
||||||
AMULET_HTTP_PROXY environment variable to the http URL of the proxy server.
|
AMULET_HTTP_PROXY environment variable to the http URL of the proxy server.
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
|
||||||
import amulet
|
import amulet
|
||||||
|
import time
|
||||||
|
|
||||||
from charmhelpers.contrib.openstack.amulet.deployment import (
|
from charmhelpers.contrib.openstack.amulet.deployment import (
|
||||||
OpenStackAmuletDeployment
|
OpenStackAmuletDeployment
|
||||||
@ -19,9 +20,9 @@ u = OpenStackAmuletUtils(ERROR)
|
|||||||
class NovaBasicDeployment(OpenStackAmuletDeployment):
|
class NovaBasicDeployment(OpenStackAmuletDeployment):
|
||||||
"""Amulet tests on a basic nova compute deployment."""
|
"""Amulet tests on a basic nova compute deployment."""
|
||||||
|
|
||||||
def __init__(self, series=None, openstack=None, source=None):
|
def __init__(self, series=None, openstack=None, source=None, stable=False):
|
||||||
"""Deploy the entire test environment."""
|
"""Deploy the entire test environment."""
|
||||||
super(NovaBasicDeployment, self).__init__(series, openstack, source)
|
super(NovaBasicDeployment, self).__init__(series, openstack, source, stable)
|
||||||
self._add_services()
|
self._add_services()
|
||||||
self._add_relations()
|
self._add_relations()
|
||||||
self._configure_services()
|
self._configure_services()
|
||||||
@ -29,13 +30,16 @@ class NovaBasicDeployment(OpenStackAmuletDeployment):
|
|||||||
self._initialize_tests()
|
self._initialize_tests()
|
||||||
|
|
||||||
def _add_services(self):
|
def _add_services(self):
|
||||||
"""Add the service that we're testing, including the number of units,
|
"""Add services
|
||||||
where nova-compute is local, and the other charms are from
|
|
||||||
the charm store."""
|
Add the services that we're testing, where nova-compute is local,
|
||||||
this_service = ('nova-compute', 1)
|
and the rest of the service are from lp branches that are
|
||||||
other_services = [('mysql', 1), ('rabbitmq-server', 1),
|
compatible with the local charm (e.g. stable or next).
|
||||||
('nova-cloud-controller', 1), ('keystone', 1),
|
"""
|
||||||
('glance', 1)]
|
this_service = {'name': 'nova-compute'}
|
||||||
|
other_services = [{'name': 'mysql'}, {'name': 'rabbitmq-server'},
|
||||||
|
{'name': 'nova-cloud-controller'}, {'name': 'keystone'},
|
||||||
|
{'name': 'glance'}]
|
||||||
super(NovaBasicDeployment, self)._add_services(this_service,
|
super(NovaBasicDeployment, self)._add_services(this_service,
|
||||||
other_services)
|
other_services)
|
||||||
|
|
||||||
@ -76,6 +80,9 @@ class NovaBasicDeployment(OpenStackAmuletDeployment):
|
|||||||
self.nova_cc_sentry = self.d.sentry.unit['nova-cloud-controller/0']
|
self.nova_cc_sentry = self.d.sentry.unit['nova-cloud-controller/0']
|
||||||
self.glance_sentry = self.d.sentry.unit['glance/0']
|
self.glance_sentry = self.d.sentry.unit['glance/0']
|
||||||
|
|
||||||
|
# Let things settle a bit before moving forward
|
||||||
|
time.sleep(30)
|
||||||
|
|
||||||
# Authenticate admin with keystone
|
# Authenticate admin with keystone
|
||||||
self.keystone = u.authenticate_keystone_admin(self.keystone_sentry,
|
self.keystone = u.authenticate_keystone_admin(self.keystone_sentry,
|
||||||
user='admin',
|
user='admin',
|
||||||
@ -300,9 +307,14 @@ class NovaBasicDeployment(OpenStackAmuletDeployment):
|
|||||||
message = u.relation_error('nova-cc cloud-compute', ret)
|
message = u.relation_error('nova-cc cloud-compute', ret)
|
||||||
amulet.raise_status(amulet.FAIL, msg=message)
|
amulet.raise_status(amulet.FAIL, msg=message)
|
||||||
|
|
||||||
def test_restart_on_config_change(self):
|
def test_z_restart_on_config_change(self):
|
||||||
"""Verify that the specified services are restarted when the config
|
"""Verify that the specified services are restarted when the config
|
||||||
is changed."""
|
is changed.
|
||||||
|
|
||||||
|
Note(coreycb): The method name with the _z_ is a little odd
|
||||||
|
but it forces the test to run last. It just makes things
|
||||||
|
easier because restarting services requires re-authorization.
|
||||||
|
"""
|
||||||
# NOTE(coreycb): Skipping failing test on essex until resolved.
|
# NOTE(coreycb): Skipping failing test on essex until resolved.
|
||||||
# config-flags don't take effect on essex.
|
# config-flags don't take effect on essex.
|
||||||
if self._get_openstack_release() == self.precise_essex:
|
if self._get_openstack_release() == self.precise_essex:
|
||||||
@ -316,6 +328,7 @@ class NovaBasicDeployment(OpenStackAmuletDeployment):
|
|||||||
for s in services:
|
for s in services:
|
||||||
if not u.service_restarted(self.nova_compute_sentry, s,
|
if not u.service_restarted(self.nova_compute_sentry, s,
|
||||||
'/etc/nova/nova.conf', sleep_time=time):
|
'/etc/nova/nova.conf', sleep_time=time):
|
||||||
|
self.d.configure('nova-compute', {'config-flags': 'verbose=True'})
|
||||||
msg = "service {} didn't restart after config change".format(s)
|
msg = "service {} didn't restart after config change".format(s)
|
||||||
amulet.raise_status(amulet.FAIL, msg=msg)
|
amulet.raise_status(amulet.FAIL, msg=msg)
|
||||||
time = 0
|
time = 0
|
||||||
|
Loading…
Reference in New Issue
Block a user