stacklight-integration-tests/stacklight_tests/lma_infrastructure_alerting/test_destructive.py
vgusev bc86d6801a Add destructive tests for LMA Infrastructure Alerting plugin
Change-Id: I987124718cb4d14c5a1701c09f98fe9c9fb9bf1b
2016-06-17 13:06:27 +03:00

83 lines
3.3 KiB
Python

# 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 stacklight_tests.lma_infrastructure_alerting import api
@test(groups=["plugins"])
class TestDestructiveLMAInfraAlertingPlugin(api.InfraAlertingPluginApi):
"""Class for testing plugin failover after network disaster."""
@test(depends_on_groups=["deploy_ha_lma_infrastructure_alerting"],
groups=["check_disaster_lma_infrastructure_alerting",
"lma_infrastructure_alerting", "destructive",
"check_cluster_outage_lma_infrastructure_alerting"])
@log_snapshot_after_test
def check_cluster_outage_lma_infrastructure_alerting(self):
"""Verify that the backends and dashboards recover after a network
outage of the whole LMA Infrastructure Alerting cluster.
Scenario:
1. Revert the snapshot with 9 deployed nodes in HA configuration
2. Simulate a network outage of the whole
LMA Infrastructure Alerting cluster
3. Wait for at least 7 minutes before network recovery
4. Wait for all services to be back online
5. Run OSTF
6. Check that the cluster's state is okay
Duration 40m
"""
self.env.revert_snapshot("deploy_ha_lma_infrastructure_alerting")
self.helpers.emulate_whole_network_disaster(
delay_before_recover=7 * 60)
self.wait_plugin_online()
self.helpers.run_ostf()
@test(depends_on_groups=["deploy_lma_infrastructure_alerting"],
groups=["check_disaster_lma_infrastructure_alerting",
"lma_infrastructure_alerting", "destructive",
"check_node_outage_lma_infrastructure_alerting"])
@log_snapshot_after_test
def check_node_outage_lma_infrastructure_alerting(self):
"""Verify that the backends and dashboards recover after
a network outage on a standalone LMA Infrastructure Alerting node.
Scenario:
1. Revert the snapshot with 3 deployed nodes
2. Simulate network interruption on the LMA Infrastructure Alerting
node
3. Wait for at least 30 seconds before recover network availability
4. Run OSTF
5. Check that plugin is working
Duration 20m
"""
self.env.revert_snapshot("deploy_lma_infrastructure_alerting")
with self.fuel_web.get_ssh_for_nailgun_node(
self.helpers.get_master_node_by_role(self.settings.role_name)
) as remote:
self.remote_ops.simulate_network_interrupt_on_node(remote)
self.wait_plugin_online()
self.helpers.run_ostf()