X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2FSetupFramework.py;h=e0c3a4cb6159e7a13909c51dadb0fe1cf2e8b211;hp=880b1c94ce9595822b73a4faaf4769111f613346;hb=HEAD;hpb=4f0b7994d54b904dc3da2ada14c69e743df4d911 diff --git a/resources/libraries/python/SetupFramework.py b/resources/libraries/python/SetupFramework.py index 880b1c94ce..95ca8a7d51 100644 --- a/resources/libraries/python/SetupFramework.py +++ b/resources/libraries/python/SetupFramework.py @@ -1,4 +1,4 @@ -# Copyright (c) 2021 Cisco and/or its affiliates. +# Copyright (c) 2023 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -56,7 +56,8 @@ def pack_framework_dir(): run( [ u"tar", u"--sparse", u"--exclude-vcs", u"--exclude=output*.xml", - u"--exclude=./tmp", u"-zcf", file_name, u"." + u"--exclude=./tmp", u"--exclude=./env", u"--exclude=./.git", + u"-zcf", file_name, u"." ], msg=u"Could not pack testing framework" ) @@ -105,7 +106,7 @@ def extract_tarball_at_node(tarball, node): node, cmd, message=f"Failed to extract {tarball} at node {node[u'type']} " f"host {node[u'host']}, port {node[u'port']}", - timeout=60, include_reason=True + timeout=600, include_reason=True ) logger.console( f"Extracting tarball to {con.REMOTE_FW_DIR} on {node[u'type']} " @@ -116,9 +117,13 @@ def extract_tarball_at_node(tarball, node): def create_env_directory_at_node(node): """Create fresh virtualenv to a directory, install pip requirements. + Return stdout and stderr of the command, + so we see which installs are behaving weird (e.g. attempting download). + :param node: Node to create virtualenv on. :type node: dict - :returns: nothing + :returns: Stdout and stderr. + :rtype: str, str :raises RuntimeError: When failed to setup virtualenv. """ logger.console( @@ -129,8 +134,8 @@ def create_env_directory_at_node(node): f"-p $(which python3) --system-site-packages --never-download env " \ f"&& source env/bin/activate && ANSIBLE_SKIP_CONFLICT_CHECK=1 " \ f"pip3 install -r requirements.txt" - exec_cmd_no_error( - node, cmd, timeout=100, include_reason=True, + stdout, stderr = exec_cmd_no_error( + node, cmd, timeout=300, include_reason=True, message=f"Failed install at node {node[u'type']} host {node[u'host']}, " f"port {node[u'port']}" ) @@ -138,6 +143,7 @@ def create_env_directory_at_node(node): f"Virtualenv setup on {node[u'type']} host {node[u'host']}, " f"port {node[u'port']} done." ) + return stdout, stderr def setup_node(node, tarball, remote_tarball, results=None, logs=None): @@ -160,7 +166,10 @@ def setup_node(node, tarball, remote_tarball, results=None, logs=None): copy_tarball_to_node(tarball, node) extract_tarball_at_node(remote_tarball, node) if node[u"type"] == NodeType.TG: - create_env_directory_at_node(node) + stdout, stderr = create_env_directory_at_node(node) + if isinstance(logs, list): + logs.append(f"{node[u'host']} Env stdout: {stdout}") + logs.append(f"{node[u'host']} Env stderr: {stderr}") except Exception: # any exception must result in result = False # since this runs in a thread and can't be caught anywhere else @@ -206,7 +215,7 @@ def delete_framework_dir(node): node, f"sudo rm -rf {con.REMOTE_FW_DIR}", message=f"Framework delete failed at node {node[u'type']} " f"host {node[u'host']}, port {node[u'port']}", - timeout=100, include_reason=True + timeout=100, include_reason=True, ) logger.console( f"Deleting framework directory on {node[u'type']} host {node[u'host']}," @@ -250,9 +259,9 @@ def cleanup_node(node, results=None, logs=None): class SetupFramework: """Setup suite run on topology nodes. - Many VAT/CLI based tests need the scripts at remote hosts before executing - them. This class packs the whole testing directory and copies it over - to all nodes in topology under /tmp/ + Some tests need the scripts at remote hosts before executing them. + This class packs the whole testing directory and copies it over + to all nodes in topology under /tmp/. """ @staticmethod