From 19c91adadd57bfc4e7514993b2a711a826d52e04 Mon Sep 17 00:00:00 2001 From: selias Date: Tue, 13 Sep 2016 16:51:37 +0200 Subject: CSIT-405: Honeycomb test update and cleanup - update suite setup and constants to allow test runs again - cleanup basic interface keywords - cleanup L2-fib test data - add "continue on failure" keyword to some partially failing tests - add teardown to all suites, restarts honeycomb if suite had test failures - fix minor PEP-8 violations in Topology.py Change-Id: Ic5b434af71f77855f81461b280299b8318932c5a Signed-off-by: selias --- .../libraries/python/honeycomb/HcPersistence.py | 7 ++-- .../libraries/python/honeycomb/HoneycombSetup.py | 41 ++++++++++++++++++++-- .../libraries/python/honeycomb/HoneycombUtil.py | 1 - 3 files changed, 41 insertions(+), 8 deletions(-) (limited to 'resources/libraries/python/honeycomb') diff --git a/resources/libraries/python/honeycomb/HcPersistence.py b/resources/libraries/python/honeycomb/HcPersistence.py index 4d192525d8..3bbc52fa91 100644 --- a/resources/libraries/python/honeycomb/HcPersistence.py +++ b/resources/libraries/python/honeycomb/HcPersistence.py @@ -40,7 +40,7 @@ class HcPersistence(object): :type nodes: list :raises HoneycombError: If persisted configuration could not be removed. """ - cmd = "rm {0}/data/persistence/honeycomb/*".format(Const.REMOTE_HC_DIR) + cmd = "rm -rf {}/*".format(Const.REMOTE_HC_PERSIST) for node in nodes: if node['type'] == NodeType.DUT: ssh = SSH() @@ -60,7 +60,7 @@ class HcPersistence(object): @staticmethod def modify_persistence_files(node, find, replace): - """Searches contents of persistence file config.json for the provided + """Searches contents of persistence file data.json for the provided string, and replaces all occurrences with another string. :param node: Honeycomb node. @@ -74,8 +74,7 @@ class HcPersistence(object): """ argument = "\"s/{0}/{1}/g\"".format(find, replace) - path = "{0}/etc/opendaylight/honeycomb/config.json".format( - Const.REMOTE_HC_DIR) + path = "{0}/config/data.json".format(Const.REMOTE_HC_PERSIST) command = "sed -i {0} {1}".format(argument, path) ssh = SSH() diff --git a/resources/libraries/python/honeycomb/HoneycombSetup.py b/resources/libraries/python/honeycomb/HoneycombSetup.py index 04af9a5a8b..b8c47fac03 100644 --- a/resources/libraries/python/honeycomb/HoneycombSetup.py +++ b/resources/libraries/python/honeycomb/HoneycombSetup.py @@ -58,7 +58,7 @@ class HoneycombSetup(object): logger.console("\nStarting Honeycomb service ...") - cmd = "{0}/bin/start".format(Const.REMOTE_HC_DIR) + cmd = "sudo service honeycomb start" for node in nodes: if node['type'] == NodeType.DUT: @@ -86,7 +86,7 @@ class HoneycombSetup(object): """ logger.console("\nShutting down Honeycomb service ...") - cmd = "{0}/bin/stop".format(Const.REMOTE_HC_DIR) + cmd = "sudo service honeycomb stop" errors = [] for node in nodes: @@ -143,6 +143,13 @@ class HoneycombSetup(object): else: raise HoneycombError('Unexpected return code: {0}.'. format(status_code)) + + status_code, _ = HcUtil.get_honeycomb_data( + node, "config_vpp_interfaces") + if status_code != HTTPCodes.OK: + raise HoneycombError('Honeycomb on node {0} running but ' + 'not yet ready.'.format(node['host']), + enable_logging=False) return True @staticmethod @@ -157,7 +164,7 @@ class HoneycombSetup(object): :return: True if all GETs fail to connect. :rtype bool """ - cmd = "ps -ef | grep -v grep | grep karaf" + cmd = "ps -ef | grep -v grep | grep honeycomb" for node in nodes: if node['type'] == NodeType.DUT: try: @@ -190,6 +197,33 @@ class HoneycombSetup(object): format(node['host'])) return True + @staticmethod + def configure_unsecured_access(*nodes): + """Configure Honeycomb to allow restconf requests through insecure HTTP + used by tests. By default this is only allowed for localhost. + + :param nodes: All nodes in test topology. + :type nodes: dict + :raises HoneycombError: If the configuration could not be changed. + """ + # TODO: Modify tests to use HTTPS instead. + + find = "restconf-binding-address" + replace = '\\"restconf-binding-address\\": \\"0.0.0.0\\",' + + argument = '"/{0}/c\\ {1}"'.format(find, replace) + path = "{0}/config/honeycomb.json".format(Const.REMOTE_HC_DIR) + command = "sed -i {0} {1}".format(argument, path) + + ssh = SSH() + for node in nodes: + if node['type'] == NodeType.DUT: + ssh.connect(node) + (ret_code, _, stderr) = ssh.exec_command_sudo(command) + if ret_code != 0: + raise HoneycombError("Failed to modify configuration on " + "node {0}, {1}".format(node, stderr)) + @staticmethod def print_environment(nodes): """Print information about the nodes to log. The information is defined @@ -239,3 +273,4 @@ class HoneycombSetup(object): ssh = SSH() ssh.connect(node) ssh.exec_command_sudo(cmd) + diff --git a/resources/libraries/python/honeycomb/HoneycombUtil.py b/resources/libraries/python/honeycomb/HoneycombUtil.py index 8f1392c972..2b8e28a5a6 100644 --- a/resources/libraries/python/honeycomb/HoneycombUtil.py +++ b/resources/libraries/python/honeycomb/HoneycombUtil.py @@ -86,7 +86,6 @@ class HoneycombError(Exception): self._msg = "{0}: {1}".format(self.__class__.__name__, msg) self._details = details if enable_logging: - logger.error(self._msg) logger.debug(self._details) def __repr__(self): -- cgit 1.2.3-korg