Refactoring galera state test

1) Removed 1 extra indent level
2) Removed 'return result' expression
3) Changed method of analysis mysql output

Change-Id: I825c72dd8da6e487a71ae70d4af4009b541221e3
Closes-Bug:#1479335
This commit is contained in:
Vladimir Khlyunev 2015-07-29 16:14:28 +03:00
parent 888baa3eab
commit dd87b1a9f2
1 changed files with 82 additions and 58 deletions

View File

@ -159,6 +159,24 @@ class TestMysqlStatus(fuel_health.test.BaseTestCase):
else:
self.skipTest("There is no RHEL deployment")
@staticmethod
def get_variables_from_output(output, variables):
"""Return dict with variables and their values extracted from mysql
Assume that output is "| Var_name | Value |"
"""
result = {}
LOG.debug('Expected variables: "{0}"'.format(str(variables)))
for line in output:
try:
var, value = line.strip("| ").split("|")[:2]
except ValueError:
continue
var = var.strip()
if var in variables:
result[var] = value.strip()
LOG.debug('Extracted values: "{0}"'.format(str(result)))
return result
def test_state_of_galera_cluster(self):
"""Check galera environment state
Target Service: HA mysql
@ -173,40 +191,43 @@ class TestMysqlStatus(fuel_health.test.BaseTestCase):
"""
if 'CentOS' in self.config.compute.deployment_os:
for controller in self.controllers:
command = "mysql -e \"SHOW STATUS LIKE 'wsrep_%'\""
ssh_client = SSHClient(controller, self.controller_user,
key_filename=self.controller_key,
timeout=100)
output = self.verify(
20, ssh_client.exec_command, 1,
"Verification of galera cluster node status failed",
'get status from galera node',
command).splitlines()[3:-2]
command = "mysql -e \"SHOW STATUS LIKE 'wsrep_%'\""
ssh_client = SSHClient(controller, self.controller_user,
key_filename=self.controller_key,
timeout=100)
output = self.verify(
20, ssh_client.exec_command, 1,
"Verification of galera cluster node status failed",
'get status from galera node',
command).splitlines()
LOG.debug('output is %s' % output)
LOG.debug('mysql output from node "{0}" is \n"{1}"'.format(
controller, output)
)
result = {}
for i in output:
key, value = i.split('|')[0:-2]
result.update({key: value})
return result
mysql_vars = [
'wsrep_cluster_size',
'wsrep_ready',
'wsrep_connected'
]
result = self.get_variables_from_output(output, mysql_vars)
self.verify_response_body_content(
result.get('wsrep_cluster_size', 0),
str(len(self.controllers)),
msg='Cluster size on %s less '
'than controllers count' % controller,
failed_step='2')
self.verify_response_body_content(
result.get('wsrep_cluster_size', 0),
str(len(self.controllers)),
msg='Cluster size on %s less '
'than controllers count' % controller,
failed_step='2')
self.verify_response_body_content(
result.get(('wsrep_ready', 'OFF')), 'ON',
msg='wsrep_ready on %s is not ON' % controller,
failed_step='3')
self.verify_response_body_content(
result.get(('wsrep_ready', 'OFF')), 'ON',
msg='wsrep_ready on %s is not ON' % controller,
failed_step='3')
self.verify_response_body_content(
result.get(('wsrep_connected', 'OFF')), 'ON',
msg='wsrep_connected on %s is not ON' % controller,
failed_step='3')
self.verify_response_body_content(
result.get(('wsrep_connected', 'OFF')), 'ON',
msg='wsrep_connected on %s is not ON' % controller,
failed_step='3')
else:
self.skipTest('There is no CentOs deployment')
@ -225,39 +246,42 @@ class TestMysqlStatus(fuel_health.test.BaseTestCase):
"""
if 'Ubuntu' in self.config.compute.deployment_os:
for controller in self.controllers:
command = "mysql -e \"SHOW STATUS LIKE 'wsrep_%'\""
ssh_client = SSHClient(controller, self.controller_user,
key_filename=self.controller_key,
timeout=100)
output = self.verify(
20, ssh_client.exec_command, 1,
"Verification of galera cluster node status failed",
'get status from galera node',
command).splitlines()[3:-2]
command = "mysql -e \"SHOW STATUS LIKE 'wsrep_%'\""
ssh_client = SSHClient(controller, self.controller_user,
key_filename=self.controller_key,
timeout=100)
output = self.verify(
20, ssh_client.exec_command, 1,
"Verification of galera cluster node status failed",
'get status from galera node',
command).splitlines()
LOG.debug('output is %s' % output)
LOG.debug('mysql output from node "{0}" is \n"{1}"'.format(
controller, output)
)
result = {}
for i in output:
key, value = i.split('|')[0:-2]
result.update({key: value})
return result
mysql_vars = [
'wsrep_cluster_size',
'wsrep_ready',
'wsrep_connected'
]
result = self.get_variables_from_output(output, mysql_vars)
self.verify_response_body_content(
result.get('wsrep_cluster_size', 0),
str(len(self.controllers)),
msg='Cluster size on %s less '
'than controllers count' % controller,
failed_step='2')
self.verify_response_body_content(
result.get('wsrep_cluster_size', 0),
str(len(self.controllers)),
msg='Cluster size on %s less '
'than controllers count' % controller,
failed_step='2')
self.verify_response_body_content(
result.get(('wsrep_ready', 'OFF')), 'ON',
msg='wsrep_ready on %s is not ON' % controller,
failed_step='3')
self.verify_response_body_content(
result.get('wsrep_ready', 'OFF'), 'ON',
msg='wsrep_ready on %s is not ON' % controller,
failed_step='3')
self.verify_response_body_content(
result.get(('wsrep_connected', 'OFF')), 'ON',
msg='wsrep_connected on %s is not ON' % controller,
failed_step='3')
self.verify_response_body_content(
result.get('wsrep_connected', 'OFF'), 'ON',
msg='wsrep_connected on %s is not ON' % controller,
failed_step='3')
else:
self.skipTest('There is no Ubuntu deployment')