From b210d363706ca5a6bc70ff74ce9ed52c4ac05314 Mon Sep 17 00:00:00 2001 From: Kyle Verhoog Date: Mon, 19 Oct 2020 21:07:52 -0400 Subject: [PATCH 1/4] introduce riot, use it to run tracer tests --- .circleci/config.yml | 201 ++++++++++++++++++++++++++----------------- riotfile.py | 28 ++++++ tox.ini | 2 - 3 files changed, 148 insertions(+), 83 deletions(-) create mode 100644 riotfile.py diff --git a/.circleci/config.yml b/.circleci/config.yml index 924cc0ec440..0c50063d060 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -106,6 +106,31 @@ commands: paths: - ".tox" + run_test: + description: "Run tests matching a pattern" + parameters: + pattern: + type: string + default: "" + wait: + type: string + default: "" + steps: + - attach_workspace: + at: . + - run: pip3 install riot + - when: + condition: + << parameters.wait >> + steps: + - run: + name: "Waiting for << parameters.wait >>" + command: pip install tox && tox -e 'wait' << parameters.wait >> + # TODO: for some reason the path doesn't contain the pyenv additions + - run: + name: "Running tests matching '<< parameters.pattern >>'" + command: "riot -v run -s '<< parameters.pattern >>'" + run_tox_scenario: description: "Run scripts/run-tox-scenario with setup, caching and persistence" parameters: @@ -231,6 +256,19 @@ jobs: - setup_tox - run: tox -e flake8 + build_base: + executor: ddtrace_dev + steps: + - checkout + - run: pip3 install riot + - run: + name: "Generate base virtual environments." + command: "riot -v generate" + - persist_to_workspace: + root: . + paths: + - "." + build-docker-ci-image: executor: cimg_base steps: @@ -292,8 +330,8 @@ jobs: tracer: executor: ddtrace_dev steps: - - run_tox_scenario: - pattern: '^py..-tracer' + - run_test: + pattern: "tracer" opentracer: executor: ddtrace_dev @@ -803,6 +841,7 @@ requires_pre_test: &requires_pre_test - black - flake8 - ccheck + - build_base requires_tests: &requires_tests - build_docs @@ -893,87 +932,87 @@ workflows: - black - flake8 - ccheck + - build_base # Test building the package - - test_build_alpine: *requires_pre_test - - test_build_py38: *requires_pre_test - - test_build_py37: *requires_pre_test - - test_build_py36: *requires_pre_test - - test_build_py35: *requires_pre_test - - test_build_py27: *requires_pre_test - - test_build_win_py38: *requires_pre_test - - test_build_win_py37: *requires_pre_test - - test_build_win_py36: *requires_pre_test - - test_build_win_py35: *requires_pre_test - - build_wheels: *requires_pre_test + # - test_build_alpine: *requires_pre_test + # - test_build_py38: *requires_pre_test + # - test_build_py37: *requires_pre_test + # - test_build_py36: *requires_pre_test + # - test_build_py35: *requires_pre_test + # - test_build_py27: *requires_pre_test + # - test_build_win_py38: *requires_pre_test + # - test_build_win_py37: *requires_pre_test + # - test_build_win_py36: *requires_pre_test + # - test_build_win_py35: *requires_pre_test + # - build_wheels: *requires_pre_test # Integration test suites - - aiobotocore: *requires_pre_test - - aiohttp: *requires_pre_test - - aiopg: *requires_pre_test - - asyncio: *requires_pre_test - - algoliasearch: *requires_pre_test - - asgi: *requires_pre_test - - benchmarks: *requires_pre_test - - boto: *requires_pre_test - - bottle: *requires_pre_test - - cassandra: *requires_pre_test - - celery: *requires_pre_test - - consul: *requires_pre_test - - dbapi: *requires_pre_test - - ddtracerun: *requires_pre_test - - django: *requires_pre_test - - djangorestframework: *requires_pre_test - - dogpile_cache: *requires_pre_test - - elasticsearch: *requires_pre_test - - falcon: *requires_pre_test - - flask: *requires_pre_test - - futures: *requires_pre_test - - gevent: *requires_pre_test - - grpc: *requires_pre_test - - httplib: *requires_pre_test - - integration: *requires_pre_test - - vendor: *requires_pre_test - - profile: *requires_pre_test - - jinja2: *requires_pre_test - - kombu: *requires_pre_test - - mako: *requires_pre_test - - molten: *requires_pre_test - - mongoengine: *requires_pre_test - - mysqlconnector: *requires_pre_test - - mysqldb: *requires_pre_test - - mysqlpython: *requires_pre_test - - opentracer: *requires_pre_test - - psycopg: *requires_pre_test - - pylibmc: *requires_pre_test - - pylons: *requires_pre_test - - pymemcache: *requires_pre_test - - pymongo: *requires_pre_test - - pymysql: *requires_pre_test - - pynamodb: *requires_pre_test - - pyodbc: *requires_pre_test - - pyramid: *requires_pre_test - - redis: *requires_pre_test - - rediscluster: *requires_pre_test - - requests: *requires_pre_test - - requestsgevent: *requires_pre_test - - sanic: *requires_pre_test - - starlette: *requires_pre_test - - sqlalchemy: *requires_pre_test - - sqlite3: *requires_pre_test - - test_logging: *requires_pre_test - - tornado: *requires_pre_test - # tracer + # - aiobotocore: *requires_pre_test + # - aiohttp: *requires_pre_test + # - aiopg: *requires_pre_test + # - asyncio: *requires_pre_test + # - algoliasearch: *requires_pre_test + # - asgi: *requires_pre_test + # - benchmarks: *requires_pre_test + # - boto: *requires_pre_test + # - bottle: *requires_pre_test + # - cassandra: *requires_pre_test + # - celery: *requires_pre_test + # - consul: *requires_pre_test + # - dbapi: *requires_pre_test + # - ddtracerun: *requires_pre_test + # - django: *requires_pre_test + # - djangorestframework: *requires_pre_test + # - dogpile_cache: *requires_pre_test + # - elasticsearch: *requires_pre_test + # - falcon: *requires_pre_test + # - flask: *requires_pre_test + # - futures: *requires_pre_test + # - gevent: *requires_pre_test + # - grpc: *requires_pre_test + # - httplib: *requires_pre_test + # - integration: *requires_pre_test + # - vendor: *requires_pre_test + # - profile: *requires_pre_test + # - jinja2: *requires_pre_test + # - kombu: *requires_pre_test + # - mako: *requires_pre_test + # - molten: *requires_pre_test + # - mongoengine: *requires_pre_test + # - mysqlconnector: *requires_pre_test + # - mysqldb: *requires_pre_test + # - mysqlpython: *requires_pre_test + # - opentracer: *requires_pre_test + # - psycopg: *requires_pre_test + # - pylibmc: *requires_pre_test + # - pylons: *requires_pre_test + # - pymemcache: *requires_pre_test + # - pymongo: *requires_pre_test + # - pymysql: *requires_pre_test + # - pynamodb: *requires_pre_test + # - pyodbc: *requires_pre_test + # - pyramid: *requires_pre_test + # - redis: *requires_pre_test + # - rediscluster: *requires_pre_test + # - requests: *requires_pre_test + # - requestsgevent: *requires_pre_test + # - sanic: *requires_pre_test + # - starlette: *requires_pre_test + # - sqlalchemy: *requires_pre_test + # - sqlite3: *requires_pre_test + # - test_logging: *requires_pre_test + # - tornado: *requires_pre_test - tracer: *requires_pre_test - - vertica: *requires_pre_test - - build-docker-ci-image: *requires_pre_test - - deploy_master: - requires: *requires_tests - filters: - branches: - only: master - - deploy_staging: - requires: *requires_tests - filters: - branches: - only: staging + # - vertica: *requires_pre_test + # - build-docker-ci-image: *requires_pre_test + # - deploy_master: + # requires: *requires_tests + # filters: + # branches: + # only: master + # - deploy_staging: + # requires: *requires_tests + # filters: + # branches: + # only: staging diff --git a/riotfile.py b/riotfile.py new file mode 100644 index 00000000000..9d200b41d68 --- /dev/null +++ b/riotfile.py @@ -0,0 +1,28 @@ +from riot import Suite, Case + +global_deps = [ + "mock", + "pytest<4", + "pytest-benchmark", +] + +global_env = [("PYTEST_ADDOPTS", "--color=yes")] + +suites = [ + Suite( + name="tracer", + command="pytest tests/tracer/", + cases=[ + Case( + pys=[ + 2.7, + 3.5, + 3.6, + 3.7, + 3.8, + ], + pkgs=[("msgpack", [""])], + ), + ], + ), +] diff --git a/tox.ini b/tox.ini index 68fa3b09f6c..f2400b6af11 100644 --- a/tox.ini +++ b/tox.ini @@ -20,7 +20,6 @@ envlist = flake8 black wait - {py27,py35,py36,py37,py38}-tracer {py27,py35,py36,py37,py38,py39}-profile{,-gevent} {py27,py35,py36,py37,py38,py39}-profile-minreqs{,-gevent} {py27,py35,py36,py37,py38}-integration @@ -188,7 +187,6 @@ deps = # test dependencies installed in all envs mock # used to test our custom msgpack encoder - tracer: msgpack integration: msgpack benchmarks: pytest-benchmark profile: pytest-benchmark From eb59d1943e627f7b74e630f225dac2f1defb1b2a Mon Sep 17 00:00:00 2001 From: Kyle Verhoog Date: Mon, 19 Oct 2020 21:55:06 -0400 Subject: [PATCH 2/4] add riot to the docker image --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index bb1693afe92..16811a9a00e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -63,6 +63,6 @@ RUN \ && pyenv global 3.8.6 2.7.17 3.5.10 3.6.12 3.7.9 3.9.0 \ && pip install --upgrade pip -RUN pip install tox +RUN pip install tox riot CMD ["/bin/bash"] From f6ce046ef6ac88d22030290e075d6fbe902c5189 Mon Sep 17 00:00:00 2001 From: Kyle Verhoog Date: Mon, 19 Oct 2020 21:57:17 -0400 Subject: [PATCH 3/4] re-enable all jobs --- .circleci/config.yml | 156 +++++++++++++++++++++---------------------- 1 file changed, 78 insertions(+), 78 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0c50063d060..65bf6db7e95 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -935,84 +935,84 @@ workflows: - build_base # Test building the package - # - test_build_alpine: *requires_pre_test - # - test_build_py38: *requires_pre_test - # - test_build_py37: *requires_pre_test - # - test_build_py36: *requires_pre_test - # - test_build_py35: *requires_pre_test - # - test_build_py27: *requires_pre_test - # - test_build_win_py38: *requires_pre_test - # - test_build_win_py37: *requires_pre_test - # - test_build_win_py36: *requires_pre_test - # - test_build_win_py35: *requires_pre_test - # - build_wheels: *requires_pre_test + - test_build_alpine: *requires_pre_test + - test_build_py38: *requires_pre_test + - test_build_py37: *requires_pre_test + - test_build_py36: *requires_pre_test + - test_build_py35: *requires_pre_test + - test_build_py27: *requires_pre_test + - test_build_win_py38: *requires_pre_test + - test_build_win_py37: *requires_pre_test + - test_build_win_py36: *requires_pre_test + - test_build_win_py35: *requires_pre_test + - build_wheels: *requires_pre_test # Integration test suites - # - aiobotocore: *requires_pre_test - # - aiohttp: *requires_pre_test - # - aiopg: *requires_pre_test - # - asyncio: *requires_pre_test - # - algoliasearch: *requires_pre_test - # - asgi: *requires_pre_test - # - benchmarks: *requires_pre_test - # - boto: *requires_pre_test - # - bottle: *requires_pre_test - # - cassandra: *requires_pre_test - # - celery: *requires_pre_test - # - consul: *requires_pre_test - # - dbapi: *requires_pre_test - # - ddtracerun: *requires_pre_test - # - django: *requires_pre_test - # - djangorestframework: *requires_pre_test - # - dogpile_cache: *requires_pre_test - # - elasticsearch: *requires_pre_test - # - falcon: *requires_pre_test - # - flask: *requires_pre_test - # - futures: *requires_pre_test - # - gevent: *requires_pre_test - # - grpc: *requires_pre_test - # - httplib: *requires_pre_test - # - integration: *requires_pre_test - # - vendor: *requires_pre_test - # - profile: *requires_pre_test - # - jinja2: *requires_pre_test - # - kombu: *requires_pre_test - # - mako: *requires_pre_test - # - molten: *requires_pre_test - # - mongoengine: *requires_pre_test - # - mysqlconnector: *requires_pre_test - # - mysqldb: *requires_pre_test - # - mysqlpython: *requires_pre_test - # - opentracer: *requires_pre_test - # - psycopg: *requires_pre_test - # - pylibmc: *requires_pre_test - # - pylons: *requires_pre_test - # - pymemcache: *requires_pre_test - # - pymongo: *requires_pre_test - # - pymysql: *requires_pre_test - # - pynamodb: *requires_pre_test - # - pyodbc: *requires_pre_test - # - pyramid: *requires_pre_test - # - redis: *requires_pre_test - # - rediscluster: *requires_pre_test - # - requests: *requires_pre_test - # - requestsgevent: *requires_pre_test - # - sanic: *requires_pre_test - # - starlette: *requires_pre_test - # - sqlalchemy: *requires_pre_test - # - sqlite3: *requires_pre_test - # - test_logging: *requires_pre_test - # - tornado: *requires_pre_test + - aiobotocore: *requires_pre_test + - aiohttp: *requires_pre_test + - aiopg: *requires_pre_test + - asyncio: *requires_pre_test + - algoliasearch: *requires_pre_test + - asgi: *requires_pre_test + - benchmarks: *requires_pre_test + - boto: *requires_pre_test + - bottle: *requires_pre_test + - cassandra: *requires_pre_test + - celery: *requires_pre_test + - consul: *requires_pre_test + - dbapi: *requires_pre_test + - ddtracerun: *requires_pre_test + - django: *requires_pre_test + - djangorestframework: *requires_pre_test + - dogpile_cache: *requires_pre_test + - elasticsearch: *requires_pre_test + - falcon: *requires_pre_test + - flask: *requires_pre_test + - futures: *requires_pre_test + - gevent: *requires_pre_test + - grpc: *requires_pre_test + - httplib: *requires_pre_test + - integration: *requires_pre_test + - vendor: *requires_pre_test + - profile: *requires_pre_test + - jinja2: *requires_pre_test + - kombu: *requires_pre_test + - mako: *requires_pre_test + - molten: *requires_pre_test + - mongoengine: *requires_pre_test + - mysqlconnector: *requires_pre_test + - mysqldb: *requires_pre_test + - mysqlpython: *requires_pre_test + - opentracer: *requires_pre_test + - psycopg: *requires_pre_test + - pylibmc: *requires_pre_test + - pylons: *requires_pre_test + - pymemcache: *requires_pre_test + - pymongo: *requires_pre_test + - pymysql: *requires_pre_test + - pynamodb: *requires_pre_test + - pyodbc: *requires_pre_test + - pyramid: *requires_pre_test + - redis: *requires_pre_test + - rediscluster: *requires_pre_test + - requests: *requires_pre_test + - requestsgevent: *requires_pre_test + - sanic: *requires_pre_test + - starlette: *requires_pre_test + - sqlalchemy: *requires_pre_test + - sqlite3: *requires_pre_test + - test_logging: *requires_pre_test + - tornado: *requires_pre_test - tracer: *requires_pre_test - # - vertica: *requires_pre_test - # - build-docker-ci-image: *requires_pre_test - # - deploy_master: - # requires: *requires_tests - # filters: - # branches: - # only: master - # - deploy_staging: - # requires: *requires_tests - # filters: - # branches: - # only: staging + - vertica: *requires_pre_test + - build-docker-ci-image: *requires_pre_test + - deploy_master: + requires: *requires_tests + filters: + branches: + only: master + - deploy_staging: + requires: *requires_tests + filters: + branches: + only: staging From 1447701dfc58cbbddf0bd3a4ab5616d0ea9c1de2 Mon Sep 17 00:00:00 2001 From: Kyle Verhoog Date: Tue, 20 Oct 2020 18:00:07 -0400 Subject: [PATCH 4/4] remove stale comment --- .circleci/config.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 65bf6db7e95..7f18d0e2491 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -126,7 +126,6 @@ commands: - run: name: "Waiting for << parameters.wait >>" command: pip install tox && tox -e 'wait' << parameters.wait >> - # TODO: for some reason the path doesn't contain the pyenv additions - run: name: "Running tests matching '<< parameters.pattern >>'" command: "riot -v run -s '<< parameters.pattern >>'"