X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2Fhoneycomb%2FHoneycombUtil.py;h=76bb5b38788a8e230d2c2cc3d181927d48776889;hb=refs%2Fchanges%2F86%2F9286%2F3;hp=a718a242f2a447c75802109ad4da51610c89a617;hpb=2671e2616aab7a0bfec7a3501d53ccd72e12d668;p=csit.git diff --git a/resources/libraries/python/honeycomb/HoneycombUtil.py b/resources/libraries/python/honeycomb/HoneycombUtil.py index a718a242f2..76bb5b3878 100644 --- a/resources/libraries/python/honeycomb/HoneycombUtil.py +++ b/resources/libraries/python/honeycomb/HoneycombUtil.py @@ -302,7 +302,14 @@ class HoneycombUtil(object): 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="", @@ -399,16 +406,60 @@ class HoneycombUtil(object): return HTTPRequest.delete(node, path) @staticmethod - def archive_honeycomb_log(node): - """Copy honeycomb log file from DUT node to VIRL for archiving. + 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) - cmd = "cp /var/log/honeycomb/honeycomb.log /scratch/" + 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)) - ssh.exec_command_sudo(cmd) + @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")