Browse Source

Functional: Add prefix when copy logs on failure

It's hard to indentify which node is master and which is slave now, add
prefix `master` or `node` to logs directory on functional testing
failure.

Change-Id: Ida739845d5276d53b037ac32dcb1b72bc717936f
changes/81/309881/2
Eli Qiao 6 years ago committed by Eli Qiao
parent
commit
114c18a9f7
  1. 4
      magnum/tests/functional/api/v1/test_bay.py
  2. 57
      magnum/tests/functional/common/base.py
  3. 4
      magnum/tests/functional/python_client_base.py

4
magnum/tests/functional/api/v1/test_bay.py

@ -101,8 +101,8 @@ class BayTest(base.BaseMagnumTest):
self.bay_uuid = model.uuid
self.addOnException(self.copy_logs_handler(
lambda: list(
self._get_bay_by_id(self.bay_uuid)[1].node_addresses +
self._get_bay_by_id(self.bay_uuid)[1].master_addresses),
[self._get_bay_by_id(self.bay_uuid)[1].master_addresses,
self._get_bay_by_id(self.bay_uuid)[1].node_addresses]),
self.baymodel.coe,
self.keypair))
self.bay_client.wait_for_created_bay(model.uuid, delete_on_error=False)

57
magnum/tests/functional/common/base.py

@ -23,6 +23,9 @@ from magnum.tests.functional.common import config
from magnum.tests.functional.common import manager
COPY_LOG_HELPER = "magnum/tests/contrib/copy_instance_logs.sh"
class BaseMagnumTest(base.BaseTestCase):
"""Sets up configuration required for functional tests"""
@ -172,7 +175,8 @@ class BaseMagnumTest(base.BaseTestCase):
and copy addresses from there locally.
:param get_nodes_fn: function that takes no parameters and returns
a list of node IPs to get logs from
a list of node IPs which are in such form:
[[master_nodes], [slave_nodes]].
:param coe: the COE type of the nodes
"""
@ -187,28 +191,35 @@ class BaseMagnumTest(base.BaseTestCase):
msg = "Failed to copy logs for bay"
nodes_addresses = get_nodes_fn()
for node_address in nodes_addresses:
log_name = "node-" + func_name
try:
base_path = os.path.split(os.path.dirname(
os.path.abspath(magnum.__file__)))[0]
script = "magnum/tests/contrib/copy_instance_logs.sh"
full_location = os.path.join(base_path, script)
cls.LOG.debug("running %s" % full_location)
cls.LOG.debug("keypair: %s" % keypair)
subprocess.check_call([
full_location,
node_address,
coe,
log_name,
str(keypair)
])
except Exception:
cls.LOG.exception(msg)
cls.LOG.exception("failed to copy from %s to %s%s-%s" %
(node_address,
"/opt/stack/logs/bay-nodes/",
log_name, node_address))
master_nodes = nodes_addresses[0]
slave_nodes = nodes_addresses[1]
base_path = os.path.split(os.path.dirname(
os.path.abspath(magnum.__file__)))[0]
full_location = os.path.join(base_path, COPY_LOG_HELPER)
def do_copy_logs(prefix, nodes_address):
log_name = prefix + "-" + func_name
for node_address in nodes_address:
try:
cls.LOG.debug("running %s" % full_location)
cls.LOG.debug("keypair: %s" % keypair)
subprocess.check_call([
full_location,
node_address,
coe,
log_name,
str(keypair)
])
except Exception:
cls.LOG.exception(msg)
cls.LOG.exception(
"failed to copy from %s to %s%s-%s" %
(node_address, "/opt/stack/logs/bay-nodes/",
log_name, node_address))
do_copy_logs('master', master_nodes)
do_copy_logs('node', slave_nodes)
except Exception:
cls.LOG.exception(msg)

4
magnum/tests/functional/python_client_base.py

@ -248,8 +248,8 @@ extendedKeyUsage = clientAuth
self.addOnException(
self.copy_logs_handler(
lambda: list(self.cs.bays.get(self.bay.uuid).node_addresses +
self.cs.bays.get(self.bay.uuid).master_addresses),
lambda: list([self.cs.bays.get(self.bay.uuid).master_addresses,
self.cs.bays.get(self.bay.uuid).node_addresses]),
self.baymodel.coe,
'default'))
self._wait_for_bay_complete(self.bay)

Loading…
Cancel
Save