Log copy for failed functional tests cannot be disabled

Setting the following in functional_creds.conf doesn't have any effect
for failed functional container tests:
    copy_logs = False

Description of changes/issues addressed:
- Client functional tests look in functional_creds.conf for the
  copy_logs setting while tempest/api tests look in tempest.conf.
  So an accessor method 'get_copy_logs' is added for BaseMagnumTest
  (for tempest tests), and this gets overridden by BaseMagnumClient.
- Call to lamda was missing an argument in copy_logs_handler.
- set_copy_logs in config.py was setting cls.copy logs inconsistently
  (sometimes boolean True, otherwise to a string).
- BaseMagnumClient was calling bool() on a string: "bool(copy_logs)".
  bool() on a string always returns True except for null string.

Change-Id: I234fd0433602914fdf03f04f2394f6dc802df4fd
Closes-Bug: #1570949
This commit is contained in:
Dane LeBlanc 2016-04-18 10:28:36 -04:00
parent 46749e7957
commit dffbabcdc7
3 changed files with 12 additions and 4 deletions

View File

@ -160,6 +160,10 @@ class BaseMagnumTest(base.BaseTestCase):
creds = cls.get_credentials(name, type_of_creds, class_cleanup)
return cls.get_clients(creds, type_of_creds, request_type)
@classmethod
def get_copy_logs(cls):
return config.Config.copy_logs
@classmethod
def copy_logs_handler(cls, get_nodes_fn, coe, keypair):
"""Copy logs closure.
@ -172,8 +176,8 @@ class BaseMagnumTest(base.BaseTestCase):
:param coe: the COE type of the nodes
"""
if not config.Config.copy_logs:
return lambda: None
if not cls.get_copy_logs():
return lambda exec_info: None
def int_copy_logs(exec_info):
try:

View File

@ -113,7 +113,7 @@ class Config(object):
def set_copy_logs(cls, config):
if 'copy_logs' not in CONF.magnum:
cls.copy_logs = True
cls.copy_logs = CONF.magnum.copy_logs
cls.copy_logs = str(CONF.magnum.copy_logs).lower() == 'true'
@classmethod
def setUp(cls):

View File

@ -85,7 +85,7 @@ class BaseMagnumClient(base.BaseMagnumTest):
cls.master_flavor_id = master_flavor_id
cls.keypair_id = keypair_id
cls.dns_nameserver = dns_nameserver
cls.copy_logs = bool(copy_logs)
cls.copy_logs = str(copy_logs).lower() == 'true'
cls.cs = v1client.Client(username=user,
api_key=passwd,
project_id=tenant_id,
@ -178,6 +178,10 @@ class BaseMagnumClient(base.BaseMagnumTest):
if cls._show_bay(cls.bay.uuid).status == 'DELETE_FAILED':
raise Exception("bay %s delete failed" % cls.bay.uuid)
@classmethod
def get_copy_logs(cls):
return cls.copy_logs
def _wait_for_bay_complete(self, bay):
self._wait_on_status(
bay,