Files
2020-06-02 15:37:56 -07:00

347 lines
12 KiB
INI

[tox]
skipsdist = True
skip_missing_interpreters = True
envlist =
; Environments are organized by individual package, allowing
; for specifying supported Python versions per package.
; opentelemetry-api
py3{4,5,6,7,8}-test-api
pypy3-test-api
; opentelemetry-sdk
py3{4,5,6,7,8}-test-sdk
pypy3-test-sdk
; opentelemetry-auto-instrumentation
py3{4,5,6,7,8}-test-auto-instrumentation
pypy3-test-auto-instrumentation
; opentelemetry-example-app
py3{4,5,6,7,8}-test-example-app
pypy3-test-example-app
; docs/getting-started
py3{4,5,6,7,8}-test-getting-started
pypy3-test-getting-started
; opentelemetry-ext-aiohttp-client
py3{5,6,7,8}-test-ext-aiohttp-client
pypy3-test-ext-aiohttp-client
; opentelemetry-ext-django
py3{4,5,6,7,8}-test-ext-django
pypy3-test-ext-django
; opentelemetry-ext-dbapi
py3{4,5,6,7,8}-test-ext-dbapi
pypy3-test-ext-dbapi
; opentelemetry-ext-boto
py3{5,6,7,8}-test-ext-boto
pypy3-test-ext-boto
; opentelemetry-ext-flask
py3{4,5,6,7,8}-test-ext-flask
pypy3-test-ext-flask
; opentelemetry-ext-requests
py3{4,5,6,7,8}-test-ext-requests
pypy3-test-ext-requests
; opentelemetry-ext-jinja2
py3{4,5,6,7,8}-test-ext-jinja2
pypy3-test-ext-jinja2
; opentelemetry-ext-jaeger
py3{4,5,6,7,8}-test-ext-jaeger
pypy3-test-ext-jaeger
; opentelemetry-ext-datadog
py3{5,6,7,8}-test-ext-datadog
; opentelemetry-ext-mysql
py3{4,5,6,7,8}-test-ext-mysql
pypy3-test-ext-mysql
; opentelemetry-ext-opencensusexporter
py3{4,5,6,7,8}-test-ext-opencensusexporter
; ext-opencensusexporter intentionally excluded from pypy3
; opentelemetry-ext-prometheus
py3{4,5,6,7,8}-test-ext-prometheus
pypy3-test-ext-prometheus
; opentelemetry-ext-psycopg2
py3{4,5,6,7,8}-test-ext-psycopg2
; ext-psycopg2 intentionally excluded from pypy3
; opentelemetry-ext-pymongo
py3{4,5,6,7,8}-test-ext-pymongo
pypy3-test-ext-pymongo
; opentelemetry-ext-pymysql
py3{4,5,6,7,8}-test-ext-pymysql
pypy3-test-ext-pymysql
; opentelemetry-ext-asgi
py3{5,6,7,8}-test-ext-asgi
pypy3-test-ext-asgi
; opentelemetry-ext-sqlite3
py3{4,5,6,7,8}-test-ext-sqlite3
pypy3-test-ext-sqlite3
; opentelemetry-ext-wsgi
py3{4,5,6,7,8}-test-ext-wsgi
pypy3-test-ext-wsgi
; opentelemetry-ext-zipkin
py3{4,5,6,7,8}-test-ext-zipkin
pypy3-test-ext-zipkin
; opentelemetry-opentracing-shim
py3{4,5,6,7,8}-test-opentracing-shim
pypy3-test-opentracing-shim
; opentelemetry-opentracing-shim
py3{4,5,6,7,8}-test-opentracing-shim
pypy3-test-opentracing-shim
; opentelemetry-ext-grpc
py3{4,5,6,7,8}-test-ext-grpc
; opentelemetry-ext-sqlalchemy
py3{4,5,6,7,8}-test-ext-sqlalchemy
pypy3-test-ext-sqlalchemy
; opentelemetry-ext-redis
py3{4,5,6,7,8}-test-ext-redis
pypy3-test-ext-redis
; opentelemetry-ext-system-metrics
py3{4,5,6,7,8}-test-ext-system-metrics
; ext-system-metrics intentionally excluded from pypy3
; known limitation: gc.get_count won't work under pypy
; Coverage is temporarily disabled for pypy3 due to the pytest bug.
; pypy3-coverage
lint
py38-tracecontext
py38-{mypy,mypyinstalled}
docs
docker-tests
[testenv]
deps =
-c dev-requirements.txt
test: pytest
coverage: pytest
coverage: pytest-cov
mypy,mypyinstalled: mypy
setenv =
mypy: MYPYPATH={toxinidir}/opentelemetry-api/src/
changedir =
test-api: opentelemetry-api/tests
test-sdk: opentelemetry-sdk/tests
test-auto-instrumentation: opentelemetry-auto-instrumentation/tests
test-ext-grpc: ext/opentelemetry-ext-grpc/tests
test-ext-aiohttp-client: ext/opentelemetry-ext-aiohttp-client/tests
test-ext-requests: ext/opentelemetry-ext-requests/tests
test-ext-jinja2: ext/opentelemetry-ext-jinja2/tests
test-ext-jaeger: ext/opentelemetry-ext-jaeger/tests
test-ext-datadog: ext/opentelemetry-ext-datadog/tests
test-ext-dbapi: ext/opentelemetry-ext-dbapi/tests
test-ext-django: ext/opentelemetry-ext-django/tests
test-ext-mysql: ext/opentelemetry-ext-mysql/tests
test-ext-opencensusexporter: ext/opentelemetry-ext-opencensusexporter/tests
test-ext-prometheus: ext/opentelemetry-ext-prometheus/tests
test-ext-pymongo: ext/opentelemetry-ext-pymongo/tests
test-ext-psycopg2: ext/opentelemetry-ext-psycopg2/tests
test-ext-pymysql: ext/opentelemetry-ext-pymysql/tests
test-ext-asgi: ext/opentelemetry-ext-asgi/tests
test-ext-sqlite3: ext/opentelemetry-ext-sqlite3/tests
test-ext-wsgi: ext/opentelemetry-ext-wsgi/tests
test-ext-zipkin: ext/opentelemetry-ext-zipkin/tests
test-ext-boto: ext/opentelemetry-ext-boto/tests
test-ext-flask: ext/opentelemetry-ext-flask/tests
test-example-app: docs/examples/opentelemetry-example-app/tests
test-getting-started: docs/getting_started/tests
test-opentracing-shim: ext/opentelemetry-ext-opentracing-shim/tests
test-ext-sqlalchemy: ext/opentelemetry-ext-sqlalchemy/tests
test-ext-redis: ext/opentelemetry-ext-redis/tests
test-ext-system-metrics: ext/opentelemetry-ext-system-metrics/tests
commands_pre =
; Install without -e to test the actual installation
py3{4,5,6,7}: python -m pip install -U pip setuptools wheel
; Install common packages for all the tests. These are not needed in all the
; cases but it saves a lot of boilerplate in this file.
test: pip install {toxinidir}/opentelemetry-api {toxinidir}/opentelemetry-sdk {toxinidir}/tests/util
test-auto-instrumentation: pip install {toxinidir}/opentelemetry-auto-instrumentation
example-app: pip install {toxinidir}/opentelemetry-auto-instrumentation {toxinidir}/ext/opentelemetry-ext-requests {toxinidir}/ext/opentelemetry-ext-wsgi {toxinidir}/ext/opentelemetry-ext-flask {toxinidir}/docs/examples/opentelemetry-example-app
getting-started: pip install -e {toxinidir}/opentelemetry-auto-instrumentation -e {toxinidir}/ext/opentelemetry-ext-requests -e {toxinidir}/ext/opentelemetry-ext-wsgi -e {toxinidir}/ext/opentelemetry-ext-flask
grpc: pip install {toxinidir}/ext/opentelemetry-ext-grpc[test]
wsgi,flask,django,asgi: pip install {toxinidir}/tests/util
wsgi,flask,django: pip install {toxinidir}/ext/opentelemetry-ext-wsgi
flask,django: pip install {toxinidir}/opentelemetry-auto-instrumentation
asgi: pip install {toxinidir}/ext/opentelemetry-ext-asgi
boto: pip install {toxinidir}/opentelemetry-auto-instrumentation
boto: pip install {toxinidir}/ext/opentelemetry-ext-boto[test]
flask: pip install {toxinidir}/ext/opentelemetry-ext-flask[test]
dbapi: pip install {toxinidir}/ext/opentelemetry-ext-dbapi[test]
django: pip install {toxinidir}/ext/opentelemetry-ext-django[test]
mysql: pip install {toxinidir}/opentelemetry-auto-instrumentation {toxinidir}/ext/opentelemetry-ext-dbapi {toxinidir}/ext/opentelemetry-ext-mysql[test]
opencensusexporter: pip install {toxinidir}/ext/opentelemetry-ext-opencensusexporter
prometheus: pip install {toxinidir}/ext/opentelemetry-ext-prometheus
pymongo: pip install {toxinidir}/opentelemetry-auto-instrumentation {toxinidir}/ext/opentelemetry-ext-pymongo[test]
psycopg2: pip install {toxinidir}/opentelemetry-auto-instrumentation {toxinidir}/ext/opentelemetry-ext-dbapi {toxinidir}/ext/opentelemetry-ext-psycopg2 {toxinidir}/ext/opentelemetry-ext-psycopg2[test]
pymysql: pip install {toxinidir}/opentelemetry-auto-instrumentation {toxinidir}/ext/opentelemetry-ext-dbapi {toxinidir}/ext/opentelemetry-ext-pymysql[test]
sqlite3: pip install {toxinidir}/opentelemetry-auto-instrumentation {toxinidir}/ext/opentelemetry-ext-dbapi {toxinidir}/ext/opentelemetry-ext-sqlite3[test]
redis: pip install {toxinidir}/opentelemetry-auto-instrumentation {toxinidir}/ext/opentelemetry-ext-redis[test]
requests: pip install {toxinidir}/opentelemetry-auto-instrumentation {toxinidir}/ext/opentelemetry-ext-requests[test]
jinja2: pip install {toxinidir}/opentelemetry-auto-instrumentation {toxinidir}/ext/opentelemetry-ext-jinja2[test]
aiohttp-client: pip install {toxinidir}/opentelemetry-sdk {toxinidir}/ext/opentelemetry-ext-aiohttp-client
jaeger: pip install {toxinidir}/ext/opentelemetry-ext-jaeger
datadog: pip install {toxinidir}/opentelemetry-sdk {toxinidir}/ext/opentelemetry-ext-datadog
opentracing-shim: pip install {toxinidir}/ext/opentelemetry-ext-opentracing-shim
zipkin: pip install {toxinidir}/ext/opentelemetry-ext-zipkin
sqlalchemy: pip install {toxinidir}/opentelemetry-auto-instrumentation {toxinidir}/ext/opentelemetry-ext-sqlalchemy
system-metrics: pip install {toxinidir}/opentelemetry-auto-instrumentation
system-metrics: pip install {toxinidir}/ext/opentelemetry-ext-system-metrics[test]
; In order to get a healthy coverage report,
; we have to install packages in editable mode.
coverage: python {toxinidir}/scripts/eachdist.py install --editable
; Using file:// here because otherwise tox invokes just "pip install
; opentelemetry-api", leading to an error
mypyinstalled: pip install file://{toxinidir}/opentelemetry-api/
commands =
test: pytest {posargs}
coverage: {toxinidir}/scripts/coverage.sh
mypy: mypy --namespace-packages opentelemetry-api/src/opentelemetry/
; For test code, we don't want to enforce the full mypy strictness
mypy: mypy --namespace-packages --config-file=mypy-relaxed.ini opentelemetry-api/tests/
; Test that mypy can pick up typeinfo from an installed package (otherwise,
; implicit Any due to unfollowed import would result).
mypyinstalled: mypy --namespace-packages opentelemetry-api/tests/mypysmoke.py --strict
[testenv:lint]
basepython: python3.8
recreate = True
deps =
-c dev-requirements.txt
pylint
flake8
isort
black
psutil
readme_renderer
httpretty
commands_pre =
python scripts/eachdist.py install --editable
commands =
python scripts/eachdist.py lint --check-only
[testenv:docs]
deps =
-c {toxinidir}/dev-requirements.txt
-r {toxinidir}/docs-requirements.txt
changedir = docs
commands =
sphinx-build -E -a -W -b html -T . _build/html
[testenv:py38-tracecontext]
basepython: python3.8
deps =
# needed for tracecontext
aiohttp~=3.6
# needed for example trace integration
flask~=1.1
requests~=2.7
commands_pre =
pip install -e {toxinidir}/opentelemetry-api \
-e {toxinidir}/opentelemetry-auto-instrumentation \
-e {toxinidir}/opentelemetry-sdk \
-e {toxinidir}/opentelemetry-auto-instrumentation \
-e {toxinidir}/ext/opentelemetry-ext-requests \
-e {toxinidir}/ext/opentelemetry-ext-wsgi \
-e {toxinidir}/ext/opentelemetry-ext-flask
commands =
{toxinidir}/scripts/tracecontext-integration-test.sh
[testenv:docker-tests]
deps =
pytest
docker-compose >= 1.25.2
mysql-connector-python ~= 8.0
pymongo ~= 3.1
pymysql ~= 0.9.3
psycopg2-binary ~= 2.8.4
sqlalchemy ~= 1.3.16
redis ~= 3.3.11
changedir =
ext/opentelemetry-ext-docker-tests/tests
commands_pre =
pip install -e {toxinidir}/opentelemetry-api \
-e {toxinidir}/opentelemetry-sdk \
-e {toxinidir}/opentelemetry-auto-instrumentation \
-e {toxinidir}/tests/util \
-e {toxinidir}/ext/opentelemetry-ext-dbapi \
-e {toxinidir}/ext/opentelemetry-ext-mysql \
-e {toxinidir}/ext/opentelemetry-ext-psycopg2 \
-e {toxinidir}/ext/opentelemetry-ext-pymongo \
-e {toxinidir}/ext/opentelemetry-ext-pymysql \
-e {toxinidir}/ext/opentelemetry-ext-sqlalchemy \
-e {toxinidir}/ext/opentelemetry-ext-redis \
-e {toxinidir}/ext/opentelemetry-ext-system-metrics \
-e {toxinidir}/ext/opentelemetry-ext-opencensusexporter
docker-compose up -d
python check_availability.py
commands =
pytest {posargs}
commands_post =
docker-compose down