Add acceptance tests for separate services

- Add 3 tests on separate db, keystone, rabbitmq with
ceph for volumes, images, ephemeral, objects

Change-Id: Ia3b42b26541de62d9ea90201b4f95bef87c0f804
Closes-Bug: #1526696
This commit is contained in:
asledzinskiy 2015-12-16 12:16:05 +02:00
parent 19785e9dda
commit cb59909ae3
5 changed files with 387 additions and 0 deletions

View File

@ -467,6 +467,11 @@ Test for separate keystone service
.. automodule:: fuelweb_test.tests.tests_separate_services.test_separate_keystone
:members:
Test for separate keystone service and ceph
-------------------------------------------
.. automodule:: fuelweb_test.tests.tests_separate_services.test_separate_keystone_ceph
:members:
Test for separate horizon service
---------------------------------
.. automodule:: fuelweb_test.tests.tests_separate_services.test_separate_horizon
@ -477,6 +482,11 @@ Test for separate mysql service
.. automodule:: fuelweb_test.tests.tests_separate_services.test_separate_db
:members:
Test for separate mysql service and ceph
----------------------------------------
.. automodule:: fuelweb_test.tests.tests_separate_services.test_separate_db_ceph
:members:
Test for separate multiroles
----------------------------
.. automodule:: fuelweb_test.tests.tests_separate_services.test_separate_multiroles
@ -487,6 +497,11 @@ Test for separate rabbitmq service
.. automodule:: fuelweb_test.tests.tests_separate_services.test_separate_rabbitmq
:members:
Test for separate rabbitmq service and ceph
-------------------------------------------
.. automodule:: fuelweb_test.tests.tests_separate_services.test_separate_rabbitmq_ceph
:members:
Template based tests
--------------------
.. automodule:: fuelweb_test.actions_tests

View File

@ -85,12 +85,16 @@ def import_tests():
from tests import test_reduced_footprint # noqa
from tests.tests_deployments.tests_neutron_vlan import test_ha_vlan_group_1 # noqa
from tests.tests_deployments.tests_neutron_vlan import test_ha_vlan_group_2 # noqa
from tests.tests_deployments.tests_neutron_vlan import test_ha_vlan_group_2 # noqa
from tests.tests_security import test_run_nessus # noqa
from tests.tests_separate_services import test_separate_db # noqa
from tests.tests_separate_services import test_separate_horizon # noqa
from tests.tests_separate_services import test_separate_keystone # noqa
from tests.tests_separate_services import test_separate_multiroles # noqa
from tests.tests_separate_services import test_separate_rabbitmq # noqa
from tests.tests_separate_services import test_separate_db_ceph # noqa
from tests.tests_separate_services import test_separate_keystone_ceph # noqa
from tests.tests_separate_services import test_separate_rabbitmq_ceph # noqa
from tests import test_clone_env # noqa
from tests import test_node_reassignment # noqa
from tests import test_os_upgrade # noqa

View File

@ -0,0 +1,120 @@
# Copyright 2015 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.
import os
from proboscis.asserts import assert_true
from proboscis import test
from fuelweb_test.helpers import checkers
from fuelweb_test.helpers.decorators import log_snapshot_after_test
from fuelweb_test import settings
from fuelweb_test.tests.base_test_case import SetupEnvironment
from fuelweb_test.tests.base_test_case import TestBasic
@test(groups=["thread_separate_services_ceph"])
class SeparateDbCeph(TestBasic):
"""SeparateDbCeph""" # TODO documentation
@test(depends_on=[SetupEnvironment.prepare_slaves_9],
groups=["separate_db_ceph_service"])
@log_snapshot_after_test
def separate_db_ceph_service(self):
"""Deploy cluster with 3 separate database roles and ceph
Scenario:
1. Create cluster
2. Add 3 nodes with controller role
3. Add 3 nodes with database role
4. Add 1 compute and 2 ceph nodes
5. Choose ceph for volumes, images, ephemeral and objects
6. Verify networks
7. Deploy the cluster
8. Verify networks
9. Run OSTF
Duration 120m
Snapshot separate_db_ceph_service
"""
self.check_run("separate_db_ceph_service")
self.env.revert_snapshot("ready_with_9_slaves")
with self.env.d_env.get_admin_remote() as remote:
# copy plugins to the master node
checkers.upload_tarball(
remote,
settings.SEPARATE_SERVICE_DB_PLUGIN_PATH, "/var")
# install plugins
checkers.install_plugin_check_code(
remote,
plugin=os.path.basename(
settings.SEPARATE_SERVICE_DB_PLUGIN_PATH))
data = {
'volumes_lvm': False,
'volumes_ceph': True,
'images_ceph': True,
'ephemeral_ceph': True,
'objects_ceph': True,
'tenant': 'separatedbceph',
'user': 'separatedbceph',
'password': 'separatedbceph',
"net_provider": 'neutron',
"net_segment_type": settings.NEUTRON_SEGMENT['tun'],
}
cluster_id = self.fuel_web.create_cluster(
name=self.__class__.__name__,
mode=settings.DEPLOYMENT_MODE,
settings=data)
plugin_name = 'detach-database'
msg = "Plugin couldn't be enabled. Check plugin version. Test aborted"
assert_true(
self.fuel_web.check_plugin_exists(cluster_id, plugin_name),
msg)
options = {'metadata/enabled': True}
self.fuel_web.update_plugin_data(cluster_id, plugin_name, options)
self.fuel_web.update_nodes(
cluster_id,
{
'slave-01': ['controller'],
'slave-02': ['controller'],
'slave-03': ['controller'],
'slave-04': ['standalone-database'],
'slave-05': ['standalone-database'],
'slave-06': ['standalone-database'],
'slave-07': ['compute'],
'slave-08': ['ceph-osd'],
'slave-09': ['ceph-osd']
}
)
self.fuel_web.verify_network(cluster_id)
# Cluster deploy
self.fuel_web.deploy_cluster_wait(cluster_id)
self.fuel_web.verify_network(cluster_id)
self.fuel_web.run_ostf(
cluster_id=cluster_id)
self.env.make_snapshot("separate_db_ceph_service")

View File

@ -0,0 +1,129 @@
# Copyright 2015 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.
import os
from proboscis import test
from proboscis.asserts import assert_true
from fuelweb_test.helpers import checkers
from fuelweb_test.helpers.decorators import log_snapshot_after_test
from fuelweb_test import settings
from fuelweb_test.tests.base_test_case import SetupEnvironment
from fuelweb_test.tests.base_test_case import TestBasic
@test(groups=["thread_separate_services_ceph"])
class SeparateKeystoneCeph(TestBasic):
"""SeparateKeystoneCeph""" # TODO documentation
@test(depends_on=[SetupEnvironment.prepare_slaves_9],
groups=["separate_keystone_ceph_service"])
@log_snapshot_after_test
def separate_keystone_ceph_service(self):
"""Deploy cluster with 3 separate keystone roles and ceph
Scenario:
1. Create cluster
2. Add 3 nodes with controller role
3. Add 3 nodes with keystone+database role
4. Add 1 compute and 2 ceph nodes
5. Verify networks
6. Deploy the cluster
7. Verify networks
8. Run OSTF
Duration 120m
Snapshot separate_keystone_ceph_service
"""
self.check_run("separate_keystone_ceph_service")
self.env.revert_snapshot("ready_with_9_slaves")
with self.env.d_env.get_admin_remote() as remote:
# copy plugins to the master node
checkers.upload_tarball(
remote,
settings.SEPARATE_SERVICE_DB_PLUGIN_PATH, "/var")
checkers.upload_tarball(
remote,
settings.SEPARATE_SERVICE_KEYSTONE_PLUGIN_PATH, "/var")
# install plugins
checkers.install_plugin_check_code(
remote,
plugin=os.path.basename(
settings.SEPARATE_SERVICE_DB_PLUGIN_PATH))
checkers.install_plugin_check_code(
remote,
plugin=os.path.basename(
settings.SEPARATE_SERVICE_KEYSTONE_PLUGIN_PATH))
data = {
'volumes_lvm': False,
'volumes_ceph': True,
'images_ceph': True,
'ephemeral_ceph': True,
'objects_ceph': True,
'tenant': 'separatekeystoneceph',
'user': 'separatekeystoneceph',
'password': 'separatekeystoneceph',
"net_provider": 'neutron',
"net_segment_type": settings.NEUTRON_SEGMENT['tun'],
}
cluster_id = self.fuel_web.create_cluster(
name=self.__class__.__name__,
mode=settings.DEPLOYMENT_MODE,
settings=data)
plugin_names = ['detach-database', 'detach-keystone']
msg = "Plugin couldn't be enabled. Check plugin version. Test aborted"
for plugin_name in plugin_names:
assert_true(
self.fuel_web.check_plugin_exists(cluster_id, plugin_name),
msg)
options = {'metadata/enabled': True}
self.fuel_web.update_plugin_data(cluster_id, plugin_name, options)
self.fuel_web.update_nodes(
cluster_id,
{
'slave-01': ['controller'],
'slave-02': ['controller'],
'slave-03': ['controller'],
'slave-04': ['standalone-database', 'standalone-keystone'],
'slave-05': ['standalone-database', 'standalone-keystone'],
'slave-06': ['standalone-database', 'standalone-keystone'],
'slave-07': ['compute'],
'slave-08': ['ceph-osd'],
'slave-09': ['ceph-osd']
}
)
self.fuel_web.verify_network(cluster_id)
# Cluster deploy
self.fuel_web.deploy_cluster_wait(cluster_id)
self.fuel_web.verify_network(cluster_id)
self.fuel_web.run_ostf(
cluster_id=cluster_id)
self.env.make_snapshot("separate_keystone_ceph_service")

View File

@ -0,0 +1,119 @@
# Copyright 2015 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.
import os
from proboscis.asserts import assert_true
from proboscis import test
from fuelweb_test.helpers import checkers
from fuelweb_test.helpers.decorators import log_snapshot_after_test
from fuelweb_test import settings
from fuelweb_test.tests.base_test_case import SetupEnvironment
from fuelweb_test.tests.base_test_case import TestBasic
@test(groups=["thread_separate_services_ceph"])
class SeparateRabbitCeph(TestBasic):
"""SeparateRabbitCeph""" # TODO documentation
@test(depends_on=[SetupEnvironment.prepare_slaves_9],
groups=["separate_rabbit_ceph_service"])
@log_snapshot_after_test
def separate_rabbit_ceph_service(self):
"""Deploy cluster with 3 separate rabbit roles and ceph
Scenario:
1. Create cluster
2. Add 3 nodes with controller role
3. Add 3 nodes with rabbit role
4. Add 1 compute and 2 ceph nodes
5. Verify networks
6. Deploy the cluster
7. Verify networks
8. Run OSTF
Duration 120m
Snapshot separate_rabbit_ceph_service
"""
self.check_run("separate_rabbit_ceph_service")
self.env.revert_snapshot("ready_with_9_slaves")
with self.env.d_env.get_admin_remote() as remote:
# copy plugins to the master node
checkers.upload_tarball(
remote,
settings.SEPARATE_SERVICE_RABBIT_PLUGIN_PATH, "/var")
# install plugins
checkers.install_plugin_check_code(
remote,
plugin=os.path.basename(
settings.SEPARATE_SERVICE_RABBIT_PLUGIN_PATH))
data = {
'volumes_lvm': False,
'volumes_ceph': True,
'images_ceph': True,
'ephemeral_ceph': True,
'objects_ceph': True,
'tenant': 'separaterabbitceph',
'user': 'separaterabbitceph',
'password': 'separaterabbitceph',
"net_provider": 'neutron',
"net_segment_type": settings.NEUTRON_SEGMENT['tun'],
}
cluster_id = self.fuel_web.create_cluster(
name=self.__class__.__name__,
mode=settings.DEPLOYMENT_MODE,
settings=data)
plugin_name = 'detach-rabbitmq'
msg = "Plugin couldn't be enabled. Check plugin version. Test aborted"
assert_true(
self.fuel_web.check_plugin_exists(cluster_id, plugin_name),
msg)
options = {'metadata/enabled': True}
self.fuel_web.update_plugin_data(cluster_id, plugin_name, options)
self.fuel_web.update_nodes(
cluster_id,
{
'slave-01': ['controller'],
'slave-02': ['controller'],
'slave-03': ['controller'],
'slave-04': ['standalone-rabbitmq'],
'slave-05': ['standalone-rabbitmq'],
'slave-06': ['standalone-rabbitmq'],
'slave-07': ['compute'],
'slave-08': ['ceph-osd'],
'slave-09': ['ceph-osd']
}
)
self.fuel_web.verify_network(cluster_id)
# Cluster deploy
self.fuel_web.deploy_cluster_wait(cluster_id)
self.fuel_web.verify_network(cluster_id)
self.fuel_web.run_ostf(
cluster_id=cluster_id)
self.env.make_snapshot("separate_rabbit_ceph_service")