From 3f104cfc1f08a0cbfde48612f864776b4408d06e Mon Sep 17 00:00:00 2001 From: Georgy Dyuldin Date: Wed, 22 Feb 2017 17:34:35 +0300 Subject: [PATCH] Add test_contrail_services_status_after_restart_master_node Change-Id: Ibd63b226b71c316785e2e8f012af25fb393a26c1 --- plugin_test/vapor/vapor/settings.py | 3 +++ plugin_test/vapor/vapor/tests/test_smoke.py | 29 +++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/plugin_test/vapor/vapor/settings.py b/plugin_test/vapor/vapor/settings.py index 400775b4c..19b5c4a54 100644 --- a/plugin_test/vapor/vapor/settings.py +++ b/plugin_test/vapor/vapor/settings.py @@ -53,6 +53,9 @@ CONTRAIL_AGENT_CLEANUP_TIMEOUT = 20 * 60 # Time to wait for contrail agent vna vm list to contain server uuid CONTRAIL_AGENT_VNA_VM_LIST_TIMEOUT = 3 * 60 +# Time to wait for contrail to be operable after reset node +CONTRAIL_NODE_RESET_TIMEOUT = 5 * 60 + ROLE_CONTRAIL_CONTROLLER = 'contrail-controller' ROLE_CONTRAIL_ANALYTICS = 'contrail-analytics' ROLE_CONTRAIL_DB = 'contrail-db' diff --git a/plugin_test/vapor/vapor/tests/test_smoke.py b/plugin_test/vapor/vapor/tests/test_smoke.py index b3ccafa91..dd307f5f7 100644 --- a/plugin_test/vapor/vapor/tests/test_smoke.py +++ b/plugin_test/vapor/vapor/tests/test_smoke.py @@ -16,6 +16,7 @@ import jmespath import pycontrail.types as types import pytest from stepler.third_party import utils +from stepler.third_party import waiter from vapor.helpers import contrail_status from vapor.helpers import asserts @@ -175,3 +176,31 @@ def test_contrail_alarms_is_empty(client_contrail_analytics): def test_zookeeper_status(znodes_list): expected_znodes_list = settings.ZOOKEEPER_NODES assert_that(znodes_list, contains_inanyorder(*expected_znodes_list)) + + +@pytest.mark.requires('contrail_control_nodes_count >= 2') +def test_contrail_services_status_after_restart_master_node(os_faults_steps): + """Verify contrail services status after master node restart. + + Steps: + #. Restart node with contrail-schema (active) + #. Wait some time + #. Check that contrail services statuses is correct + """ + services_statuses = contrail_status.get_services_statuses(os_faults_steps) + master_node_fqdn = None + for fqdn, services in services_statuses.items(): + for service in services: + if (service['name'] == 'contrail-schema' and + service['status'] == contrail_status.STATUS_ACTIVE): + master_node_fqdn = fqdn + break + assert master_node_fqdn is not None, "Can't find master node" + master_node = os_faults_steps.get_node(fqdns=[master_node_fqdn]) + os_faults_steps.reset_nodes(master_node) + + waiter.wait( + contrail_status.check_services_statuses, + args=(os_faults_steps), + expected_exceptions=AssertionError, + timeout=settings.CONTRAIL_NODE_RESET_TIMEOUT)