From 39d43f28f591ccbfa74ef6d57117da0b80a88a44 Mon Sep 17 00:00:00 2001 From: asledzinskiy Date: Wed, 10 Feb 2016 11:59:28 +0200 Subject: [PATCH] Enable statistic sending in system tests - Remove CENTOS_7 conditions from setup_environment method - Change force_fuel_stats_sending logic because statsenderd.log was re-created after systemctl restart in 2-3 seconds - Add 2 waits to check_oswl_stat method because after systemctl restart resource was added to db in 2-3 seconds - Add wait and retry for sending statistic because sometimes after restarting statsenderd stat wasn't sent Closes-Bug: #1543081 Change-Id: Ib6f0d980ab26a4282fa9cb64315413de73d2db1b --- fuelweb_test/helpers/checkers.py | 25 ++++++++++++++++++++++++- fuelweb_test/helpers/fuel_actions.py | 6 ++++-- fuelweb_test/models/environment.py | 15 +++++++-------- fuelweb_test/tests/test_ceph.py | 9 ++++++--- 4 files changed, 41 insertions(+), 14 deletions(-) diff --git a/fuelweb_test/helpers/checkers.py b/fuelweb_test/helpers/checkers.py index fff66ab6f..6a4018236 100644 --- a/fuelweb_test/helpers/checkers.py +++ b/fuelweb_test/helpers/checkers.py @@ -889,7 +889,8 @@ def check_swift_ring(remote): " balance is {0}".format(balance, ring)) -def check_oswl_stat(postgres_actions, remote_collector, master_uid, +def check_oswl_stat(postgres_actions, nailgun_actions, + remote_collector, master_uid, operation='current', resources=None): if resources is None: @@ -926,6 +927,17 @@ def check_oswl_stat(postgres_actions, remote_collector, master_uid, for resource in resources: q = "select resource_data from oswl_stats where" \ " resource_type = '\"'\"'{0}'\"'\"';".format(resource) + + def get_resource(): + result = postgres_actions.run_query('nailgun', q) + if not result: + return False + return ( + len(json.loads(result)[operation]) > + expected_resource_count[operation][resource]) + + wait(get_resource, timeout=10, + timeout_msg="resource {} wasn't updated in db".format(resource)) q_result = postgres_actions.run_query('nailgun', q) assert_true(q_result.strip() is not None, "Resource {0} is absent in 'oswl_stats' table, " @@ -947,6 +959,17 @@ def check_oswl_stat(postgres_actions, remote_collector, master_uid, operation][resource])) # check stat on collector side + + def are_logs_sent(): + sent_logs = postgres_actions.count_sent_action_logs( + table='oswl_stats') + result = sent_logs == 6 + if not result: + nailgun_actions.force_fuel_stats_sending() + return result + + wait(are_logs_sent, timeout=60, + timeout_msg='Logs status was not changed to sent in db') sent_logs_count = postgres_actions.count_sent_action_logs( table='oswl_stats') logger.info("Number of logs that were sent to collector: {}".format( diff --git a/fuelweb_test/helpers/fuel_actions.py b/fuelweb_test/helpers/fuel_actions.py index 142e71709..601526416 100644 --- a/fuelweb_test/helpers/fuel_actions.py +++ b/fuelweb_test/helpers/fuel_actions.py @@ -453,7 +453,7 @@ class NailgunActions(BaseActions): exit_code=0) def set_collector_address(self, host, port, ssl=False): - cmd = ("awk '/COLLECTOR.*URL/' /usr/lib/python2.6" + cmd = ("awk '/COLLECTOR.*URL/' /usr/lib/python2.7" "/site-packages/nailgun/settings.yaml") protocol = 'http' if not ssl else 'https' parameters = {} @@ -476,7 +476,9 @@ class NailgunActions(BaseActions): def force_fuel_stats_sending(self): log_file = '/var/log/nailgun/statsenderd.log' # Rotate logs on restart in order to get rid of old errors - cmd = 'mv {0}{{,.backup_$(date +%s)}}'.format(log_file) + cmd = 'cp {0}{{,.backup_$(date +%s)}}'.format(log_file) + self.execute_in_container(cmd) + cmd = "bash -c 'echo > /var/log/nailgun/statsenderd.log'" self.execute_in_container(cmd) cmd = 'supervisorctl restart statsenderd' if MASTER_IS_CENTOS7: diff --git a/fuelweb_test/models/environment.py b/fuelweb_test/models/environment.py index f5cac14ca..05b893a49 100644 --- a/fuelweb_test/models/environment.py +++ b/fuelweb_test/models/environment.py @@ -512,14 +512,13 @@ class EnvironmentModel(object): self.admin_install_updates() if settings.MULTIPLE_NETWORKS: self.describe_other_admin_interfaces(admin) - if not MASTER_IS_CENTOS7: - self.nailgun_actions.set_collector_address( - settings.FUEL_STATS_HOST, - settings.FUEL_STATS_PORT, - settings.FUEL_STATS_SSL) - # Restart statsenderd to apply settings(Collector address) - self.nailgun_actions.force_fuel_stats_sending() - if settings.FUEL_STATS_ENABLED and not MASTER_IS_CENTOS7: + self.nailgun_actions.set_collector_address( + settings.FUEL_STATS_HOST, + settings.FUEL_STATS_PORT, + settings.FUEL_STATS_SSL) + # Restart statsenderd to apply settings(Collector address) + self.nailgun_actions.force_fuel_stats_sending() + if settings.FUEL_STATS_ENABLED: self.fuel_web.client.send_fuel_stats(enabled=True) logger.info('Enabled sending of statistics to {0}:{1}'.format( settings.FUEL_STATS_HOST, settings.FUEL_STATS_PORT diff --git a/fuelweb_test/tests/test_ceph.py b/fuelweb_test/tests/test_ceph.py index bcd9f776d..b9319646a 100644 --- a/fuelweb_test/tests/test_ceph.py +++ b/fuelweb_test/tests/test_ceph.py @@ -387,7 +387,8 @@ class CephHA(TestBasic): self.env.nailgun_actions.force_oswl_collect() self.env.nailgun_actions.force_fuel_stats_sending() master_uid = self.env.get_masternode_uuid() - checkers.check_oswl_stat(self.env.postgres_actions, self.env.collector, + checkers.check_oswl_stat(self.env.postgres_actions, + self.env.nailgun_actions, self.env.collector, master_uid, operation='current', resources=['vm', 'flavor', 'volume', 'image', 'tenant', 'keystone_user']) @@ -406,7 +407,8 @@ class CephHA(TestBasic): self.env.nailgun_actions.force_oswl_collect() self.env.nailgun_actions.force_fuel_stats_sending() - checkers.check_oswl_stat(self.env.postgres_actions, self.env.collector, + checkers.check_oswl_stat(self.env.postgres_actions, + self.env.nailgun_actions, self.env.collector, master_uid, operation='modified', resources=['vm', 'volume', 'image', 'tenant', 'keystone_user']) @@ -427,7 +429,8 @@ class CephHA(TestBasic): self.env.nailgun_actions.force_oswl_collect() self.env.nailgun_actions.force_fuel_stats_sending() - checkers.check_oswl_stat(self.env.postgres_actions, self.env.collector, + checkers.check_oswl_stat(self.env.postgres_actions, + self.env.nailgun_actions, self.env.collector, master_uid, operation='removed', resources=['vm', 'flavor', 'volume', 'image', 'tenant', 'keystone_user'])