fuel-qa/fuelweb_test/tests/test_services.py
Alexey Stepanov ed07d4aae7 Python3 code compatibility: division, round
Make division transparent-compatible (from __future__ import division, // for strict int result)
Do not use round due to different types of result objects

blueprint fuel-qa-python3-compatibility
Related-bug: #1556791

Change-Id: I7bb173c6f97ac046af45c3f52cc32846a93a8981
2016-03-22 17:56:24 +03:00

987 lines
36 KiB
Python

# Copyright 2013 Mirantis, Inc.
#
# 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.
from __future__ import division
from proboscis import asserts
from proboscis import test
from proboscis.asserts import assert_equal
from fuelweb_test.helpers import checkers
from fuelweb_test.helpers import utils
from fuelweb_test.helpers.decorators import log_snapshot_after_test
from fuelweb_test.helpers import os_actions
from fuelweb_test import settings
from fuelweb_test import logger
from fuelweb_test.tests.base_test_case import SetupEnvironment
from fuelweb_test.tests.base_test_case import TestBasic
@test(groups=["services", "services.sahara", "services_ha_one_controller"])
class SaharaHAOneController(TestBasic):
"""Sahara ha with 1 controller tests.
Don't recommend to start tests without kvm
Put Sahara image before start
"""
@test(depends_on=[SetupEnvironment.prepare_slaves_3],
groups=["deploy_sahara_ha_one_controller_tun"])
@log_snapshot_after_test
def deploy_sahara_ha_one_controller_tun(self):
"""Deploy cluster in ha mode with 1 controller Sahara and Neutron VXLAN
Scenario:
1. Create a Fuel cluster. Set the option for Sahara installation
2. Add 1 node with "controller" role
3. Add 1 node with "compute" role
4. Deploy the Fuel cluster
5. Verify Sahara service on controller
6. Run all sanity and smoke tests
7. Register Vanilla2 image for Sahara
8. Run platform Vanilla2 test for Sahara
Duration 65m
Snapshot: deploy_sahara_ha_one_controller_tun
"""
self.env.revert_snapshot("ready_with_3_slaves")
logger.debug('Create Fuel cluster for Sahara tests')
data = {
'sahara': True,
'net_provider': 'neutron',
'net_segment_type': settings.NEUTRON_SEGMENT['tun'],
'tenant': 'saharaSimple',
'user': 'saharaSimple',
'password': 'saharaSimple'
}
cluster_id = self.fuel_web.create_cluster(
name=self.__class__.__name__,
mode=settings.DEPLOYMENT_MODE,
settings=data
)
self.fuel_web.update_nodes(
cluster_id,
{
'slave-01': ['controller'],
'slave-02': ['compute']
}
)
self.fuel_web.deploy_cluster_wait(cluster_id)
os_conn = os_actions.OpenStackActions(
self.fuel_web.get_public_vip(cluster_id),
data['user'], data['password'], data['tenant'])
self.fuel_web.assert_cluster_ready(os_conn, smiles_count=5)
logger.debug('Verify Sahara service on controller')
_ip = self.fuel_web.get_nailgun_node_by_name("slave-01")['ip']
# count = 1 + api_workers (from sahara.conf)
checkers.verify_service(_ip, service_name='sahara-api', count=2)
# count = 2 * 1 (hardcoded by deployment team)
checkers.verify_service(_ip, service_name='sahara-engine', count=2)
logger.debug('Check MD5 sum of Vanilla2 image')
check_image = checkers.check_image(
settings.SERVTEST_SAHARA_VANILLA_2_IMAGE,
settings.SERVTEST_SAHARA_VANILLA_2_IMAGE_MD5,
settings.SERVTEST_LOCAL_PATH)
asserts.assert_true(check_image)
logger.debug('Run all sanity and smoke tests')
path_to_tests = 'fuel_health.tests.sanity.test_sanity_sahara.'
test_names = ['VanillaTwoTemplatesTest.test_vanilla_two_templates',
'HDPTwoTemplatesTest.test_hdp_two_templates']
self.fuel_web.run_ostf(
cluster_id=self.fuel_web.get_last_created_cluster(),
tests_must_be_passed=[path_to_tests + test_name
for test_name in test_names]
)
logger.debug('Import Vanilla2 image for Sahara')
with open('{0}/{1}'.format(
settings.SERVTEST_LOCAL_PATH,
settings.SERVTEST_SAHARA_VANILLA_2_IMAGE)) as data:
os_conn.create_image(
name=settings.SERVTEST_SAHARA_VANILLA_2_IMAGE_NAME,
properties=settings.SERVTEST_SAHARA_VANILLA_2_IMAGE_META,
data=data,
is_public=True,
disk_format='qcow2',
container_format='bare')
path_to_tests = 'fuel_health.tests.tests_platform.test_sahara.'
test_names = ['VanillaTwoClusterTest.test_vanilla_two_cluster']
for test_name in test_names:
logger.debug('Run platform test {0} for Sahara'.format(test_name))
self.fuel_web.run_single_ostf_test(
cluster_id=cluster_id, test_sets=['tests_platform'],
test_name=path_to_tests + test_name, timeout=60 * 200)
self.env.make_snapshot("deploy_sahara_ha_one_controller_tun")
@test(groups=["services", "services.sahara", "services_ha"])
class SaharaHA(TestBasic):
"""Sahara HA tests.
Don't recommend to start tests without kvm
Put Sahara image before start
"""
@test(depends_on=[SetupEnvironment.prepare_slaves_5],
groups=["deploy_sahara_ha_tun"])
@log_snapshot_after_test
def deploy_sahara_ha_tun(self):
"""Deploy cluster in HA mode with Sahara and Neutron VXLAN
Scenario:
1. Create a Fuel cluster. Set the option for Sahara installation
2. Add 3 node with "controller" role
3. Add 1 node with "compute" role
4. Deploy the Fuel cluster
5. Verify Sahara service on all controllers
6. Run all sanity and smoke tests
7. Register Vanilla2 image for Sahara
8. Run platform Vanilla2 test for Sahara
Duration 130m
Snapshot: deploy_sahara_ha_tun
"""
self.env.revert_snapshot("ready_with_5_slaves")
logger.debug('Create Fuel cluster for Sahara tests')
data = {
'sahara': True,
'net_provider': 'neutron',
'net_segment_type': settings.NEUTRON_SEGMENT['tun'],
'tenant': 'saharaHA',
'user': 'saharaHA',
'password': 'saharaHA'
}
cluster_id = self.fuel_web.create_cluster(
name=self.__class__.__name__,
mode=settings.DEPLOYMENT_MODE,
settings=data
)
self.fuel_web.update_nodes(
cluster_id,
{
'slave-01': ['controller'],
'slave-02': ['controller'],
'slave-03': ['controller'],
'slave-04': ['compute']
}
)
self.fuel_web.deploy_cluster_wait(cluster_id)
cluster_vip = self.fuel_web.get_public_vip(cluster_id)
os_conn = os_actions.OpenStackActions(
cluster_vip, data['user'], data['password'], data['tenant'])
self.fuel_web.assert_cluster_ready(os_conn, smiles_count=13)
logger.debug('Verify Sahara service on all controllers')
for slave in ["slave-01", "slave-02", "slave-03"]:
_ip = self.fuel_web.get_nailgun_node_by_name(slave)['ip']
# count = 1 + api_workers (from sahara.conf)
checkers.verify_service(_ip, service_name='sahara-api', count=2)
# count = 2 * 1 (hardcoded by deployment team)
checkers.verify_service(_ip,
service_name='sahara-engine', count=2)
logger.debug('Check MD5 sum of Vanilla2 image')
check_image = checkers.check_image(
settings.SERVTEST_SAHARA_VANILLA_2_IMAGE,
settings.SERVTEST_SAHARA_VANILLA_2_IMAGE_MD5,
settings.SERVTEST_LOCAL_PATH)
asserts.assert_true(check_image)
logger.debug('Run all sanity and smoke tests')
path_to_tests = 'fuel_health.tests.sanity.test_sanity_sahara.'
test_names = ['VanillaTwoTemplatesTest.test_vanilla_two_templates',
'HDPTwoTemplatesTest.test_hdp_two_templates']
self.fuel_web.run_ostf(
cluster_id=self.fuel_web.get_last_created_cluster(),
tests_must_be_passed=[path_to_tests + test_name
for test_name in test_names]
)
logger.debug('Import Vanilla2 image for Sahara')
with open('{0}/{1}'.format(
settings.SERVTEST_LOCAL_PATH,
settings.SERVTEST_SAHARA_VANILLA_2_IMAGE)) as data:
os_conn.create_image(
name=settings.SERVTEST_SAHARA_VANILLA_2_IMAGE_NAME,
properties=settings.SERVTEST_SAHARA_VANILLA_2_IMAGE_META,
data=data,
is_public=True,
disk_format='qcow2',
container_format='bare')
path_to_tests = 'fuel_health.tests.tests_platform.test_sahara.'
test_names = ['VanillaTwoClusterTest.test_vanilla_two_cluster']
for test_name in test_names:
logger.debug('Run platform test {0} for Sahara'.format(test_name))
self.fuel_web.run_single_ostf_test(
cluster_id=cluster_id, test_sets=['tests_platform'],
test_name=path_to_tests + test_name, timeout=60 * 200)
self.env.make_snapshot("deploy_sahara_ha_tun")
@test(enabled=False,
groups=["services", "services.murano", "services_ha_one_controller"])
class MuranoHAOneController(TestBasic):
"""Murano HA with 1 controller tests.
Don't recommend to start tests without kvm.
"""
# TODO (tleontovich) Update tests with Murano Plugin
@test(enabled=False, depends_on=[SetupEnvironment.prepare_slaves_3],
groups=["deploy_murano_ha_one_controller_tun"])
@log_snapshot_after_test
def deploy_murano_ha_one_controller_tun(self):
"""Deploy cluster in HA mode with Murano and Neutron VXLAN
Scenario:
1. Create cluster. Set install Murano option
2. Add 1 node with controller role
3. Add 1 nodes with compute role
4. Deploy the cluster
5. Verify Murano services
6. Run OSTF
7. Run OSTF Murano platform tests
Duration 40m
Snapshot: deploy_murano_ha_one_controller_tun
"""
self.env.revert_snapshot("ready_with_3_slaves")
data = {
'murano': True,
'net_provider': 'neutron',
'net_segment_type': settings.NEUTRON_SEGMENT['tun'],
'tenant': 'muranoSimple',
'user': 'muranoSimple',
'password': 'muranoSimple'
}
cluster_id = self.fuel_web.create_cluster(
name=self.__class__.__name__,
mode=settings.DEPLOYMENT_MODE,
settings=data)
self.fuel_web.update_nodes(
cluster_id,
{
'slave-01': ['controller'],
'slave-02': ['compute']
}
)
self.fuel_web.deploy_cluster_wait(cluster_id)
os_conn = os_actions.OpenStackActions(
self.fuel_web.get_public_vip(cluster_id),
data['user'], data['password'], data['tenant'])
self.fuel_web.assert_cluster_ready(os_conn, smiles_count=5)
_ip = self.fuel_web.get_nailgun_node_by_name("slave-01")['ip']
checkers.verify_service(_ip, service_name='murano-api')
logger.debug('Run sanity and functional Murano OSTF tests')
self.fuel_web.run_single_ostf_test(
cluster_id=self.fuel_web.get_last_created_cluster(),
test_sets=['sanity'],
test_name=('fuel_health.tests.sanity.test_sanity_murano.'
'MuranoSanityTests.test_create_and_delete_service')
)
logger.debug('Run OSTF platform tests')
test_class_main = ('fuel_health.tests.tests_platform'
'.test_murano_linux.MuranoDeployLinuxServicesTests')
tests_names = ['test_deploy_dummy_app', ]
test_classes = []
for test_name in tests_names:
test_classes.append('{0}.{1}'.format(test_class_main,
test_name))
for test_name in test_classes:
self.fuel_web.run_single_ostf_test(
cluster_id=cluster_id, test_sets=['tests_platform'],
test_name=test_name, timeout=60 * 20)
self.env.make_snapshot("deploy_murano_ha_one_controller_tun")
@test(enabled=False, groups=["services", "services.murano", "services_ha"])
class MuranoHA(TestBasic):
"""Murano HA tests.
Don't recommend to start tests without kvm.
"""
# TODO (tleontovich) Update test with Murano Plugin
@test(enabled=False, depends_on=[SetupEnvironment.prepare_slaves_5],
groups=["deploy_murano_ha_with_tun"])
@log_snapshot_after_test
def deploy_murano_ha_with_tun(self):
"""Deploy cluster in ha mode with Murano and Neutron VXLAN
Scenario:
1. Create cluster. Set install Murano option
2. Add 3 node with controller role
3. Add 1 nodes with compute role
4. Deploy the cluster
5. Verify Murano services
6. Run OSTF
7. Run OSTF Murano platform tests
Duration 100m
Snapshot: deploy_murano_ha_with_tun
"""
self.env.revert_snapshot("ready_with_5_slaves")
data = {
'murano': True,
'net_provider': 'neutron',
'net_segment_type': settings.NEUTRON_SEGMENT['tun'],
'tenant': 'muranoHA',
'user': 'muranoHA',
'password': 'muranoHA'
}
cluster_id = self.fuel_web.create_cluster(
name=self.__class__.__name__,
mode=settings.DEPLOYMENT_MODE,
settings=data)
self.fuel_web.update_nodes(
cluster_id,
{
'slave-01': ['controller'],
'slave-02': ['controller'],
'slave-03': ['controller'],
'slave-04': ['compute']
}
)
self.fuel_web.deploy_cluster_wait(cluster_id)
cluster_vip = self.fuel_web.get_public_vip(cluster_id)
os_conn = os_actions.OpenStackActions(
cluster_vip, data['user'], data['password'], data['tenant'])
self.fuel_web.assert_cluster_ready(os_conn, smiles_count=13)
for slave in ["slave-01", "slave-02", "slave-03"]:
_ip = self.fuel_web.get_nailgun_node_by_name(slave)['ip']
checkers.verify_service(_ip, service_name='murano-api')
logger.debug('Run sanity and functional Murano OSTF tests')
self.fuel_web.run_single_ostf_test(
cluster_id=self.fuel_web.get_last_created_cluster(),
test_sets=['sanity'],
test_name=('fuel_health.tests.sanity.test_sanity_murano.'
'MuranoSanityTests.test_create_and_delete_service')
)
logger.debug('Run OSTF platform tests')
test_class_main = ('fuel_health.tests.tests_platform'
'.test_murano_linux.MuranoDeployLinuxServicesTests')
tests_names = ['test_deploy_dummy_app', ]
test_classes = []
for test_name in tests_names:
test_classes.append('{0}.{1}'.format(test_class_main,
test_name))
for test_name in test_classes:
self.fuel_web.run_single_ostf_test(
cluster_id=cluster_id, test_sets=['tests_platform'],
test_name=test_name, timeout=60 * 20)
self.env.make_snapshot("deploy_murano_ha_with_tun")
class OSTFCeilometerHelper(TestBasic):
def run_tests(self, cluster_id, skip_tests=None):
"""Method run smoke, sanity and platform Ceilometer tests."""
logger.debug('Run sanity and smoke tests')
self.fuel_web.run_ostf(
cluster_id=cluster_id,
test_sets=['smoke', 'sanity'],
timeout=60 * 15
)
logger.debug('Run platform OSTF Ceilometer tests')
test_class_main = ('fuel_health.tests.tests_platform.'
'test_ceilometer.'
'CeilometerApiPlatformTests')
tests_names = ['test_check_alarm_state',
'test_create_sample',
'test_check_volume_events',
'test_check_glance_notifications',
'test_check_keystone_notifications',
'test_check_neutron_notifications',
'test_check_sahara_notifications',
'test_check_events_and_traits']
test_classes = []
for test_name in tests_names:
test_classes.append('{0}.{1}'.format(test_class_main,
test_name))
all_tests = [test['id'] for test
in self.fuel_web.client.get_ostf_tests(cluster_id)]
for test_id in test_classes:
if test_id in all_tests:
if skip_tests and test_id.split('.')[-1] in skip_tests:
all_status = self.fuel_web.run_single_ostf_test(
cluster_id=cluster_id, test_sets=['tests_platform'],
test_name=test_id, retries=True, timeout=60 * 20)
test_name = next(
test['name'] for test
in self.fuel_web.client.get_ostf_tests(cluster_id)
if test['id'] == test_id)
status = next(test.values()[0]
for test in all_status
if test.keys()[0] == test_name)
assert_equal(
status, "skipped",
'Test: "{}" must be skipped status, '
'but his status {}'.format(test_name, status))
else:
self.fuel_web.run_single_ostf_test(
cluster_id=cluster_id, test_sets=['tests_platform'],
test_name=test_id, timeout=60 * 20)
@test(groups=["services", "services.ceilometer", "services_ha_one_controller"])
class CeilometerHAOneControllerMongo(OSTFCeilometerHelper):
@test(depends_on=[SetupEnvironment.prepare_slaves_3],
groups=["deploy_ceilometer_ha_one_controller_with_mongo"])
@log_snapshot_after_test
def deploy_ceilometer_ha_one_controller_with_mongo(self):
"""Deploy cluster in HA mode with Ceilometer
Scenario:
1. Create cluster. Set install Ceilometer option
2. Add 1 node with controller role
3. Add 1 nodes with compute role
4. Add 1 node with cinder role
5. Add 1 node with mongo role
6. Deploy the cluster
7. Verify ceilometer api is running
8. Run OSTF
Duration 45m
Snapshot: deploy_ceilometer_ha_one_controller_with_mongo
"""
self.env.revert_snapshot("ready_with_3_slaves")
cluster_id = self.fuel_web.create_cluster(
name=self.__class__.__name__,
mode=settings.DEPLOYMENT_MODE,
settings={
'ceilometer': True,
'net_provider': 'neutron',
'net_segment_type': 'tun',
'tenant': 'ceilometerSimple',
'user': 'ceilometerSimple',
'password': 'ceilometerSimple'
}
)
self.fuel_web.update_nodes(
cluster_id,
{
'slave-01': ['controller'],
'slave-02': ['compute', 'cinder'],
'slave-03': ['mongo']
}
)
nailgun_nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)
disk_mb = 0
for node in nailgun_nodes:
if node.get('pending_roles') == ['mongo']:
disk_mb = self.fuel_web.get_node_disk_size(node.get('id'),
"vda")
logger.debug('disk size is {0}'.format(disk_mb))
mongo_disk_mb = 11116
os_disk_mb = disk_mb - mongo_disk_mb
# pylint: disable=round-builtin
mongo_disk_gb = ("{0}G".format(round(mongo_disk_mb / 1024, 1)))
# pylint: enable=round-builtin
disk_part = {
"vda": {
"os": os_disk_mb,
"mongo": mongo_disk_mb
}
}
for node in nailgun_nodes:
if node.get('pending_roles') == ['mongo']:
self.fuel_web.update_node_disk(node.get('id'), disk_part)
self.fuel_web.deploy_cluster_wait(cluster_id)
_ip = self.fuel_web.get_nailgun_node_by_name("slave-01")['ip']
checkers.verify_service(_ip,
service_name='ceilometer-api',
ignore_count_of_proccesses=True)
_ip = self.fuel_web.get_nailgun_node_by_name("slave-03")['ip']
partitions = utils.get_mongo_partitions(_ip, "vda5")
assert_equal(partitions[0].rstrip(), mongo_disk_gb,
'Mongo size {0} before deployment is not equal'
' to size after {1}'.format(mongo_disk_gb, partitions))
self.run_tests(cluster_id)
self.env.make_snapshot(
"deploy_ceilometer_ha_one_controller_with_mongo")
@test(depends_on=[SetupEnvironment.prepare_slaves_3],
groups=["deploy_ceilometer_ha_one_controller_multirole"])
@log_snapshot_after_test
def deploy_ceilometer_ha_one_controller_multirole(self):
"""Deploy cluster in ha multirole mode with Ceilometer
Scenario:
1. Create cluster. Set install Ceilometer option
2. Add 1 node with controller role
3. Add 1 nodes with compute role
4. Add 2 nodes with cinder and mongo roles
5. Deploy the cluster
6. Verify ceilometer api is running
7. Run OSTF
Duration 35m
Snapshot: deploy_ceilometer_ha_one_controller_multirole
"""
self.env.revert_snapshot("ready_with_3_slaves")
cluster_id = self.fuel_web.create_cluster(
name=self.__class__.__name__,
mode=settings.DEPLOYMENT_MODE,
settings={
'ceilometer': True,
'net_provider': 'neutron',
'net_segment_type': 'tun',
}
)
self.fuel_web.update_nodes(
cluster_id,
{
'slave-01': ['controller'],
'slave-02': ['compute'],
'slave-03': ['cinder', 'mongo']
}
)
self.fuel_web.deploy_cluster_wait(cluster_id)
_ip = self.fuel_web.get_nailgun_node_by_name("slave-01")['ip']
checkers.verify_service(_ip,
service_name='ceilometer-api',
ignore_count_of_proccesses=True)
self.run_tests(cluster_id)
self.env.make_snapshot("deploy_ceilometer_ha_one_controller_multirole")
@test(groups=["services", "services.ceilometer", "services_ha.ceilometer"])
class CeilometerHAMongo(OSTFCeilometerHelper):
@test(depends_on=[SetupEnvironment.prepare_slaves_5],
groups=["deploy_ceilometer_ha_with_mongo"])
@log_snapshot_after_test
def deploy_ceilometer_ha_with_mongo(self):
"""Deploy cluster in ha mode with Ceilometer
Scenario:
1. Create cluster. Set install Ceilometer option
2. Add 3 node with controller role
3. Add 1 nodes with compute role
4. Add 1 node with mongo role
5. Deploy the cluster
6. Verify ceilometer api is running
7. Run OSTF
Duration 65m
Snapshot: deploy_ceilometer_ha_with_mongo
"""
self.env.revert_snapshot("ready_with_5_slaves")
cluster_id = self.fuel_web.create_cluster(
name=self.__class__.__name__,
mode=settings.DEPLOYMENT_MODE,
settings={
'ceilometer': True,
'net_provider': 'neutron',
'net_segment_type': 'tun',
'tenant': 'ceilometerHA',
'user': 'ceilometerHA',
'password': 'ceilometerHA'
}
)
self.fuel_web.update_nodes(
cluster_id,
{
'slave-01': ['controller'],
'slave-02': ['controller'],
'slave-03': ['controller'],
'slave-04': ['compute'],
'slave-05': ['mongo']
}
)
self.fuel_web.deploy_cluster_wait(cluster_id)
_ip = self.fuel_web.get_nailgun_node_by_name("slave-01")['ip']
checkers.verify_service(_ip,
service_name='ceilometer-api',
ignore_count_of_proccesses=True)
self.run_tests(cluster_id,
skip_tests=['test_check_volume_events'])
self.env.make_snapshot("deploy_ceilometer_ha_with_mongo")
@test(depends_on=[SetupEnvironment.prepare_slaves_5],
groups=["deploy_ceilometer_ha_multirole"])
@log_snapshot_after_test
def deploy_ceilometer_ha_multirole(self):
"""Deploy cluster in ha multirole mode with Ceilometer
Scenario:
1. Create cluster. Set install Ceilometer option
2. Add 3 node with controller and mongo roles
3. Add 1 nodes with compute role
4. Add 1 nodes with cinder
5. Deploy the cluster
6. Verify ceilometer api is running
7. Run OSTF
Duration 80m
Snapshot: deploy_ceilometer_ha_multirole
"""
self.env.revert_snapshot("ready_with_5_slaves")
cluster_id = self.fuel_web.create_cluster(
name=self.__class__.__name__,
mode=settings.DEPLOYMENT_MODE,
settings={
'ceilometer': True,
'net_provider': 'neutron',
'net_segment_type': 'tun',
}
)
self.fuel_web.update_nodes(
cluster_id,
{
'slave-01': ['controller', 'mongo'],
'slave-02': ['controller', 'mongo'],
'slave-03': ['controller', 'mongo'],
'slave-04': ['compute'],
'slave-05': ['cinder']
}
)
self.fuel_web.deploy_cluster_wait(cluster_id)
_ip = self.fuel_web.get_nailgun_node_by_name("slave-01")['ip']
checkers.verify_service(_ip,
service_name='ceilometer-api',
ignore_count_of_proccesses=True)
self.run_tests(cluster_id)
self.env.make_snapshot("deploy_ceilometer_ha_multirole", is_make=True)
@test(depends_on=[deploy_ceilometer_ha_multirole],
groups=["ceilometer_ha_multirole_add_mongo"])
@log_snapshot_after_test
def ceilometer_ha_multirole_add_mongo(self):
"""Add mongo node to cluster with HA mode and Ceilometer
Scenario:
1. Revert snapshot deploy_ceilometer_ha_multirole
2. Add 1 node with mongo role
3. Deploy the cluster
4. Run OSTF
Duration 60m
Snapshot: ceilometer_ha_multirole_add_mongo
"""
self.env.revert_snapshot("deploy_ceilometer_ha_multirole")
cluster_id = self.fuel_web.get_last_created_cluster()
self.env.bootstrap_nodes(
self.env.d_env.nodes().slaves[5:6])
self.fuel_web.update_nodes(
cluster_id, {'slave-06': ['mongo']}, True, False
)
self.fuel_web.deploy_cluster_wait(cluster_id)
self.run_tests(cluster_id)
self.env.make_snapshot("ceilometer_ha_multirole_add_mongo")
@test(depends_on=[SetupEnvironment.prepare_slaves_5],
groups=["deploy_ceilometer_ha_with_external_mongo"])
@log_snapshot_after_test
def deploy_ceilometer_ha_with_external_mongo(self):
"""Deploy cluster in ha mode with Ceilometer and external Mongo
Scenario:
1. Create cluster. Set install Ceilometer, external Mongo option
2. Add 3 node with controller role
3. Add 1 nodes with compute and ceph roles
4. Add 1 node with ceph role
5. Deploy the cluster
6. Verify ceilometer api is running
7. Run OSTF
Duration 65m
Snapshot: deploy_ceilometer_ha_with_external_mongo
"""
self.env.revert_snapshot("ready_with_5_slaves")
cluster_id = self.fuel_web.create_cluster(
name=self.__class__.__name__,
mode=settings.DEPLOYMENT_MODE,
settings={
'ceilometer': True,
'tenant': 'ceilometerHA',
'user': 'ceilometerHA',
'password': 'ceilometerHA',
'net_provider': 'neutron',
'net_segment_type': 'tun',
'volumes_ceph': True,
'images_ceph': True,
'volumes_lvm': False,
'osd_pool_size': "2",
'mongo': True,
'hosts_ip': settings.SERVTEST_EXTERNAL_MONGO_URLS,
'mongo_db_name': settings.SERVTEST_EXTERNAL_MONGO_DB_NAME,
'mongo_user': settings.SERVTEST_EXTERNAL_MONGO_USER,
'mongo_password': settings.SERVTEST_EXTERNAL_MONGO_PASS,
'mongo_replset': settings.SERVTEST_EXTERNAL_MONGO_REPL_SET
}
)
self.fuel_web.update_nodes(
cluster_id,
{
'slave-01': ['controller'],
'slave-02': ['controller'],
'slave-03': ['controller'],
'slave-04': ['compute', 'ceph-osd'],
'slave-05': ['ceph-osd']
}
)
self.fuel_web.deploy_cluster_wait(cluster_id)
_ip = self.fuel_web.get_nailgun_node_by_name("slave-01")['ip']
checkers.verify_service(_ip,
service_name='ceilometer-api',
ignore_count_of_proccesses=True)
self.run_tests(cluster_id)
self.env.make_snapshot("deploy_ceilometer_ha_with_external_mongo")
@test(groups=["services", "services.heat", "services_ha_one_controller"])
class HeatHAOneController(TestBasic):
"""Heat HA one controller test.
Don't recommend to start tests without kvm
"""
@test(depends_on=[SetupEnvironment.prepare_slaves_3],
groups=["deploy_heat_ha_one_controller_neutron"])
@log_snapshot_after_test
def deploy_heat_ha_one_controller_neutron(self):
"""Deploy Heat cluster in HA mode with Neutron VXLAN
Scenario:
1. Create cluster
2. Add 1 node with controller role and mongo
3. Add 1 nodes with compute role
4. Set install Ceilometer option
5. Deploy the cluster
6. Verify Heat, Ceilometer services
7. Run OSTF platform tests
Duration 40m
Snapshot: deploy_heat_ha_one_controller_neutron
"""
self.env.revert_snapshot("ready_with_3_slaves")
data = {
'ceilometer': True,
'net_provider': 'neutron',
'net_segment_type': settings.NEUTRON_SEGMENT['tun'],
'tenant': 'heatSimple',
'user': 'heatSimple',
'password': 'heatSimple'
}
cluster_id = self.fuel_web.create_cluster(
name=self.__class__.__name__,
mode=settings.DEPLOYMENT_MODE,
settings=data)
self.fuel_web.update_nodes(
cluster_id,
{
'slave-01': ['controller', 'mongo'],
'slave-02': ['compute']
}
)
self.fuel_web.deploy_cluster_wait(cluster_id)
os_conn = os_actions.OpenStackActions(
self.fuel_web.get_public_vip(cluster_id),
data['user'], data['password'], data['tenant'])
self.fuel_web.assert_cluster_ready(os_conn, smiles_count=5)
_ip = self.fuel_web.get_nailgun_node_by_name("slave-01")['ip']
checkers.verify_service(_ip, service_name='heat-api', count=3)
_ip = self.fuel_web.get_nailgun_node_by_name("slave-01")['ip']
checkers.verify_service(_ip,
service_name='ceilometer-api',
ignore_count_of_proccesses=True)
logger.debug('Run Heat OSTF platform tests')
test_class_main = ('fuel_health.tests.tests_platform.'
'test_heat.'
'HeatSmokeTests')
tests_names = ['test_actions',
'test_advanced_actions',
'test_autoscaling',
'test_rollback',
'test_update',
'test_wait_condition']
test_classes = []
for test_name in tests_names:
test_classes.append('{0}.{1}'.format(test_class_main,
test_name))
for test_name in test_classes:
self.fuel_web.run_single_ostf_test(
cluster_id=cluster_id, test_sets=['tests_platform'],
test_name=test_name, timeout=60 * 60)
self.env.make_snapshot("deploy_heat_ha_one_controller_neutron")
@test(groups=["services", "services.heat", "services_ha"])
class HeatHA(TestBasic):
"""Heat HA test.
Don't recommend to start tests without kvm
"""
@test(depends_on=[SetupEnvironment.prepare_slaves_5],
groups=["deploy_heat_ha"])
@log_snapshot_after_test
def deploy_heat_ha(self):
"""Deploy Heat cluster in HA mode
Scenario:
1. Create cluster
2. Add 3 node with controller role and mongo
3. Add 1 nodes with compute role
4. Set Ceilometer install option
5. Deploy the cluster
6. Verify Heat and Ceilometer services
7. Run OSTF platform tests
Duration 70m
Snapshot: deploy_heat_ha
"""
self.env.revert_snapshot("ready_with_5_slaves")
data = {
'ceilometer': True,
'net_provider': 'neutron',
'net_segment_type': settings.NEUTRON_SEGMENT['tun'],
'tenant': 'heatHA',
'user': 'heatHA',
'password': 'heatHA'
}
cluster_id = self.fuel_web.create_cluster(
name=self.__class__.__name__,
mode=settings.DEPLOYMENT_MODE,
settings=data)
self.fuel_web.update_nodes(
cluster_id,
{
'slave-01': ['controller', 'mongo'],
'slave-02': ['controller', 'mongo'],
'slave-03': ['controller', 'mongo'],
'slave-04': ['compute']
}
)
self.fuel_web.deploy_cluster_wait(cluster_id)
cluster_vip = self.fuel_web.get_public_vip(cluster_id)
os_conn = os_actions.OpenStackActions(
cluster_vip, data['user'], data['password'], data['tenant'])
self.fuel_web.assert_cluster_ready(os_conn, smiles_count=13)
for slave in ["slave-01", "slave-02", "slave-03"]:
_ip = self.fuel_web.get_nailgun_node_by_name(slave)['ip']
checkers.verify_service(_ip, service_name='heat-api', count=3)
checkers.verify_service(_ip,
service_name='ceilometer-api',
ignore_count_of_proccesses=True)
logger.debug('Run Heat OSTF platform tests')
test_class_main = ('fuel_health.tests.tests_platform.'
'test_heat.'
'HeatSmokeTests')
tests_names = ['test_actions',
'test_advanced_actions',
'test_autoscaling',
'test_rollback',
'test_update']
test_classes = []
for test_name in tests_names:
test_classes.append('{0}.{1}'.format(test_class_main,
test_name))
for test_name in test_classes:
self.fuel_web.run_single_ostf_test(
cluster_id=cluster_id, test_sets=['tests_platform'],
test_name=test_name, timeout=60 * 60)
self.env.make_snapshot("deploy_heat_ha")