From 01ab3d11afcefab9f9a0e37d42c9e80236ae0a0d Mon Sep 17 00:00:00 2001 From: Paul Coignet Date: Fri, 9 Apr 2021 12:11:21 +0200 Subject: [PATCH 1/5] Add --ddtrace option to tests --- .../datadog_checks/base/data/agent_requirements.in | 4 ++++ datadog_checks_base/requirements.in | 4 ++++ datadog_checks_dev/datadog_checks/dev/_env.py | 7 +++++++ .../datadog_checks/dev/tooling/commands/test.py | 12 +++++++++++- .../datadog_checks/dev/tooling/testing.py | 4 ++++ 5 files changed, 30 insertions(+), 1 deletion(-) diff --git a/datadog_checks_base/datadog_checks/base/data/agent_requirements.in b/datadog_checks_base/datadog_checks/base/data/agent_requirements.in index 8fce2349ac286..29414b418d6b9 100644 --- a/datadog_checks_base/datadog_checks/base/data/agent_requirements.in +++ b/datadog_checks_base/datadog_checks/base/data/agent_requirements.in @@ -14,8 +14,12 @@ contextlib2==0.6.0; python_version < "3.0" cryptography==3.3.2; python_version < "3.0" cryptography==3.4.6; python_version > "3.0" cx-oracle==7.2.0 +<<<<<<< HEAD ddtrace==0.32.2; sys_platform == 'win32' and python_version < '3.0' ddtrace==0.48.0; sys_platform != 'win32' or python_version > '3.0' +======= +ddtrace==0.48.0 +>>>>>>> c915479c7... Add --ddtrace option to tests dnspython==1.16.0 enum34==1.1.6; python_version < "3.0" flup-py3==1.0.3; python_version > "3.0" diff --git a/datadog_checks_base/requirements.in b/datadog_checks_base/requirements.in index 74f6becdbc0f8..356a7e3290e83 100644 --- a/datadog_checks_base/requirements.in +++ b/datadog_checks_base/requirements.in @@ -4,8 +4,12 @@ botocore==1.13.42 contextlib2==0.6.0; python_version < '3.0' cryptography==3.3.2; python_version < '3.0' cryptography==3.4.6; python_version > '3.0' +<<<<<<< HEAD ddtrace==0.32.2; sys_platform == 'win32' and python_version < '3.0' ddtrace==0.48.0; sys_platform != 'win32' or python_version > '3.0' +======= +ddtrace==0.48.0 +>>>>>>> c915479c7... Add --ddtrace option to tests enum34==1.1.6; python_version < '3.0' immutables==0.15; python_version > '3.0' ipaddress==1.0.22; python_version < '3.0' diff --git a/datadog_checks_dev/datadog_checks/dev/_env.py b/datadog_checks_dev/datadog_checks/dev/_env.py index defc7cd6f0d0d..7ea8560ade197 100644 --- a/datadog_checks_dev/datadog_checks/dev/_env.py +++ b/datadog_checks_dev/datadog_checks/dev/_env.py @@ -7,6 +7,13 @@ from six import iteritems +DDTRACE_OPTIONS_LIST = [ + 'DD_TAGS', + 'DD_TRACE*', + 'DD_SERVICE', + 'DD_AGENT_HOST', + 'DD_ENV', +] E2E_PREFIX = 'DDEV_E2E' E2E_ENV_VAR_PREFIX = '{}_ENV_'.format(E2E_PREFIX) E2E_SET_UP = '{}_UP'.format(E2E_PREFIX) diff --git a/datadog_checks_dev/datadog_checks/dev/tooling/commands/test.py b/datadog_checks_dev/datadog_checks/dev/tooling/commands/test.py index d843516874fd8..935496c2e02c3 100644 --- a/datadog_checks_dev/datadog_checks/dev/tooling/commands/test.py +++ b/datadog_checks_dev/datadog_checks/dev/tooling/commands/test.py @@ -6,7 +6,7 @@ import click -from ..._env import E2E_PARENT_PYTHON, SKIP_ENVIRONMENT +from ..._env import DDTRACE_OPTIONS_LIST, E2E_PARENT_PYTHON, SKIP_ENVIRONMENT from ...subprocess import run_command from ...utils import chdir, file_exists, get_ci_env_vars, get_next, remove_path, running_on_ci from ..constants import get_root @@ -30,6 +30,7 @@ def display_envs(check_envs): @click.option('--bench', '-b', is_flag=True, help='Run only benchmarks') @click.option('--latest-metrics', is_flag=True, help='Only verify support of new metrics') @click.option('--e2e', is_flag=True, help='Run only end-to-end tests') +@click.option('--ddtrace', is_flag=True, help='Run tests using dd-trace-py') @click.option('--cov', '-c', 'coverage', is_flag=True, help='Measure code coverage') @click.option('--cov-missing', '-cm', is_flag=True, help='Show line numbers of statements that were not executed') @click.option('--junit', '-j', 'junit', is_flag=True, help='Generate junit reports') @@ -56,6 +57,7 @@ def test( bench, latest_metrics, e2e, + ddtrace, coverage, junit, cov_missing, @@ -135,6 +137,13 @@ def test( test_env_vars[E2E_PARENT_PYTHON] = sys.executable test_env_vars['TOX_TESTENV_PASSENV'] += f' {E2E_PARENT_PYTHON}' + if ddtrace: + for env in DDTRACE_OPTIONS_LIST: + test_env_vars['TOX_TESTENV_PASSENV'] += f' {env}' + # Used for CI app product + test_env_vars['TOX_TESTENV_PASSENV'] += ' TF_BUILD BUILD* SYSTEM*' + test_env_vars['DD_SERVICE'] = os.getenv('DD_SERVICE', 'datadog-integrations-core') + org_name = ctx.obj['org'] org = ctx.obj['orgs'].get(org_name, {}) api_key = org.get('api_key') or ctx.obj['dd_api_key'] or os.getenv('DD_API_KEY') @@ -174,6 +183,7 @@ def test( test_filter=test_filter, pytest_args=pytest_args, e2e=e2e, + ddtrace=ddtrace, ) if coverage: pytest_options = pytest_options.format(pytest_coverage_sources(check)) diff --git a/datadog_checks_dev/datadog_checks/dev/tooling/testing.py b/datadog_checks_dev/datadog_checks/dev/tooling/testing.py index cd2e6b38ba39b..9fbeedc090f78 100644 --- a/datadog_checks_dev/datadog_checks/dev/tooling/testing.py +++ b/datadog_checks_dev/datadog_checks/dev/tooling/testing.py @@ -210,6 +210,7 @@ def construct_pytest_options( test_filter='', pytest_args='', e2e=False, + ddtrace=False, ): # Prevent no verbosity pytest_options = f'--verbosity={verbose or 1}' @@ -236,6 +237,9 @@ def construct_pytest_options( pytest_options += ' --run-latest-metrics' marker = 'latest_metrics' + if ddtrace: + pytest_options += ' --ddtrace' + if junit: test_group = 'e2e' if e2e else 'unit' pytest_options += ( From c55a3f828f79e16fc28bb77c4ddd5c2f787fde2d Mon Sep 17 00:00:00 2001 From: Paul Coignet Date: Fri, 9 Apr 2021 14:51:15 +0200 Subject: [PATCH 2/5] Fix rebase --- .../datadog_checks/base/data/agent_requirements.in | 4 ---- datadog_checks_base/requirements.in | 4 ---- 2 files changed, 8 deletions(-) diff --git a/datadog_checks_base/datadog_checks/base/data/agent_requirements.in b/datadog_checks_base/datadog_checks/base/data/agent_requirements.in index 29414b418d6b9..8fce2349ac286 100644 --- a/datadog_checks_base/datadog_checks/base/data/agent_requirements.in +++ b/datadog_checks_base/datadog_checks/base/data/agent_requirements.in @@ -14,12 +14,8 @@ contextlib2==0.6.0; python_version < "3.0" cryptography==3.3.2; python_version < "3.0" cryptography==3.4.6; python_version > "3.0" cx-oracle==7.2.0 -<<<<<<< HEAD ddtrace==0.32.2; sys_platform == 'win32' and python_version < '3.0' ddtrace==0.48.0; sys_platform != 'win32' or python_version > '3.0' -======= -ddtrace==0.48.0 ->>>>>>> c915479c7... Add --ddtrace option to tests dnspython==1.16.0 enum34==1.1.6; python_version < "3.0" flup-py3==1.0.3; python_version > "3.0" diff --git a/datadog_checks_base/requirements.in b/datadog_checks_base/requirements.in index 356a7e3290e83..74f6becdbc0f8 100644 --- a/datadog_checks_base/requirements.in +++ b/datadog_checks_base/requirements.in @@ -4,12 +4,8 @@ botocore==1.13.42 contextlib2==0.6.0; python_version < '3.0' cryptography==3.3.2; python_version < '3.0' cryptography==3.4.6; python_version > '3.0' -<<<<<<< HEAD ddtrace==0.32.2; sys_platform == 'win32' and python_version < '3.0' ddtrace==0.48.0; sys_platform != 'win32' or python_version > '3.0' -======= -ddtrace==0.48.0 ->>>>>>> c915479c7... Add --ddtrace option to tests enum34==1.1.6; python_version < '3.0' immutables==0.15; python_version > '3.0' ipaddress==1.0.22; python_version < '3.0' From 93da4840bd374bc10ee2f9bd44922bc410851452 Mon Sep 17 00:00:00 2001 From: Paul Coignet Date: Fri, 9 Apr 2021 16:36:17 +0200 Subject: [PATCH 3/5] Disable for py2 --- .../datadog_checks/dev/tooling/commands/test.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/datadog_checks_dev/datadog_checks/dev/tooling/commands/test.py b/datadog_checks_dev/datadog_checks/dev/tooling/commands/test.py index 935496c2e02c3..39316dafdfcb4 100644 --- a/datadog_checks_dev/datadog_checks/dev/tooling/commands/test.py +++ b/datadog_checks_dev/datadog_checks/dev/tooling/commands/test.py @@ -8,7 +8,7 @@ from ..._env import DDTRACE_OPTIONS_LIST, E2E_PARENT_PYTHON, SKIP_ENVIRONMENT from ...subprocess import run_command -from ...utils import chdir, file_exists, get_ci_env_vars, get_next, remove_path, running_on_ci +from ...utils import ON_WINDOWS, chdir, file_exists, get_ci_env_vars, get_next, remove_path, running_on_ci from ..constants import get_root from ..dependencies import read_check_base_dependencies from ..testing import construct_pytest_options, fix_coverage_report, get_tox_envs, pytest_coverage_sources @@ -160,6 +160,15 @@ def test( echo_debug(f"No envs found for: `{check}`") continue + ddtrace_check = ddtrace + if ddtrace and ON_WINDOWS and any('py2' in env for env in envs): + # The pytest flag --ddtrace is not available for windows-py2 env. + # Remvoving it so it does not fail. + echo_warning( + 'ddtrace flag is not available for windows-py2 environments ; disabling the flag for this check.' + ) + ddtrace_check = False + # This is for ensuring proper spacing between output of multiple checks' tests. # Basically this avoids printing a new line before the first check's tests. output_separator = '\n' if tests_ran else '' @@ -183,7 +192,7 @@ def test( test_filter=test_filter, pytest_args=pytest_args, e2e=e2e, - ddtrace=ddtrace, + ddtrace=ddtrace_check, ) if coverage: pytest_options = pytest_options.format(pytest_coverage_sources(check)) From e04ef993f63a25effb6a5d7b4a1c99457e9c9d8a Mon Sep 17 00:00:00 2001 From: Paul Date: Fri, 9 Apr 2021 16:53:47 +0200 Subject: [PATCH 4/5] Update datadog_checks_dev/datadog_checks/dev/tooling/commands/test.py Co-authored-by: Florian Veaux --- datadog_checks_dev/datadog_checks/dev/tooling/commands/test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datadog_checks_dev/datadog_checks/dev/tooling/commands/test.py b/datadog_checks_dev/datadog_checks/dev/tooling/commands/test.py index 39316dafdfcb4..eba2eb51b19e3 100644 --- a/datadog_checks_dev/datadog_checks/dev/tooling/commands/test.py +++ b/datadog_checks_dev/datadog_checks/dev/tooling/commands/test.py @@ -142,7 +142,7 @@ def test( test_env_vars['TOX_TESTENV_PASSENV'] += f' {env}' # Used for CI app product test_env_vars['TOX_TESTENV_PASSENV'] += ' TF_BUILD BUILD* SYSTEM*' - test_env_vars['DD_SERVICE'] = os.getenv('DD_SERVICE', 'datadog-integrations-core') + test_env_vars['DD_SERVICE'] = os.getenv('DD_SERVICE', 'ddev-integrations') org_name = ctx.obj['org'] org = ctx.obj['orgs'].get(org_name, {}) From ac7f4c7ef31b80a2616b8d6101578cf2d2134e6e Mon Sep 17 00:00:00 2001 From: Paul Coignet Date: Fri, 9 Apr 2021 17:09:41 +0200 Subject: [PATCH 5/5] Fix typo --- datadog_checks_dev/datadog_checks/dev/tooling/commands/test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datadog_checks_dev/datadog_checks/dev/tooling/commands/test.py b/datadog_checks_dev/datadog_checks/dev/tooling/commands/test.py index eba2eb51b19e3..dc12845ad1fa3 100644 --- a/datadog_checks_dev/datadog_checks/dev/tooling/commands/test.py +++ b/datadog_checks_dev/datadog_checks/dev/tooling/commands/test.py @@ -163,7 +163,7 @@ def test( ddtrace_check = ddtrace if ddtrace and ON_WINDOWS and any('py2' in env for env in envs): # The pytest flag --ddtrace is not available for windows-py2 env. - # Remvoving it so it does not fail. + # Removing it so it does not fail. echo_warning( 'ddtrace flag is not available for windows-py2 environments ; disabling the flag for this check.' )