diff --git a/.gitignore b/.gitignore index fa5f3239..49e8d3a7 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,7 @@ pip-log.txt nosetests.xml .testrepository .venv +.stestr # Translations *.mo diff --git a/.stestr.conf b/.stestr.conf new file mode 100644 index 00000000..b5e41b4c --- /dev/null +++ b/.stestr.conf @@ -0,0 +1,3 @@ +[DEFAULT] +test_path=./tricircle/tests/unit +top_dir=./ \ No newline at end of file diff --git a/.zuul.yaml b/.zuul.yaml index 5f7424ea..7a7e8e0d 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -20,20 +20,69 @@ - openstack/tricircle nodeset: legacy-ubuntu-xenial-2-node +- job: + name: tricircle-tox-lower-constraints + parent: openstack-tox-lower-constraints + required-projects: + - openstack/neutron + - openstack/networking-sfc + +- job: + name: tricircle-tox-cover + parent: openstack-tox-cover + required-projects: + - openstack/neutron + - openstack/networking-sfc + + - project: templates: - - openstack-cover-jobs - - openstack-python-jobs - - openstack-python35-jobs + - openstack-python-jobs-neutron + - openstack-python35-jobs-neutron - openstack-python36-jobs - check-requirements - publish-openstack-docs-pti - release-notes-jobs-python3 check: jobs: + - tricircle-tox-cover + - tricircle-tox-lower-constraints + - openstack-tox-pep8: + required-projects: + - openstack/neutron + - openstack/networking-sfc + - openstack-tox-py27: + required-projects: + - openstack/neutron + - openstack/networking-sfc + - openstack-tox-py35: + required-projects: + - openstack/neutron + - openstack/networking-sfc + - openstack-tox-py36: + required-projects: + - openstack/neutron + - openstack/networking-sfc - tricircle-functional - tricircle-multiregion gate: jobs: + - tricircle-tox-lower-constraints + - openstack-tox-pep8: + required-projects: + - openstack/neutron + - openstack/networking-sfc + - openstack-tox-py27: + required-projects: + - openstack/neutron + - openstack/networking-sfc + - openstack-tox-py35: + required-projects: + - openstack/neutron + - openstack/networking-sfc + - openstack-tox-py36: + required-projects: + - openstack/neutron + - openstack/networking-sfc - tricircle-functional - tricircle-multiregion diff --git a/lower-constraints.txt b/lower-constraints.txt new file mode 100644 index 00000000..4981da2b --- /dev/null +++ b/lower-constraints.txt @@ -0,0 +1,157 @@ +alabaster==0.7.10 +alembic==0.8.10 +amqp==2.1.1 +appdirs==1.3.0 +astroid==1.6.5 +Babel==2.3.4 +bandit==1.1.0 +bashate==0.5.1 +beautifulsoup4==4.6.0 +cachetools==2.0.0 +cffi==1.7.0 +cliff==2.8.0 +cmd2==0.8.0 +contextlib2==0.4.0 +coverage==4.0 +ddt==1.0.1 +debtcollector==1.2.0 +decorator==3.4.0 +deprecation==1.0 +docutils==0.11 +dogpile.cache==0.6.2 +dulwich==0.15.0 +eventlet==0.18.2 +extras==1.0.0 +fasteners==0.7.0 +fixtures==3.0.0 +flake8-import-order==0.12 +flake8==2.6.2 +future==0.16.0 +futurist==1.2.0 +gitdb==0.6.4 +GitPython==1.0.1 +greenlet==0.4.10 +hacking==1.1.0 +httplib2==0.9.1 +imagesize==0.7.1 +iso8601==0.1.11 +Jinja2==2.10 +jmespath==0.9.0 +jsonpatch==1.16 +jsonpointer==1.13 +jsonschema==2.6.0 +keystoneauth1==3.4.0 +keystonemiddleware==4.17.0 +kombu==4.0.0 +linecache2==1.0.0 +logilab-common==1.4.1 +logutils==0.3.5 +Mako==0.4.0 +MarkupSafe==1.0 +mccabe==0.2.1 +mock==2.0.0 +monotonic==0.6 +mox3==0.20.0 +msgpack-python==0.4.0 +munch==2.1.0 +netaddr==0.7.18 +netifaces==0.10.4 +neutron-lib==1.20.0 +openstackdocstheme==1.18.1 +openstacksdk==0.11.2 +os-client-config==1.28.0 +os-service-types==1.2.0 +os-xenapi==0.3.1 +osc-lib==1.8.0 +oslo.cache==1.26.0 +oslo.concurrency==3.26.0 +oslo.config==5.2.0 +oslo.context==2.19.2 +oslo.db==4.27.0 +oslo.i18n==3.15.3 +oslo.log==3.36.0 +oslo.messaging==5.29.0 +oslo.middleware==3.31.0 +oslo.policy==1.30.0 +oslo.privsep==1.23.0 +oslo.reports==1.18.0 +oslo.rootwrap==5.8.0 +oslo.serialization==2.18.0 +oslo.service==1.24.0 +oslo.upgradecheck==0.1.0 +oslo.utils==3.33.0 +oslo.versionedobjects==1.31.2 +oslosphinx==4.7.0 +oslotest==3.2.0 +osprofiler==1.4.0 +os-testr==1.0.0 +ovs==2.8.0 +ovsdbapp==0.9.1 +Paste==2.0.2 +PasteDeploy==1.5.0 +pbr==2.0.0 +pecan==1.3.2 +pep8==1.5.7 +pika-pool==0.1.3 +pika==0.10.0 +positional==1.2.1 +prettytable==0.7.2 +psutil==3.2.2 +pycadf==1.1.0 +pycodestyle==2.4.0 +pycparser==2.18 +pyflakes==0.8.1 +Pygments==2.2.0 +pyinotify==0.9.6 +pylint==1.9.2 +PyMySQL==0.7.6 +pyparsing==2.1.0 +pyperclip==1.5.27 +pyroute2==0.4.21 +python-cinderclient==3.3.0 +python-dateutil==2.5.3 +python-designateclient==2.7.0 +python-editor==1.0.3 +python-glanceclient==2.8.0 +python-keystoneclient==3.8.0 +python-mimeparse==1.6.0 +python-neutronclient==6.7.0 +python-novaclient==9.1.0 +python-subunit==1.0.0 +pytz==2013.6 +PyYAML==3.12 +reno==2.5.0 +repoze.lru==0.7 +requests==2.14.2 +requests-mock==1.2.0 +requestsexceptions==1.2.0 +rfc3986==0.3.1 +Routes==2.3.1 +ryu==4.24 +simplejson==3.5.1 +six==1.10.0 +smmap==0.9.0 +snowballstemmer==1.2.1 +Sphinx==1.6.2 +sphinxcontrib-websupport==1.0.1 +sqlalchemy-migrate==0.11.0 +SQLAlchemy==1.2.0 +sqlparse==0.2.2 +statsd==3.2.1 +stestr==1.0.0 +stevedore==1.20.0 +Tempita==0.5.2 +tenacity==3.2.1 +testrepository==0.0.18 +testresources==2.0.0 +testscenarios==0.4 +testtools==2.2.0 +tinyrpc==0.6 +traceback2==1.4.0 +unittest2==1.1.0 +vine==1.1.4 +waitress==1.1.0 +weakrefmethod==1.0.2 +WebOb==1.8.2 +WebTest==2.0.27 +wrapt==1.7.0 diff --git a/requirements.txt b/requirements.txt index 1c4b5d52..040cf10a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,7 +9,7 @@ PasteDeploy>=1.5.0 # MIT Routes>=2.3.1 # MIT debtcollector>=1.2.0 # Apache-2.0 eventlet!=0.18.3,!=0.20.1,>=0.18.2 # MIT -pecan!=1.0.2,!=1.0.3,!=1.0.4,!=1.2,>=1.0.0 # BSD +pecan!=1.0.2,!=1.0.3,!=1.0.4,!=1.2,>=1.3.2 # BSD requests>=2.14.2 # Apache-2.0 Jinja2>=2.10 # BSD License (3 clause) keystoneauth1>=3.4.0 # Apache-2.0 @@ -17,9 +17,8 @@ keystonemiddleware>=4.17.0 # Apache-2.0 netaddr>=0.7.18 # BSD netifaces>=0.10.4 # MIT neutron-lib>=1.20.0 # Apache-2.0 -retrying!=1.3.0,>=1.2.3 # Apache-2.0 -SQLAlchemy!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8,>=1.0.10 # MIT -WebOb>=1.7.1 # MIT +SQLAlchemy!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8,>=1.2.0 # MIT +WebOb>=1.8.2 # MIT python-cinderclient>=3.3.0 # Apache-2.0 python-glanceclient>=2.8.0 # Apache-2.0 python-keystoneclient>=3.8.0 # Apache-2.0 @@ -43,6 +42,11 @@ oslo.service!=1.28.1,>=1.24.0 # Apache-2.0 oslo.utils>=3.33.0 # Apache-2.0 sqlalchemy-migrate>=0.11.0 # Apache-2.0 +# These repos are installed from git in OpenStack CI if the job +# configures them as required-projects: +neutron>=12.0.0 # Apache-2.0 +networking-sfc>=6.0.0 # Apache-2.0 + # The comment below indicates this project repo is current with neutron-lib # and should receive neutron-lib consumption patches as they are released # in neutron-lib. It also implies the project will stay current with TC diff --git a/test-requirements.txt b/test-requirements.txt index 6b3e2b56..6844a9d2 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -9,7 +9,7 @@ mock>=2.0.0 # BSD python-subunit>=1.0.0 # Apache-2.0/BSD requests-mock>=1.2.0 # Apache-2.0 docutils>=0.11 # OSI-Approved Open Source, Public Domain -sphinx!=1.6.6,!=1.6.7,>=1.6.2 # BSD +sphinx!=1.6.6,>=1.6.2 # BSD openstackdocstheme>=1.18.1 # Apache-2.0 testrepository>=0.0.18 # Apache-2.0/BSD testtools>=2.2.0 # MIT diff --git a/tox.ini b/tox.ini index dea23704..27c4ba17 100644 --- a/tox.ini +++ b/tox.ini @@ -4,21 +4,19 @@ envlist = py35,py27,pypy,pep8 skipsdist = True [testenv] -sitepackages = True +setenv = VIRTUAL_ENV={envdir} + PYTHONWARNINGS=default::DeprecationWarning +passenv = TRACE_FAILONLY GENERATE_HASHES http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY usedevelop = True -install_command = pip install -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} {opts} {packages} -setenv = - VIRTUAL_ENV={envdir} - PYTHONWARNINGS=default::DeprecationWarning - TRICIRCLE_TEST_DIRECTORY=tricircle/tests -deps = - -r{toxinidir}/test-requirements.txt - -egit+https://git.openstack.org/openstack/neutron@master#egg=neutron - -egit+https://git.openstack.org/openstack/networking-sfc@master#egg=networking-sfc +deps = -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} + -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt +whitelist_externals = + sh + stestr commands = - rm -Rf .testrepository/times.dbm - python setup.py testr --slowest --testr-args='{posargs}' -whitelist_externals = rm + stestr run {posargs} + stestr slowest [testenv:releasenotes] basepython = python3 @@ -63,6 +61,13 @@ commands = python setup.py build_sphinx basepython = python3 commands = oslo_debug_helper {posargs} +[testenv:lower-constraints] +basepython = python3 +deps = + -c{toxinidir}/lower-constraints.txt + -r{toxinidir}/test-requirements.txt + -r{toxinidir}/requirements.txt + [flake8] show-source = True builtins = _ @@ -73,3 +78,29 @@ exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build [hacking] import_exceptions = tricircle.common.i18n + +[testenv:dev] +# run locally (not in the gate) using editable mode +# https://pip.pypa.io/en/stable/reference/pip_install/#editable-installs +# note that order is important to ensure dependencies don't override +commands = + pip install -q -e "git+https://git.openstack.org/openstack/networking-sfc#egg=networking_sfc" + pip install -q -e "git+https://git.openstack.org/openstack/neutron#egg=neutron" + +[testenv:py27-dev] +basepython = python2.7 +commands = + {[testenv:dev]commands} + {[testenv]commands} + +[testenv:py3-dev] +basepython = python3 +commands = + {[testenv:dev]commands} + {[testenv]commands} + +[testenv:pep8-dev] +basepython = python3 +deps = {[testenv]deps} + -r{toxinidir}/test-requirements.txt +commands = flake8