Files
zaza-openstack-tests/zaza/openstack/charm_tests/ceilometer/tests.py
2019-10-04 00:19:49 +01:00

123 lines
4.6 KiB
Python

#!/usr/bin/env python3
# Copyright 2019 Canonical Ltd.
#
# 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.
"""Encapsulate Ceilometer testing."""
import logging
import zaza.openstack.utilities.openstack as openstack_utils
import zaza.openstack.charm_tests.test_utils as test_utils
class CeilometerTest(test_utils.OpenStackBaseTest):
"""Encapsulate Ceilometer tests."""
CONF_FILE = '/etc/ceilometer/ceilometer.conf'
XENIAL_PIKE = openstack_utils.get_os_release('xenial_pike')
XENIAL_OCATA = openstack_utils.get_os_release('xenial_ocata')
XENIAL_NEWTON = openstack_utils.get_os_release('xenial_newton')
TRUSTY_MITAKA = openstack_utils.get_os_release('trusty_mitaka')
TRUSTY_LIBERTY = openstack_utils.get_os_release('trusty_liberty')
@classmethod
def setUpClass(cls):
"""Run class setup for running Ceilometer tests."""
super(CeilometerTest, cls).setUpClass()
@property
def services(self):
"""Return a list services for Openstack Release.
Note: disabling ceilometer-polling and ceilometer-agent-central due to
bug #1846390.
https://bugs.launchpad.net/charms/+source/ceilometer/+bug/1846390
"""
current_release = openstack_utils.get_os_release()
services = []
if current_release >= CeilometerTest.XENIAL_PIKE:
# services.append('ceilometer-polling: AgentManager worker(0)')
services.append('ceilometer-agent-notification: '
'NotificationService worker(0)')
elif current_release >= CeilometerTest.XENIAL_OCATA:
services.append('ceilometer-collector: CollectorService worker(0)')
# services.append('ceilometer-polling: AgentManager worker(0)')
services.append('ceilometer-agent-notification: '
'NotificationService worker(0)')
services.append('apache2')
elif current_release >= CeilometerTest.XENIAL_NEWTON:
services.append('ceilometer-collector - CollectorService(0)')
# services.append('ceilometer-polling - AgentManager(0)')
services.append('ceilometer-agent-notification - '
'NotificationService(0)')
services.append('ceilometer-api')
else:
services.append('ceilometer-collector')
services.append('ceilometer-api')
services.append('ceilometer-agent-notification')
if current_release < CeilometerTest.TRUSTY_MITAKA:
services.append('ceilometer-alarm-notifier')
services.append('ceilometer-alarm-evaluator')
# if current_release >= CeilometerTest.TRUSTY_LIBERTY:
# Liberty and later
# services.append('ceilometer-polling')
# else:
# Juno and earlier
# services.append('ceilometer-agent-central')
return services
# NOTE(beisner): need to add more functional tests
def test_900_restart_on_config_change(self):
"""Checking restart happens on config change."""
# Expected default and alternate values
current_value = openstack_utils.get_application_config_option(
'ceilometer', 'debug'
)
assert type(current_value) == bool
new_value = not current_value
# Convert bool to str
current_value = str(current_value)
new_value = str(new_value)
set_default = {'debug': current_value}
set_alternate = {'debug': new_value}
default_entry = {'DEFAULT': {'debug': [current_value]}}
alternate_entry = {'DEFAULT': {'debug': [new_value]}}
logging.info('changing config: {}'.format(set_alternate))
self.restart_on_changed(
CeilometerTest.CONF_FILE,
set_default,
set_alternate,
default_entry,
alternate_entry,
self.services)
def test_901_pause_resume(self):
"""Run pause and resume tests.
Pause service and check services are stopped then resume and check
they are started.
"""
with self.pause_resume(self.services):
logging.info("Testing pause and resume")