diff options
-rw-r--r-- | requirements.txt | 176 | ||||
-rw-r--r-- | tests/ci/pip_license.py | 80 | ||||
-rw-r--r-- | yardstick/benchmark/core/task.py | 8 |
3 files changed, 173 insertions, 91 deletions
diff --git a/requirements.txt b/requirements.txt index d90a9e5e4..d5d079386 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,90 +7,92 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -Babel==2.3.4 -Jinja2==2.8.1 -MarkupSafe==0.23 -PyYAML==3.12 -SQLAlchemy==1.1.4 -ansible==2.2.2.0 -appdirs==1.4.3 -backport-ipaddress==0.1; python_version <= '2.7' -chainmap==1.0.2 -cliff==2.4.0 -cmd2==0.6.9 -coverage==4.3.4 -debtcollector==1.11.0 -django==1.8.17 -docker-py==1.10.6 -ecdsa==0.13 -extras==1.0.0 -fixtures==3.0.0 -flake8==2.5.4 -flasgger==0.5.13 -flask-restful-swagger==0.19 -flask-restful==0.3.5 -flask==0.11.1 -funcsigs==1.0.2 -functools32==3.2.3.post2; python_version <= '2.7' -futures==3.0.5 -influxdb==4.0.0 -iso8601==0.1.11 -jsonpatch==1.15 -jsonpointer==1.10 -jsonschema==2.5.1 -jinja2schema==0.1.4 -keystoneauth1==2.18.0 -kubernetes==3.0.0a1 -linecache2==1.0.0 -lxml==3.7.2 -mccabe==0.4.0 -mock==2.0.0 # upgrade to version 2.0.0 to match python3 unittest.mock features -monotonic==1.2 -msgpack-python==0.4.8 -netaddr==0.7.19 -netifaces==0.10.5 -nose==1.3.7 -openstacksdk==0.9.13 -os-client-config==1.26.0 -osc-lib==1.3.0 -oslo.config==3.22.0 -oslo.i18n==3.12.0 -oslo.serialization==2.16.0 -oslo.utils==3.22.0 -paramiko==2.1.1 -pbr==1.10.0 -pep8==1.7.0 -pika==0.10.0 -positional==1.1.1 -prettytable==0.7.2 -pycrypto==2.6.1 -pyflakes==1.0.0 -pyparsing==2.1.10 -pyroute2==0.4.12 -pyrsistent==0.11.12 -python-cinderclient==1.11.0 -python-glanceclient==2.6.0 -python-heatclient==1.8.1 -python-keystoneclient==3.10.0 -python-mimeparse==1.6.0 -python-neutronclient==6.1.0 -python-novaclient==7.1.1 -python-openstackclient==3.8.1 -python-subunit==1.2.0 -python-swiftclient==3.3.0 -pytz==2016.10 -pyzmq==14.5.0 # version 14.5.0 for compatibility with trex traffic generator -requests==2.13.0 -requestsexceptions==1.1.3 -scp==0.10.2 -shade==1.17.0 -simplejson==3.10.0 -six==1.10.0 -stevedore==1.20.0 -testrepository==0.0.20 -testtools==2.2.0 -traceback2==1.4.0 -unicodecsv==0.14.1 -unittest2==1.1.0 -warlock==1.2.0 -wrapt==1.10.8 +Babel==2.3.4 # BSD; OSI Approved BSD License +Jinja2==2.8.1 # BSD; OSI Approved BSD License +MarkupSafe==0.23 # BSD; OSI Approved BSD License +PyYAML==3.12 # MIT; OSI Approved MIT License +SQLAlchemy==1.1.4 # MIT License; OSI Approved MIT License +ansible==2.2.2.0 # GPLv3; OSI Approved GNU General Public License v3 or later (GPLv3+) +appdirs==1.4.3 # MIT; OSI Approved MIT License +backport-ipaddress==0.1; python_version <= "2.7" # OSI Approved Python Software Foundation License +chainmap==1.0.2 # Python Software Foundation License; OSI Approved Python Software Foundation License +cliff==2.4.0 # OSI Approved Apache Software License +cmd2==0.6.9 # MIT; OSI Approved MIT License +coverage==4.3.4 # Apache 2.0; OSI Approved Apache Software License; http://www.apache.org/licenses/LICENSE-2.0; http://www.apache.org/licenses/LICENSE-2.0 +debtcollector==1.11.0 # OSI Approved Apache Software License +django==1.8.17 # BSD; OSI Approved BSD License +docker-py==1.10.6 # OSI Approved Apache Software License +ecdsa==0.13 # MIT +extras==1.0.0 # OSI Approved MIT License +fixtures==3.0.0 # OSI Approved BSD License; OSI Approved Apache Software License +flake8==2.5.4 # MIT; OSI Approved MIT License +flasgger==0.5.13 # MIT +flask-restful-swagger==0.19 # MIT +flask-restful==0.3.5 # BSD; OSI Approved BSD License +flask==0.11.1 # BSD; OSI Approved BSD License +funcsigs==1.0.2 # ASL; OSI Approved Apache Software License +functools32==3.2.3.post2; python_version <= "2.7" # PSF license +futures==3.0.5 # BSD; OSI Approved BSD License +influxdb==4.0.0 # MIT License; OSI Approved MIT License +iso8601==0.1.11 # MIT; OSI Approved MIT License +jsonpatch==1.15 # Modified BSD License; OSI Approved BSD License +jsonpointer==1.10 # Modified BSD License; OSI Approved BSD License +jsonschema==2.5.1 # MIT; OSI Approved MIT License +jinja2schema==0.1.4 # OSI Approved BSD License +keystoneauth1==2.18.0 # OSI Approved Apache Software License +kubernetes==3.0.0a1 # OSI Approved Apache Software License +linecache2==1.0.0 # OSI Approved Python Software Foundation License +lxml==3.7.2 # OSI Approved BSD License +mccabe==0.4.0 # Expat license; OSI Approved MIT License +# upgrade to version 2.0.0 to match python3 unittest.mock features +mock==2.0.0 # OSI Approved BSD License; `BSD License`_; http://github.com/testing-cabal/mock/blob/master/LICENSE.txt +monotonic==1.2 # Apache; OSI Approved Apache Software License +msgpack-python==0.4.8 # OSI Approved Apache Software License +netaddr==0.7.19 # BSD License; OSI Approved BSD License; OSI Approved MIT License +netifaces==0.10.5 # MIT License; OSI Approved MIT License +nose==1.3.7 # GNU LGPL; OSI Approved GNU Library or Lesser General Public License (LGPL) +openstacksdk==0.9.13 # OSI Approved Apache Software License +os-client-config==1.26.0 # OSI Approved Apache Software License +osc-lib==1.3.0 # OSI Approved Apache Software License +oslo.config==3.22.0 # OSI Approved Apache Software License +oslo.i18n==3.12.0 # OSI Approved Apache Software License +oslo.serialization==2.16.0 # OSI Approved Apache Software License +oslo.utils==3.22.0 # OSI Approved Apache Software License +paramiko==2.1.1 # LGPL; OSI Approved GNU Library or Lesser General Public License (LGPL) +pbr==1.10.0 # OSI Approved Apache Software License; Apache License, Version 2.0 +pep8==1.7.0 # Expat license; OSI Approved MIT License +# version 14.5.0 for compatibility with trex traffic generator +pika==0.10.0 # BSD; OSI Approved BSD License +positional==1.1.1 # OSI Approved Apache Software License +prettytable==0.7.2 # BSD (3 clause); OSI Approved BSD License +pycrypto==2.6.1 # Public Domain +pyflakes==1.0.0 # MIT; OSI Approved MIT License +pyparsing==2.1.10 # MIT License; OSI Approved MIT License +pyroute2==0.4.12 # dual license GPLv2+ and Apache v2; OSI Approved GNU General Public License v2 or later (GPLv2+); OSI Approved Apache Software License +pyrsistent==0.11.12 # LICENSE.mit; OSI Approved MIT License +python-cinderclient==1.11.0 # OSI Approved Apache Software License +python-glanceclient==2.6.0 # OSI Approved Apache Software License +python-heatclient==1.8.1 # OSI Approved Apache Software License +python-keystoneclient==3.10.0 # OSI Approved Apache Software License +python-mimeparse==1.6.0 # OSI Approved MIT License +python-neutronclient==6.1.0 # OSI Approved Apache Software License +python-novaclient==7.1.1 # OSI Approved Apache Software License +python-openstackclient==3.8.1 # OSI Approved Apache Software License +python-subunit==1.2.0 # OSI Approved Apache Software License; OSI Approved BSD License +python-swiftclient==3.3.0 # OSI Approved Apache Software License +pytz==2016.10 # MIT; OSI Approved MIT License +pyzmq==14.5.0 # LGPL+BSD; OSI Approved GNU Library or Lesser General Public License (LGPL); OSI Approved BSD License +requests==2.13.0 # Apache 2.0; OSI Approved Apache Software License +requestsexceptions==1.1.3 # OSI Approved Apache Software License +scp==0.10.2 # LGPL +shade==1.17.0 # OSI Approved Apache Software License +simplejson==3.10.0 # MIT License; OSI Approved MIT License; OSI Approved Academic Free License (AFL) +six==1.10.0 # MIT; OSI Approved MIT License +stevedore==1.20.0 # OSI Approved Apache Software License +testrepository==0.0.20 # OSI Approved BSD License; OSI Approved Apache Software License +testtools==2.2.0 # OSI Approved MIT License +traceback2==1.4.0 # OSI Approved Python Software Foundation License +unicodecsv==0.14.1 # BSD License; OSI Approved BSD License +unittest2==1.1.0 # OSI Approved BSD License +warlock==1.2.0 # OSI Approved Apache Software License +wrapt==1.10.8 # BSD diff --git a/tests/ci/pip_license.py b/tests/ci/pip_license.py new file mode 100644 index 000000000..e512db7ee --- /dev/null +++ b/tests/ci/pip_license.py @@ -0,0 +1,80 @@ +# Copyright (c) 2017 Intel Corporation +# +# 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 +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pkg_resources +import pip.req +import sys + + +def get_pkg_license(pkg): + """ + Given a package reference (as from requirements.txt), + return license listed in package metadata. + NOTE: This function does no error checking and is for + demonstration purposes only. + + can-pip-or-setuptools-distribute-etc-list-the-license-used-by-each-install + https://stackoverflow.com/a/19086260 + https://stackoverflow.com/users/308066/dkamins + """ + try: + pkgs = pkg_resources.working_set.resolve(pkg, replace_conflicting=True) + # pkgs = pkg_resources.require(pkg) + except pkg_resources.DistributionNotFound as e: + sys.stderr.write("%s\n" % e) + return None + pkg = pkgs[0] + try: + info = pkg.get_metadata_lines('METADATA') + except IOError: + try: + info = pkg.get_metadata_lines('PKG-INFO') + except IOError: + info = [] + licenses = [] + for line in info: + if "License:" in line: + lic = line.split(': ', 1)[1] + if "UNKNOWN" not in lic: + # try this type first + licenses.append(lic) + # break + elif "License ::" in line: + licenses.append(" ".join(line.split(':: ')[1:3])) + return "; ".join(licenses) + +# quick and dirty hack + + +def main(): + + reqs = list(pip.req.parse_requirements("../../requirements.txt", session='hack')) + lines = [] + for req in reqs: + pkg = pkg_resources.parse_requirements([req.name]) + lic = get_pkg_license(pkg) + markers = req.markers + if markers: + mark = "; " + str(req.markers) + else: + mark = "" + line = "{0}{1}\t\t# {2}\n".format(req.req, mark, lic) + sys.stdout.write(line) + lines.append(line) + with open("requirements.txt", "w") as rrr: + rrr.writelines(lines) + + +if __name__ == '__main__': + main() diff --git a/yardstick/benchmark/core/task.py b/yardstick/benchmark/core/task.py index 703bb6d95..395f3b8e8 100644 --- a/yardstick/benchmark/core/task.py +++ b/yardstick/benchmark/core/task.py @@ -38,6 +38,7 @@ output_file_default = "/tmp/yardstick.out" config_file = '/etc/yardstick/yardstick.conf' test_cases_dir_default = "tests/opnfv/test_cases/" LOG = logging.getLogger(__name__) +JOIN_TIMEOUT = 60 class Task(object): # pragma: no cover @@ -263,13 +264,12 @@ class Task(object): # pragma: no cover # Wait for background runners to finish for runner in background_runners: - status = runner.join(timeout=60) + status = runner.join(JOIN_TIMEOUT) if status is None: # Nuke if it did not stop nicely base_runner.Runner.terminate(runner) - status = runner_join(runner) - else: - base_runner.Runner.release(runner) + runner.join(JOIN_TIMEOUT) + base_runner.Runner.release(runner) self.outputs.update(runner.get_output()) result.extend(runner.get_result()) |