from robot.api import logger
+from resources.libraries.python.ssh import SSH
from resources.libraries.python.HTTPRequest import HTTPRequest
from resources.libraries.python.constants import Constants as Const
base_path = HoneycombUtil.read_path_from_url_file(url_file)
path = base_path + path
status_code, resp = HTTPRequest.get(node, path)
- return status_code, loads(resp)
+
+ try:
+ data = loads(resp)
+ except ValueError:
+ logger.debug("Failed to deserialize JSON data.")
+ data = None
+
+ return status_code, data
@staticmethod
def put_honeycomb_data(node, url_file, data, path="",
base_path = HoneycombUtil.read_path_from_url_file(url_file)
path = base_path + path
return HTTPRequest.delete(node, path)
+
+ @staticmethod
+ def append_honeycomb_log(node, suite_name):
+ """Append Honeycomb log for the current test suite to the full log.
+
+ :param node: Honeycomb node.
+ :param suite_name: Name of the current test suite. ${SUITE_NAME}
+ variable in robotframework.
+ :type node: dict
+ :type suite_name: str
+ """
+
+ ssh = SSH()
+ ssh.connect(node)
+
+ ssh.exec_command(
+ "echo '{separator}' >> /tmp/honeycomb.log".format(separator="="*80))
+ ssh.exec_command(
+ "echo 'Log for suite: {suite}' >> /tmp/honeycomb.log".format(
+ suite=suite_name))
+ ssh.exec_command(
+ "cat {hc_log} >> /tmp/honeycomb.log".format(
+ hc_log=Const.REMOTE_HC_LOG))
+
+ @staticmethod
+ def clear_honeycomb_log(node):
+ """Delete the Honeycomb log file for the current test suite.
+
+ :param node: Honeycomb node.
+ :type node: dict"""
+
+ ssh = SSH()
+ ssh.connect(node)
+
+ ssh.exec_command("sudo rm {hc_log}".format(hc_log=Const.REMOTE_HC_LOG))
+
+ @staticmethod
+ def archive_honeycomb_log(node, perf=False):
+ """Copy honeycomb log file from DUT node to VIRL for archiving.
+
+ :param node: Honeycomb node.
+ :param perf: Alternate handling, for use with performance test topology.
+ :type node: dict
+ :type perf: bool
+ """
+
+ ssh = SSH()
+ ssh.connect(node)
+
+ if not perf:
+ cmd = "cp /tmp/honeycomb.log /scratch/"
+ ssh.exec_command_sudo(cmd, timeout=60)
+ else:
+ ssh.scp(
+ ".",
+ "/tmp/honeycomb.log",
+ get=True,
+ timeout=60)
+ ssh.exec_command("rm /tmp/honeycomb.log")