Add failover tests
Add power off/shutdown tests for murano and controller nodes. Change-Id: I20bb076bbbe7dac30bce751b576d12b513b99bf0
This commit is contained in:
parent
2c0185ddd1
commit
da29a248be
|
@ -12,6 +12,10 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
import functools
|
||||||
|
|
||||||
|
from devops.helpers import helpers as devops_helpers
|
||||||
|
from fuelweb_test import logger
|
||||||
from fuelweb_test.tests import base_test_case
|
from fuelweb_test.tests import base_test_case
|
||||||
|
|
||||||
from murano_plugin_tests.helpers import checkers
|
from murano_plugin_tests.helpers import checkers
|
||||||
|
@ -101,3 +105,33 @@ class MuranoPluginApi(object):
|
||||||
def check_uninstall_failure(self):
|
def check_uninstall_failure(self):
|
||||||
return self.helpers.check_plugin_cannot_be_uninstalled(
|
return self.helpers.check_plugin_cannot_be_uninstalled(
|
||||||
self.settings.name, self.settings.version)
|
self.settings.name, self.settings.version)
|
||||||
|
|
||||||
|
def wait_plugin_online(self, timeout=5 * 60):
|
||||||
|
"""Wait until the plugin will start working properly.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def check_availability():
|
||||||
|
try:
|
||||||
|
self.check_plugin_online()
|
||||||
|
return True
|
||||||
|
except AssertionError:
|
||||||
|
return False
|
||||||
|
|
||||||
|
logger.info('Wait a plugin become online')
|
||||||
|
msg = "Plugin has not become online after a waiting period"
|
||||||
|
devops_helpers.wait(
|
||||||
|
check_availability, interval=30, timeout=timeout, timeout_msg=msg)
|
||||||
|
|
||||||
|
def check_plugin_failover(self, operation, role_name):
|
||||||
|
fuel_web_client = self.helpers.fuel_web
|
||||||
|
operations = {
|
||||||
|
"soft_reboot": fuel_web_client.warm_restart_nodes,
|
||||||
|
"hard_reboot": functools.partial(
|
||||||
|
fuel_web_client.cold_restart_nodes, wait_offline=False)
|
||||||
|
}
|
||||||
|
nailgun_nodes = fuel_web_client.get_nailgun_cluster_nodes_by_roles(
|
||||||
|
self.helpers.cluster_id, role_name)
|
||||||
|
target_node = fuel_web_client.get_devops_nodes_by_nailgun_nodes(
|
||||||
|
nailgun_nodes[:1])
|
||||||
|
operations[operation](target_node)
|
||||||
|
self.wait_plugin_online()
|
||||||
|
|
|
@ -0,0 +1,100 @@
|
||||||
|
# Copyright 2016 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 fuelweb_test.helpers.decorators import log_snapshot_after_test
|
||||||
|
from proboscis import test
|
||||||
|
|
||||||
|
from murano_plugin_tests.murano_plugin import api
|
||||||
|
|
||||||
|
|
||||||
|
@test(groups=["plugin"])
|
||||||
|
class TestMuranoFailover(api.MuranoPluginApi):
|
||||||
|
"""Class for testing that the Murano Detach plugin works properly
|
||||||
|
on controller or detached node fail.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def _test_failover(self, operation, role_name):
|
||||||
|
self.env.revert_snapshot("deploy_murano_plugin")
|
||||||
|
|
||||||
|
self.check_plugin_failover(operation, role_name)
|
||||||
|
|
||||||
|
self.run_ostf()
|
||||||
|
|
||||||
|
@test(depends_on_groups=["deploy_murano_plugin"],
|
||||||
|
groups=["failover", "murano", "system", "destructive",
|
||||||
|
"soft_reboot_murano_node"])
|
||||||
|
@log_snapshot_after_test
|
||||||
|
def soft_reboot_murano_node(self):
|
||||||
|
"""Verify that failover for Murano plugin works
|
||||||
|
on Murano detached node soft_reboot.
|
||||||
|
|
||||||
|
Scenario:
|
||||||
|
1. Soft reboot murano node.
|
||||||
|
2. Check that plugin is working.
|
||||||
|
3. Run OSTF.
|
||||||
|
|
||||||
|
Duration 30m
|
||||||
|
"""
|
||||||
|
self._test_failover("soft_reboot", self.settings.role_name)
|
||||||
|
|
||||||
|
@test(depends_on_groups=["deploy_murano_plugin"],
|
||||||
|
groups=["failover", "murano", "system", "destructive",
|
||||||
|
"hard_reboot_murano_node"])
|
||||||
|
@log_snapshot_after_test
|
||||||
|
def hard_reboot_murano_node(self):
|
||||||
|
"""Verify that failover for Murano plugin works
|
||||||
|
on Murano detached node power off.
|
||||||
|
|
||||||
|
Scenario:
|
||||||
|
1. Hard reboot murano node.
|
||||||
|
2. Check that plugin is working.
|
||||||
|
3. Run OSTF.
|
||||||
|
|
||||||
|
Duration 30m
|
||||||
|
"""
|
||||||
|
self._test_failover("hard_reboot", self.settings.role_name)
|
||||||
|
|
||||||
|
@test(depends_on_groups=["deploy_murano_plugin"],
|
||||||
|
groups=["failover", "murano", "system", "destructive",
|
||||||
|
"soft_reboot_controller_node_murano_plugin"])
|
||||||
|
@log_snapshot_after_test
|
||||||
|
def soft_reboot_controller_node_murano_plugin(self):
|
||||||
|
"""Verify that failover for Murano plugin works
|
||||||
|
on controller node soft_reboot.
|
||||||
|
|
||||||
|
Scenario:
|
||||||
|
1. Soft reboot controller node.
|
||||||
|
2. Check that plugin is working.
|
||||||
|
3. Run OSTF.
|
||||||
|
|
||||||
|
Duration 30m
|
||||||
|
"""
|
||||||
|
self._test_failover("soft_reboot", ["controller"])
|
||||||
|
|
||||||
|
@test(depends_on_groups=["deploy_murano_plugin"],
|
||||||
|
groups=["failover", "murano", "system", "destructive",
|
||||||
|
"hard_reboot_controller_node_murano_plugin"])
|
||||||
|
@log_snapshot_after_test
|
||||||
|
def hard_reboot_controller_node_murano_plugin(self):
|
||||||
|
"""Verify that failover for Murano plugin works
|
||||||
|
on controller node power off.
|
||||||
|
|
||||||
|
Scenario:
|
||||||
|
1. Hard reboot controller node.
|
||||||
|
2. Check that plugin is working.
|
||||||
|
3. Run OSTF.
|
||||||
|
|
||||||
|
Duration 30m
|
||||||
|
"""
|
||||||
|
self._test_failover("hard_reboot", ["controller"])
|
|
@ -39,6 +39,7 @@ class CloseSSHConnectionsPlugin(plugins.Plugin):
|
||||||
|
|
||||||
|
|
||||||
def import_tests():
|
def import_tests():
|
||||||
|
from murano_plugin import test_failover # noqa
|
||||||
from murano_plugin import test_murano_plugin_bvt # noqa
|
from murano_plugin import test_murano_plugin_bvt # noqa
|
||||||
from murano_plugin import test_post_install # noqa
|
from murano_plugin import test_post_install # noqa
|
||||||
from murano_plugin import test_system # noqa
|
from murano_plugin import test_system # noqa
|
||||||
|
|
Loading…
Reference in New Issue