SQLAlchemy 2.0 will introduce a number of changes. Thankfully Current sqlalchemy has deprecation warnings and can be run with future flags set to True to enforce 2.0 behavior. We use these tools to prepare Zuul for the SQLAlchemy 2.0 release. In tox.ini configure the environment to always emit DeprecationWarnings for modules that touch sqlalchemy. Update sqlconnection to use the new location for declarative_base and set future=True on our Engine and Session objects. Finally update the database migration tests to use transaction based connections for executing raw sql statements. Also we switch to the exec_driver_sql method for that. SQLAlchemy 2.0 will not do implicit autocommiting and doesn't support executing strings directly. https://docs.sqlalchemy.org/en/14/changelog/migration_20.html has tons of info on these changes. Reviews should probably pay attention to the transaction behavior changes as well as any alembic code that might also need updating. Change-Id: I4e7a56d24d0f52b6d5b00a8c12fed52d6fae92ef
124 lines
3.3 KiB
INI
124 lines
3.3 KiB
INI
[tox]
|
|
minversion = 3.2
|
|
skipsdist = True
|
|
envlist = linters,py3{-docker}
|
|
ignore_basepython_conflict = True
|
|
# TODO(stephenfin): It would be good to set 'requires = tox-docker', but doing
|
|
# so borks the tools/pip.sh wrapper we're using here and probably isn't what
|
|
# we want in the gate :(
|
|
|
|
[testenv]
|
|
basepython = python3
|
|
install_command = bash tools/pip.sh {opts} {packages}
|
|
setenv =
|
|
VIRTUAL_ENV={envdir}
|
|
OS_TEST_TIMEOUT=360
|
|
OS_STDOUT_CAPTURE={env:OS_STDOUT_CAPTURE:1}
|
|
OS_STDERR_CAPTURE={env:OS_STDERR_CAPTURE:1}
|
|
OS_LOG_CAPTURE={env:OS_LOG_CAPTURE:1}
|
|
SQLALCHEMY_WARN_20={env:SQLALCHEMY_WARN_20:1}
|
|
PYTHONWARNINGS=always::DeprecationWarning:zuul.driver.sql.sqlconnection,always::DeprecationWarning:tests.base,always::DeprecationWarning:tests.unit.test_database,always::DeprecationWarning:zuul.driver.sql.alembic.env,always::DeprecationWarning:zuul.driver.sql.alembic.script
|
|
passenv =
|
|
DOCKER_*
|
|
NODEPOOL_ZK_HOST
|
|
OS_LOG_CAPTURE
|
|
OS_LOG_DEFAULTS
|
|
OS_STDERR_CAPTURE
|
|
OS_STDOUT_CAPTURE
|
|
YARN_REGISTRY
|
|
ZUUL_MYSQL_HOST
|
|
ZUUL_POSTGRES_HOST
|
|
ZUUL_TEST_ROOT
|
|
ZUUL_ZK_HOST
|
|
ZUUL_ZK_CA
|
|
ZUUL_ZK_CERT
|
|
ZUUL_ZK_KEY
|
|
usedevelop = True
|
|
whitelist_externals = bash
|
|
deps =
|
|
-r{toxinidir}/requirements.txt
|
|
-r{toxinidir}/test-requirements.txt
|
|
docker =
|
|
docker: zookeeper:3.4
|
|
commands =
|
|
bash -c 'stestr run --slowest --concurrency=`python -c "import multiprocessing; print(int(multiprocessing.cpu_count()/2))"` {posargs}'
|
|
|
|
[testenv:bindep]
|
|
# Do not install any requirements. We want this to be fast and work even if
|
|
# system dependencies are missing, since it's used to tell you what system
|
|
# dependencies are missing! This also means that bindep must be installed
|
|
# separately, outside of the requirements files.
|
|
usedevelop = False
|
|
install_command = pip install {opts} {packages}
|
|
deps = bindep
|
|
commands = bindep test
|
|
|
|
[testenv:linters]
|
|
usedevelop = False
|
|
install_command = pip install {opts} {packages}
|
|
deps =
|
|
flake8
|
|
openapi-spec-validator
|
|
commands =
|
|
flake8 {posargs}
|
|
openapi-spec-validator web/public/openapi.yaml
|
|
|
|
[testenv:cover]
|
|
setenv =
|
|
{[testenv]setenv}
|
|
PYTHON=coverage run --source zuul --parallel-mode
|
|
commands =
|
|
stestr run {posargs}
|
|
coverage combine
|
|
coverage html -d cover
|
|
coverage xml -o cover/coverage.xml
|
|
|
|
[testenv:docs]
|
|
install_command = pip install {opts} {packages}
|
|
deps =
|
|
-r{toxinidir}/doc/requirements.txt
|
|
-r{toxinidir}/test-requirements.txt
|
|
commands =
|
|
sphinx-build -E -W -d doc/build/doctrees -b html doc/source/ doc/build/html
|
|
|
|
[testenv:venv]
|
|
commands = {posargs}
|
|
|
|
[testenv:nodepool]
|
|
commands =
|
|
stestr run --concurrency=1 --test-path ./tests/nodepool {posargs}
|
|
|
|
[testenv:zuul_client]
|
|
commands =
|
|
stestr run --concurrency=1 --test-path ./tests/zuul_client {posargs}
|
|
deps =
|
|
zuul-client
|
|
-r{toxinidir}/test-requirements.txt
|
|
-r{toxinidir}/requirements.txt
|
|
|
|
[testenv:remote]
|
|
passenv =
|
|
DOCKER_*
|
|
NODEPOOL_ZK_HOST
|
|
OS_LOG_CAPTURE
|
|
OS_LOG_DEFAULTS
|
|
OS_STDERR_CAPTURE
|
|
OS_STDOUT_CAPTURE
|
|
YARN_REGISTRY
|
|
ZUUL_REMOTE_IPV4
|
|
ZUUL_SSH_KEY
|
|
ZUUL_TEST_ROOT
|
|
ZUUL_ZK_HOST
|
|
ZUUL_ZK_CA
|
|
ZUUL_ZK_CERT
|
|
ZUUL_ZK_KEY
|
|
commands =
|
|
stestr run --test-path ./tests/remote {posargs}
|
|
|
|
[flake8]
|
|
# These are ignored intentionally in zuul projects;
|
|
# please don't submit patches that solely correct them or enable them.
|
|
ignore = E124,E125,E129,E252,E402,E741,H,W503,W504
|
|
show-source = True
|
|
exclude = .venv,.tox,dist,doc,build,*.egg,node_modules
|