aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/python/honeycomb/HoneycombUtil.py
diff options
context:
space:
mode:
authorselias <samelias@cisco.com>2016-12-09 18:11:53 +0100
committerselias <samelias@cisco.com>2016-12-16 12:13:53 +0100
commit1813672eb9f6988046bc65167235ae37b088298c (patch)
treea6850005d93098cfe84bf13e0b40ddf702ecfbf4 /resources/libraries/python/honeycomb/HoneycombUtil.py
parentcf561a6e3d4c4fbd78ab6c9d0a9aa817bb3300fc (diff)
CSIT-424: HC Test: JSON comparison function rework
When comparing multi-level JSON trees, the exceptions raised carry more useful information. Keys and values not present in reference data are ignored. No longer puts chunks of honeycomb's log file into robot report. The entire log file will be archived after https://gerrit.fd.io/r/4171 Change-Id: Ib597080fa3d9b2c43463c76ee0d52f317ea072e7 Signed-off-by: selias <samelias@cisco.com>
Diffstat (limited to 'resources/libraries/python/honeycomb/HoneycombUtil.py')
-rw-r--r--resources/libraries/python/honeycomb/HoneycombUtil.py66
1 files changed, 5 insertions, 61 deletions
diff --git a/resources/libraries/python/honeycomb/HoneycombUtil.py b/resources/libraries/python/honeycomb/HoneycombUtil.py
index 747c9dae8e..c290af9a6e 100644
--- a/resources/libraries/python/honeycomb/HoneycombUtil.py
+++ b/resources/libraries/python/honeycomb/HoneycombUtil.py
@@ -27,8 +27,7 @@ from enum import Enum, unique
from robot.api import logger
-from resources.libraries.python.ssh import SSH
-from resources.libraries.python.HTTPRequest import HTTPRequest, HTTPCodes
+from resources.libraries.python.HTTPRequest import HTTPRequest
from resources.libraries.python.constants import Constants as Const
@@ -302,10 +301,7 @@ class HoneycombUtil(object):
base_path = HoneycombUtil.read_path_from_url_file(url_file)
path = base_path + path
status_code, resp = HTTPRequest.get(node, path)
- response = loads(resp)
- if status_code != HTTPCodes.OK:
- HoneycombUtil.read_log_tail(node)
- return status_code, response
+ return status_code, loads(resp)
@staticmethod
def put_honeycomb_data(node, url_file, data, path="",
@@ -343,13 +339,9 @@ class HoneycombUtil(object):
base_path = HoneycombUtil.read_path_from_url_file(url_file)
path = base_path + path
logger.trace(path)
- (status_code, response) = HTTPRequest.put(
+ return HTTPRequest.put(
node=node, path=path, headers=header, payload=data)
- if status_code not in (HTTPCodes.OK, HTTPCodes.ACCEPTED):
- HoneycombUtil.read_log_tail(node)
- return status_code, response
-
@staticmethod
def post_honeycomb_data(node, url_file, data=None,
data_representation=DataRepresentation.JSON,
@@ -383,13 +375,9 @@ class HoneycombUtil(object):
data = dumps(data)
path = HoneycombUtil.read_path_from_url_file(url_file)
- (status_code, response) = HTTPRequest.post(
+ return HTTPRequest.post(
node=node, path=path, headers=header, payload=data, timeout=timeout)
- if status_code not in (HTTPCodes.OK, HTTPCodes.ACCEPTED):
- HoneycombUtil.read_log_tail(node)
- return status_code, response
-
@staticmethod
def delete_honeycomb_data(node, url_file, path=""):
"""Delete data from Honeycomb according to given URL.
@@ -407,48 +395,4 @@ class HoneycombUtil(object):
base_path = HoneycombUtil.read_path_from_url_file(url_file)
path = base_path + path
- (status_code, response) = HTTPRequest.delete(node, path)
-
- if status_code != HTTPCodes.OK:
- HoneycombUtil.read_log_tail(node)
- return status_code, response
-
- @staticmethod
- def read_log_tail(node, lines=120):
- """Read the last N lines of the Honeycomb log file and print them
- to robot log.
-
- :param node: Honeycomb node.
- :param lines: Number of lines to read.
- :type node: dict
- :type lines: int
- :returns: Last N log lines.
- :rtype: str
- """
-
- logger.trace(
- "HTTP request failed, "
- "obtaining last {0} lines of Honeycomb log...".format(lines))
-
- ssh = SSH()
- ssh.connect(node)
- cmd = "tail -n {0} /var/log/honeycomb/honeycomb.log".format(lines)
- # ssh also logs the reply on trace level
- (_, stdout, _) = ssh.exec_command(cmd, timeout=30)
-
- return stdout
-
- @staticmethod
- def archive_honeycomb_log(node):
- """Copy honeycomb log file from DUT node to VIRL for archiving.
-
- :param node: Honeycomb node.
- :type node: dict
- """
-
- ssh = SSH()
- ssh.connect(node)
-
- cmd = "cp /var/log/honeycomb/honeycomb.log /scratch/"
-
- ssh.exec_command_sudo(cmd)
+ return HTTPRequest.delete(node, path)