diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 0e010e69b12..87979ba7e45 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -113,18 +113,22 @@ ddtrace/internal/datadog/profiling @DataDog/profiling-python tests/profiling @DataDog/profiling-python # MLObs -ddtrace/llmobs/ @DataDog/ml-observability -ddtrace/contrib/openai @DataDog/ml-observability -ddtrace/contrib/langchain @DataDog/ml-observability -ddtrace/contrib/botocore/services/bedrock.py @DataDog/ml-observability -ddtrace/contrib/anthropic @DataDog/ml-observability -tests/llmobs @DataDog/ml-observability -tests/contrib/openai @DataDog/ml-observability -tests/contrib/langchain @DataDog/ml-observability -tests/contrib/botocore/test_bedrock.py @DataDog/ml-observability -tests/contrib/botocore/test_bedrock_llmobs.py @DataDog/ml-observability -tests/contrib/botocore/bedrock_cassettes @DataDog/ml-observability -tests/contrib/anthropic @DataDog/ml-observability +ddtrace/llmobs/ @DataDog/ml-observability +ddtrace/contrib/internal/openai @DataDog/ml-observability +ddtrace/contrib/openai @DataDog/ml-observability +ddtrace/contrib/internal/langchain @DataDog/ml-observability +ddtrace/contrib/langchain @DataDog/ml-observability +ddtrace/contrib/internal/botocore/services/bedrock.py @DataDog/ml-observability +ddtrace/contrib/botocore/services/bedrock.py @DataDog/ml-observability +ddtrace/contrib/internal/anthropic @DataDog/ml-observability +ddtrace/contrib/anthropic @DataDog/ml-observability +tests/llmobs @DataDog/ml-observability +tests/contrib/openai @DataDog/ml-observability +tests/contrib/langchain @DataDog/ml-observability +tests/contrib/botocore/test_bedrock.py @DataDog/ml-observability +tests/contrib/botocore/test_bedrock_llmobs.py @DataDog/ml-observability +tests/contrib/botocore/bedrock_cassettes @DataDog/ml-observability +tests/contrib/anthropic @DataDog/ml-observability # Remote Config ddtrace/internal/remoteconfig @DataDog/remote-config @DataDog/apm-core-python diff --git a/.github/workflows/generate-package-versions.yml b/.github/workflows/generate-package-versions.yml index c2262ae82b6..89e6b534712 100644 --- a/.github/workflows/generate-package-versions.yml +++ b/.github/workflows/generate-package-versions.yml @@ -1,10 +1,6 @@ name: Generate Package Versions on: - push: - branches: - - main - pull_request: workflow_dispatch: # can be triggered manually schedule: - cron: '0 0 * * 0' # weekly on Sunday at midnight diff --git a/.github/workflows/system-tests.yml b/.github/workflows/system-tests.yml index 06906b73f08..60399f63c6f 100644 --- a/.github/workflows/system-tests.yml +++ b/.github/workflows/system-tests.yml @@ -24,7 +24,37 @@ jobs: python -c "import os,sys,fnmatch;sys.exit(not bool([_ for pattern in {'ddtrace/*', 'setup*', 'pyproject.toml', '.github/workflows/system-tests.yml'} for _ in fnmatch.filter(os.environ['PATHS'].splitlines(), pattern)]))" continue-on-error: true - system-tests-build: + system-tests-build-agent: + runs-on: ubuntu-latest + needs: needs-run + steps: + + - name: Checkout system tests + if: needs.needs-run.outputs.outcome == 'success' || github.event_name == 'schedule' + uses: actions/checkout@v4 + with: + repository: 'DataDog/system-tests' + + - name: Build agent + id: build + if: needs.needs-run.outputs.outcome == 'success' || github.event_name == 'schedule' + run: ./build.sh -i agent + + - name: Save + id: save + if: needs.needs-run.outputs.outcome == 'success' || github.event_name == 'schedule' + run: | + docker image save system_tests/agent:latest | gzip > agent_${{ github.sha }}.tar.gz + + - uses: actions/upload-artifact@v4 + if: needs.needs-run.outputs.outcome == 'success' || github.event_name == 'schedule' + with: + name: agent_${{ github.sha }} + path: | + agent_${{ github.sha }}.tar.gz + retention-days: 2 + + system-tests-build-weblog: runs-on: ubuntu-latest needs: needs-run strategy: @@ -46,11 +76,6 @@ jobs: DD_API_KEY: 1234567890abcdef1234567890abcdef CMAKE_BUILD_PARALLEL_LEVEL: 12 steps: - - name: Setup python 3.12 - if: needs.needs-run.outputs.outcome == 'success' || github.event_name == 'schedule' - uses: actions/setup-python@v5 - with: - python-version: '3.12' - name: Checkout system tests if: needs.needs-run.outputs.outcome == 'success' || github.event_name == 'schedule' @@ -71,14 +96,13 @@ jobs: - name: Build id: build if: needs.needs-run.outputs.outcome == 'success' || github.event_name == 'schedule' - run: ./build.sh + run: ./build.sh -i weblog - name: Save id: save if: needs.needs-run.outputs.outcome == 'success' || github.event_name == 'schedule' run: | docker image save system_tests/weblog:latest | gzip > ${{ matrix.weblog-variant}}_weblog_${{ github.sha }}.tar.gz - docker image save system_tests/agent:latest | gzip > ${{ matrix.weblog-variant}}_agent_${{ github.sha }}.tar.gz - uses: actions/upload-artifact@v4 if: needs.needs-run.outputs.outcome == 'success' || github.event_name == 'schedule' @@ -86,13 +110,11 @@ jobs: name: ${{ matrix.weblog-variant }}_${{ github.sha }} path: | ${{ matrix.weblog-variant}}_weblog_${{ github.sha }}.tar.gz - ${{ matrix.weblog-variant}}_agent_${{ github.sha }}.tar.gz - venv retention-days: 2 system-tests: runs-on: ubuntu-latest - needs: [needs-run, system-tests-build] + needs: [needs-run, system-tests-build-agent, system-tests-build-weblog] strategy: matrix: weblog-variant: [flask-poc, uwsgi-poc , django-poc, fastapi, python3.12] @@ -108,11 +130,6 @@ jobs: DD_API_KEY: 1234567890abcdef1234567890abcdef CMAKE_BUILD_PARALLEL_LEVEL: 12 steps: - - name: Setup python 3.12 - if: needs.needs-run.outputs.outcome == 'success' || github.event_name == 'schedule' - uses: actions/setup-python@v5 - with: - python-version: '3.12' - name: Checkout system tests if: needs.needs-run.outputs.outcome == 'success' || github.event_name == 'schedule' @@ -120,23 +137,27 @@ jobs: with: repository: 'DataDog/system-tests' + - name: Build runner + if: needs.needs-run.outputs.outcome == 'success' || github.event_name == 'schedule' + uses: ./.github/actions/install_runner + - uses: actions/download-artifact@v4 if: needs.needs-run.outputs.outcome == 'success' || github.event_name == 'schedule' with: name: ${{ matrix.weblog-variant }}_${{ github.sha }} - path: ${{ matrix.weblog-variant}}_${{ github.sha }}.tar.gz + path: images_artifacts/ - - name: docker load + - uses: actions/download-artifact@v4 if: needs.needs-run.outputs.outcome == 'success' || github.event_name == 'schedule' - run: | - docker load < ${{ matrix.weblog-variant}}_${{ github.sha }}.tar.gz/${{ matrix.weblog-variant}}_weblog_${{ github.sha }}.tar.gz - docker load < ${{ matrix.weblog-variant}}_${{ github.sha }}.tar.gz/${{ matrix.weblog-variant}}_agent_${{ github.sha }}.tar.gz + with: + name: agent_${{ github.sha }} + path: images_artifacts/ - - name: move venv + - name: docker load if: needs.needs-run.outputs.outcome == 'success' || github.event_name == 'schedule' run: | - mv ${{ matrix.weblog-variant}}_${{ github.sha }}.tar.gz/venv venv - chmod -R +x venv/bin/* + docker load < images_artifacts/${{ matrix.weblog-variant}}_weblog_${{ github.sha }}.tar.gz + docker load < images_artifacts/agent_${{ github.sha }}.tar.gz - name: Run DEFAULT if: (needs.needs-run.outputs.outcome == 'success' || github.event_name == 'schedule') && matrix.scenario == 'other' @@ -237,7 +258,8 @@ jobs: parametric: - runs-on: ubuntu-latest + runs-on: + group: "APM Larger Runners" needs: needs-run env: TEST_LIBRARY: python @@ -254,14 +276,10 @@ jobs: path: 'binaries/dd-trace-py' fetch-depth: 0 ref: ${{ github.event.pull_request.head.sha || github.sha }} - - uses: actions/setup-python@v5 - if: needs.needs-run.outputs.outcome == 'success' || github.event_name == 'schedule' - with: - python-version: '3.12' - - name: Build + - name: Build runner if: needs.needs-run.outputs.outcome == 'success' || github.event_name == 'schedule' - run: ./build.sh -i runner + uses: ./.github/actions/install_runner - name: Run if: needs.needs-run.outputs.outcome == 'success' || github.event_name == 'schedule' diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 86b8191976a..3081e13ee40 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -56,16 +56,3 @@ deploy_to_di_backend:manual: UPSTREAM_COMMIT_AUTHOR: $CI_COMMIT_AUTHOR UPSTREAM_TAG: $CI_COMMIT_TAG UPSTREAM_PACKAGE_JOB: build - - -# Final step which only runs when a pipeline has finished successfully. -# This gives us something block on/wait for in GitHub -finished: - image: registry.ddbuild.io/images/mirror/library/alpine:3.19.3 - tags: [ "arch:amd64" ] - stage: .post - rules: - - when: on_success - script: - # TODO: Can we get this to reflect the status from the whole pipeline? - - exit 0 diff --git a/.riot/requirements/1050efa.txt b/.riot/requirements/1050efa.txt index 607b931e8f7..d69750cdf3f 100644 --- a/.riot/requirements/1050efa.txt +++ b/.riot/requirements/1050efa.txt @@ -2,19 +2,19 @@ # This file is autogenerated by pip-compile with Python 3.12 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1050efa.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/1050efa.in # -attrs==23.1.0 -coverage[toml]==7.3.4 +attrs==24.2.0 +coverage[toml]==7.6.1 hypothesis==6.45.0 iniconfig==2.0.0 -mariadb==1.1.8 +mariadb==1.1.10 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.3.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 diff --git a/.riot/requirements/10aef09.txt b/.riot/requirements/10aef09.txt index 772c9ad04eb..ba661b56b54 100644 --- a/.riot/requirements/10aef09.txt +++ b/.riot/requirements/10aef09.txt @@ -2,20 +2,20 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/10aef09.in +# pip-compile --allow-unsafe --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/10aef09.in # -attrs==23.1.0 +attrs==24.2.0 coverage[toml]==7.2.7 -exceptiongroup==1.2.0 +exceptiongroup==1.2.2 hypothesis==6.45.0 importlib-metadata==6.7.0 iniconfig==2.0.0 mariadb==1.1.6 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 -pytest==7.4.3 +pytest==7.4.4 pytest-cov==4.1.0 pytest-mock==3.11.1 pytest-randomly==3.12.0 diff --git a/.riot/requirements/12c10e8.txt b/.riot/requirements/12c10e8.txt index b1e09e0de89..abe4c79bdd0 100644 --- a/.riot/requirements/12c10e8.txt +++ b/.riot/requirements/12c10e8.txt @@ -2,23 +2,23 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --no-annotate .riot/requirements/12c10e8.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/12c10e8.in # -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==24.2.0 +coverage[toml]==7.6.1 +exceptiongroup==1.2.2 hypothesis==6.45.0 -importlib-metadata==7.0.0 +importlib-metadata==8.4.0 iniconfig==2.0.0 -mariadb==1.1.8 +mariadb==1.1.10 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.3.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 tomli==2.0.1 -zipp==3.17.0 +zipp==3.20.0 diff --git a/.riot/requirements/12cb0e7.txt b/.riot/requirements/12cb0e7.txt index 0310cf00563..95dd85db63b 100644 --- a/.riot/requirements/12cb0e7.txt +++ b/.riot/requirements/12cb0e7.txt @@ -2,19 +2,19 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/12cb0e7.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/12cb0e7.in # -attrs==23.1.0 -coverage[toml]==7.3.4 +attrs==24.2.0 +coverage[toml]==7.6.1 hypothesis==6.45.0 iniconfig==2.0.0 -mariadb==1.1.8 +mariadb==1.1.10 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.3.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 diff --git a/.riot/requirements/147bedb.txt b/.riot/requirements/147bedb.txt index c1abf9de6c1..d128fe5aaa2 100644 --- a/.riot/requirements/147bedb.txt +++ b/.riot/requirements/147bedb.txt @@ -2,23 +2,23 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --no-annotate .riot/requirements/147bedb.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/147bedb.in # -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==24.2.0 +coverage[toml]==7.6.1 +exceptiongroup==1.2.2 hypothesis==6.45.0 -importlib-metadata==7.0.0 +importlib-metadata==8.4.0 iniconfig==2.0.0 -mariadb==1.1.8 +mariadb==1.1.10 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.3.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 tomli==2.0.1 -zipp==3.17.0 +zipp==3.20.0 diff --git a/.riot/requirements/16b7aa5.txt b/.riot/requirements/16b7aa5.txt index 7c6670099a0..e53e34a8205 100644 --- a/.riot/requirements/16b7aa5.txt +++ b/.riot/requirements/16b7aa5.txt @@ -2,23 +2,23 @@ # This file is autogenerated by pip-compile with Python 3.8 # by the following command: # -# pip-compile --no-annotate .riot/requirements/16b7aa5.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/16b7aa5.in # -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==24.2.0 +coverage[toml]==7.6.1 +exceptiongroup==1.2.2 hypothesis==6.45.0 -importlib-metadata==7.0.0 +importlib-metadata==8.4.0 iniconfig==2.0.0 mariadb==1.0.11 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.3.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 tomli==2.0.1 -zipp==3.17.0 +zipp==3.20.0 diff --git a/.riot/requirements/1bf3da5.txt b/.riot/requirements/1bf3da5.txt index 7f3834d1d21..24b990913fb 100644 --- a/.riot/requirements/1bf3da5.txt +++ b/.riot/requirements/1bf3da5.txt @@ -2,23 +2,23 @@ # This file is autogenerated by pip-compile with Python 3.8 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1bf3da5.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/1bf3da5.in # -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==24.2.0 +coverage[toml]==7.6.1 +exceptiongroup==1.2.2 hypothesis==6.45.0 -importlib-metadata==7.0.0 +importlib-metadata==8.4.0 iniconfig==2.0.0 -mariadb==1.1.8 +mariadb==1.1.10 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.3.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 tomli==2.0.1 -zipp==3.17.0 +zipp==3.20.0 diff --git a/.riot/requirements/1e0ec0b.txt b/.riot/requirements/1e0ec0b.txt index fd720e6b2a9..26f75087ae7 100644 --- a/.riot/requirements/1e0ec0b.txt +++ b/.riot/requirements/1e0ec0b.txt @@ -2,21 +2,21 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1e0ec0b.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/1e0ec0b.in # -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==24.2.0 +coverage[toml]==7.6.1 +exceptiongroup==1.2.2 hypothesis==6.45.0 iniconfig==2.0.0 -mariadb==1.1.8 +mariadb==1.1.10 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.3.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 tomli==2.0.1 diff --git a/.riot/requirements/1e2fbcd.txt b/.riot/requirements/1e2fbcd.txt index b17d32bf6ca..feaa8e3a345 100644 --- a/.riot/requirements/1e2fbcd.txt +++ b/.riot/requirements/1e2fbcd.txt @@ -2,20 +2,20 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1e2fbcd.in +# pip-compile --allow-unsafe --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1e2fbcd.in # -attrs==23.1.0 +attrs==24.2.0 coverage[toml]==7.2.7 -exceptiongroup==1.2.0 +exceptiongroup==1.2.2 hypothesis==6.45.0 importlib-metadata==6.7.0 iniconfig==2.0.0 mariadb==1.0.11 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 -pytest==7.4.3 +pytest==7.4.4 pytest-cov==4.1.0 pytest-mock==3.11.1 pytest-randomly==3.12.0 diff --git a/.riot/requirements/48462b1.txt b/.riot/requirements/48462b1.txt index 003c3dbb38f..f200fc89650 100644 --- a/.riot/requirements/48462b1.txt +++ b/.riot/requirements/48462b1.txt @@ -2,20 +2,20 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/48462b1.in +# pip-compile --allow-unsafe --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/48462b1.in # -attrs==23.1.0 +attrs==24.2.0 coverage[toml]==7.2.7 -exceptiongroup==1.2.0 +exceptiongroup==1.2.2 hypothesis==6.45.0 importlib-metadata==6.7.0 iniconfig==2.0.0 mariadb==1.1.6 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 -pytest==7.4.3 +pytest==7.4.4 pytest-cov==4.1.0 pytest-mock==3.11.1 pytest-randomly==3.12.0 diff --git a/.riot/requirements/4ed631d.txt b/.riot/requirements/4ed631d.txt index f5f22a7eb07..b627027f63d 100644 --- a/.riot/requirements/4ed631d.txt +++ b/.riot/requirements/4ed631d.txt @@ -2,19 +2,19 @@ # This file is autogenerated by pip-compile with Python 3.12 # by the following command: # -# pip-compile --no-annotate .riot/requirements/4ed631d.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/4ed631d.in # -attrs==23.1.0 -coverage[toml]==7.3.4 +attrs==24.2.0 +coverage[toml]==7.6.1 hypothesis==6.45.0 iniconfig==2.0.0 -mariadb==1.1.8 +mariadb==1.1.10 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.3.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 diff --git a/.riot/requirements/769aa27.txt b/.riot/requirements/769aa27.txt index 3f1f3bb599f..be5205a4bd0 100644 --- a/.riot/requirements/769aa27.txt +++ b/.riot/requirements/769aa27.txt @@ -2,19 +2,19 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/769aa27.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/769aa27.in # -attrs==23.1.0 -coverage[toml]==7.3.4 +attrs==24.2.0 +coverage[toml]==7.6.1 hypothesis==6.45.0 iniconfig==2.0.0 -mariadb==1.1.8 +mariadb==1.1.10 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.3.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 diff --git a/.riot/requirements/85acf6e.txt b/.riot/requirements/85acf6e.txt index c88731a3850..0bb20810181 100644 --- a/.riot/requirements/85acf6e.txt +++ b/.riot/requirements/85acf6e.txt @@ -2,21 +2,21 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/85acf6e.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/85acf6e.in # -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==24.2.0 +coverage[toml]==7.6.1 +exceptiongroup==1.2.2 hypothesis==6.45.0 iniconfig==2.0.0 mariadb==1.0.11 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.3.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 tomli==2.0.1 diff --git a/.riot/requirements/8a17cb2.txt b/.riot/requirements/8a17cb2.txt index 3d919ff412f..3d204884507 100644 --- a/.riot/requirements/8a17cb2.txt +++ b/.riot/requirements/8a17cb2.txt @@ -2,23 +2,23 @@ # This file is autogenerated by pip-compile with Python 3.8 # by the following command: # -# pip-compile --no-annotate .riot/requirements/8a17cb2.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/8a17cb2.in # -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==24.2.0 +coverage[toml]==7.6.1 +exceptiongroup==1.2.2 hypothesis==6.45.0 -importlib-metadata==7.0.0 +importlib-metadata==8.4.0 iniconfig==2.0.0 -mariadb==1.1.8 +mariadb==1.1.10 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.3.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 tomli==2.0.1 -zipp==3.17.0 +zipp==3.20.0 diff --git a/.riot/requirements/e75aea6.txt b/.riot/requirements/e75aea6.txt index b23278c6a66..4d191b83adc 100644 --- a/.riot/requirements/e75aea6.txt +++ b/.riot/requirements/e75aea6.txt @@ -2,23 +2,23 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --no-annotate .riot/requirements/e75aea6.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/e75aea6.in # -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==24.2.0 +coverage[toml]==7.6.1 +exceptiongroup==1.2.2 hypothesis==6.45.0 -importlib-metadata==7.0.0 +importlib-metadata==8.4.0 iniconfig==2.0.0 mariadb==1.0.11 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.3.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 tomli==2.0.1 -zipp==3.17.0 +zipp==3.20.0 diff --git a/.riot/requirements/fb50881.txt b/.riot/requirements/fb50881.txt index 7a98be2424d..f39cd8b01b4 100644 --- a/.riot/requirements/fb50881.txt +++ b/.riot/requirements/fb50881.txt @@ -2,21 +2,21 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/fb50881.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/fb50881.in # -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==24.2.0 +coverage[toml]==7.6.1 +exceptiongroup==1.2.2 hypothesis==6.45.0 iniconfig==2.0.0 -mariadb==1.1.8 +mariadb==1.1.10 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.3.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 tomli==2.0.1 diff --git a/ddtrace/contrib/internal/yaaredis/patch.py b/ddtrace/contrib/internal/yaaredis/patch.py index e461f673603..eeba29994f6 100644 --- a/ddtrace/contrib/internal/yaaredis/patch.py +++ b/ddtrace/contrib/internal/yaaredis/patch.py @@ -8,11 +8,13 @@ from ddtrace._trace.utils_redis import _instrument_redis_execute_pipeline from ddtrace.contrib.redis_utils import _run_redis_command_async from ddtrace.internal.schema import schematize_service_name +from ddtrace.internal.utils.deprecations import DDTraceDeprecationWarning from ddtrace.internal.utils.formats import CMD_MAX_LEN from ddtrace.internal.utils.formats import asbool from ddtrace.internal.utils.formats import stringify_cache_args from ddtrace.internal.utils.wrappers import unwrap from ddtrace.pin import Pin +from ddtrace.vendor.debtcollector import deprecate config._add( @@ -32,6 +34,13 @@ def get_version(): def patch(): """Patch the instrumented methods""" + deprecate( + prefix="The yaaredis module is deprecated.", + message="The yaaredis module is deprecated and will be deleted.", + category=DDTraceDeprecationWarning, + removal_version="3.0.0", + ) + if getattr(yaaredis, "_datadog_patch", False): return yaaredis._datadog_patch = True diff --git a/ddtrace/contrib/pytest/_plugin_v2.py b/ddtrace/contrib/pytest/_plugin_v2.py index 98fcba494a4..e6f632d1bb3 100644 --- a/ddtrace/contrib/pytest/_plugin_v2.py +++ b/ddtrace/contrib/pytest/_plugin_v2.py @@ -36,12 +36,13 @@ from ddtrace.ext.ci_visibility.api import is_ci_visibility_enabled from ddtrace.internal.ci_visibility.constants import SKIPPED_BY_ITR_REASON from ddtrace.internal.ci_visibility.telemetry.coverage import COVERAGE_LIBRARY +from ddtrace.internal.ci_visibility.telemetry.coverage import record_code_coverage_empty from ddtrace.internal.ci_visibility.telemetry.coverage import record_code_coverage_finished from ddtrace.internal.ci_visibility.telemetry.coverage import record_code_coverage_started from ddtrace.internal.ci_visibility.utils import take_over_logger_stream_handler from ddtrace.internal.coverage.code import ModuleCodeCollector from ddtrace.internal.coverage.installer import install as install_coverage -from ddtrace.internal.coverage.util import collapse_ranges +from ddtrace.internal.coverage.lines import CoverageLines from ddtrace.internal.logger import get_logger @@ -96,25 +97,13 @@ def _handle_collected_coverage(test_id, coverage_collector) -> None: if not test_covered_lines: log.debug("No covered lines found for test %s", test_id) + record_code_coverage_empty() return - # TODO: switch representation to bytearrays as part of new ITR coverage strategy - # This code is temporary / PoC - - coverage_data: t.Dict[Path, t.List[t.Tuple[int, int]]] = {} + coverage_data: t.Dict[Path, CoverageLines] = {} for path_str, covered_lines in test_covered_lines.items(): - file_path = Path(path_str) - if not file_path.is_absolute(): - file_path = file_path.resolve() - - sorted_lines = sorted(covered_lines) - - collapsed_ranges = collapse_ranges(sorted_lines) - file_segments = [] - for file_segment in collapsed_ranges: - file_segments.append((file_segment[0], file_segment[1])) - coverage_data[file_path] = file_segments + coverage_data[Path(path_str).absolute()] = covered_lines CISuite.add_coverage_data(test_id.parent_id, coverage_data) diff --git a/ddtrace/ext/ci_visibility/api.py b/ddtrace/ext/ci_visibility/api.py index 4c606d3b2ed..4e4425ea0e0 100644 --- a/ddtrace/ext/ci_visibility/api.py +++ b/ddtrace/ext/ci_visibility/api.py @@ -21,7 +21,6 @@ from typing import List from typing import NamedTuple from typing import Optional -from typing import Tuple from typing import Type from typing import Union @@ -43,6 +42,7 @@ from ddtrace.ext.test import Status as TestStatus from ddtrace.internal import core from ddtrace.internal.codeowners import Codeowners +from ddtrace.internal.coverage.lines import CoverageLines from ddtrace.internal.logger import get_logger @@ -421,11 +421,11 @@ def was_item_skipped_by_itr(item_id: Union[CISuiteId, CITestId]) -> bool: class AddCoverageArgs(NamedTuple): item_id: Union[_CIVisibilityChildItemIdBase, _CIVisibilityRootItemIdBase] - coverage_data: Dict[Path, List[Tuple[int, int]]] + coverage_data: Dict[Path, CoverageLines] @staticmethod @_catch_and_log_exceptions - def add_coverage_data(item_id: Union[CISuiteId, CITestId], coverage_data: Dict[Path, List[Tuple[int, int]]]): + def add_coverage_data(item_id: Union[CISuiteId, CITestId], coverage_data: Dict[Path, CoverageLines]): log.debug("Adding coverage data for item %s: %s", item_id, coverage_data) core.dispatch("ci_visibility.item.add_coverage_data", (CIITRMixin.AddCoverageArgs(item_id, coverage_data),)) diff --git a/ddtrace/internal/ci_visibility/api/ci_base.py b/ddtrace/internal/ci_visibility/api/ci_base.py index 6dfaa0cf350..ef2f860ce2b 100644 --- a/ddtrace/internal/ci_visibility/api/ci_base.py +++ b/ddtrace/internal/ci_visibility/api/ci_base.py @@ -9,7 +9,6 @@ from typing import Generic from typing import List from typing import Optional -from typing import Tuple from typing import TypeVar from typing import Union @@ -34,6 +33,7 @@ from ddtrace.internal.ci_visibility.telemetry.itr import record_itr_skipped from ddtrace.internal.ci_visibility.telemetry.itr import record_itr_unskippable from ddtrace.internal.constants import COMPONENT +from ddtrace.internal.coverage.lines import CoverageLines from ddtrace.internal.logger import get_logger @@ -431,7 +431,7 @@ def get_parent_span(self) -> Optional[Span]: return None @abc.abstractmethod - def add_coverage_data(self, coverage_data: Dict[Path, List[Tuple[int, int]]]) -> None: + def add_coverage_data(self, coverage_data: Dict[Path, CoverageLines]) -> None: pass @_require_span @@ -439,7 +439,7 @@ def _add_coverage_data_tag(self) -> None: if self._span is None: return if self._coverage_data: - self._span.set_tag_str( + self._span.set_struct_tag( COVERAGE_TAG_NAME, self._coverage_data.build_payload(self._session_settings.workspace_path) ) diff --git a/ddtrace/internal/ci_visibility/api/ci_coverage_data.py b/ddtrace/internal/ci_visibility/api/ci_coverage_data.py index 049d17a02bf..482996463ee 100644 --- a/ddtrace/internal/ci_visibility/api/ci_coverage_data.py +++ b/ddtrace/internal/ci_visibility/api/ci_coverage_data.py @@ -1,9 +1,9 @@ from collections import defaultdict -import json from pathlib import Path from typing import Dict from typing import List -from typing import Tuple + +from ddtrace.internal.coverage.lines import CoverageLines try: @@ -15,39 +15,22 @@ class CoverageFilePayload(TypedDict): filename: str - segments: List[Tuple[int, int, int, int, int]] - - -class CICoverageSegment: - """Container for coverage segment data - - Columns and counts are currently unused in the current data model in ddtrace.internal.ci_visibility.coverage and - .encoder , so they are not included in this class. - """ - - def __init__(self, start_line: int, end_line: int): - self.start_line: int = start_line - self.end_line: int = end_line + bitmap: bytes class CICoverageData: """Container for coverage data for an item (suite or test)""" def __init__(self) -> None: - self._coverage_data: Dict[Path, List[CICoverageSegment]] = defaultdict(list) + self._coverage_data: Dict[Path, CoverageLines] = defaultdict(CoverageLines) def __bool__(self): return bool(self._coverage_data) - def add_coverage_segment(self, file_path: Path, start_line, end_line): - """Add a coverage segment to the coverage data""" - self._coverage_data[file_path.absolute()].append(CICoverageSegment(start_line, end_line)) - - def add_coverage_segments(self, segments: Dict[Path, List[Tuple[int, int]]]): + def add_covered_files(self, covered_files: Dict[Path, CoverageLines]): """Add coverage segments to the coverage data""" - for file_path, segment_data in segments.items(): - for segment in segment_data: - self.add_coverage_segment(file_path, segment[0], segment[1]) + for file_path, covered_lines in covered_files.items(): + self._coverage_data[file_path.absolute()].update(covered_lines) def _build_payload(self, root_dir: Path) -> List[CoverageFilePayload]: """Generate a CI Visibility coverage payload @@ -55,20 +38,18 @@ def _build_payload(self, root_dir: Path) -> List[CoverageFilePayload]: Tuples are used here since JSON serializes tuples as lists. """ coverage_data = [] - for file_path, segments in self._coverage_data.items(): + for file_path, covered_lines in self._coverage_data.items(): try: # Report relative path unless the file path is not relative to root_dir # Paths are assumed to be absolute based on having been converted at instantiation / add time. relative_path = file_path.relative_to(root_dir) except ValueError: relative_path = file_path - segments_data = [] - for segment in segments: - segments_data.append((segment.start_line, 0, segment.end_line, 0, -1)) - file_payload: CoverageFilePayload = {"filename": str(relative_path), "segments": segments_data} + path_str = f"/{str(relative_path)}" + file_payload: CoverageFilePayload = {"filename": path_str, "bitmap": covered_lines.to_bytes()} coverage_data.append(file_payload) return coverage_data - def build_payload(self, root_dir: Path) -> str: + def build_payload(self, root_dir: Path) -> Dict[str, List[CoverageFilePayload]]: """Generate a CI Visibility coverage payload in JSON format""" - return json.dumps({"files": self._build_payload(root_dir)}) + return {"files": self._build_payload(root_dir)} diff --git a/ddtrace/internal/ci_visibility/api/ci_module.py b/ddtrace/internal/ci_visibility/api/ci_module.py index 08d9c246fdb..aa014beac04 100644 --- a/ddtrace/internal/ci_visibility/api/ci_module.py +++ b/ddtrace/internal/ci_visibility/api/ci_module.py @@ -1,7 +1,5 @@ from typing import Dict -from typing import List from typing import Optional -from typing import Tuple from ddtrace.ext import test from ddtrace.ext.ci_visibility.api import CIModuleId @@ -83,5 +81,5 @@ def _telemetry_record_event_finished(self): test_framework=self._session_settings.test_framework_metric_name, ) - def add_coverage_data(self, coverage_data: Dict[Path, List[Tuple[int, int]]]): + def add_coverage_data(self, *args, **kwargs): raise NotImplementedError("Coverage data cannot be added to modules.") diff --git a/ddtrace/internal/ci_visibility/api/ci_session.py b/ddtrace/internal/ci_visibility/api/ci_session.py index b359342cc24..d27fb112976 100644 --- a/ddtrace/internal/ci_visibility/api/ci_session.py +++ b/ddtrace/internal/ci_visibility/api/ci_session.py @@ -1,9 +1,6 @@ -from pathlib import Path from typing import Any from typing import Dict -from typing import List from typing import Optional -from typing import Tuple from ddtrace.ext import test from ddtrace.ext.ci_visibility.api import CIModuleId @@ -77,5 +74,5 @@ def _telemetry_record_event_finished(self): is_unsupported_ci=self._session_settings.is_unsupported_ci, ) - def add_coverage_data(self, coverage_data: Dict[Path, List[Tuple[int, int]]]) -> None: - raise NotImplementedError("Coverage data cannot be added to sessions.") + def add_coverage_data(self, *args, **kwargs): + raise NotImplementedError("Coverage data cannot be added to modules.") diff --git a/ddtrace/internal/ci_visibility/api/ci_suite.py b/ddtrace/internal/ci_visibility/api/ci_suite.py index 5c233600200..19a0d0ff664 100644 --- a/ddtrace/internal/ci_visibility/api/ci_suite.py +++ b/ddtrace/internal/ci_visibility/api/ci_suite.py @@ -2,7 +2,6 @@ from typing import Dict from typing import List from typing import Optional -from typing import Tuple from ddtrace.ext import test from ddtrace.ext.ci_visibility.api import CISourceFileInfo @@ -20,6 +19,7 @@ from ddtrace.internal.ci_visibility.telemetry.constants import EVENT_TYPES from ddtrace.internal.ci_visibility.telemetry.events import record_event_created from ddtrace.internal.ci_visibility.telemetry.events import record_event_finished +from ddtrace.internal.coverage.lines import CoverageLines from ddtrace.internal.logger import get_logger @@ -44,6 +44,10 @@ def __init__( self._coverage_data: CICoverageData = CICoverageData() + def __repr__(self) -> str: + module_name = self.parent.name if self.parent is not None else "none" + return f"{self.__class__.__name__}(name={self.name}, module={module_name})" + def finish(self, force: bool = False, override_status: Optional[CITestStatus] = None) -> None: super().finish(force=force, override_status=override_status) @@ -88,5 +92,5 @@ def _telemetry_record_event_finished(self): test_framework=self._session_settings.test_framework_metric_name, ) - def add_coverage_data(self, coverage_data: Dict[Path, List[Tuple[int, int]]]) -> None: - self._coverage_data.add_coverage_segments(coverage_data) + def add_coverage_data(self, coverage_data: Dict[Path, CoverageLines]) -> None: + self._coverage_data.add_covered_files(coverage_data) diff --git a/ddtrace/internal/ci_visibility/api/ci_test.py b/ddtrace/internal/ci_visibility/api/ci_test.py index 75e06e09bd1..40bebf4e132 100644 --- a/ddtrace/internal/ci_visibility/api/ci_test.py +++ b/ddtrace/internal/ci_visibility/api/ci_test.py @@ -2,7 +2,6 @@ from typing import Dict from typing import List from typing import Optional -from typing import Tuple from ddtrace.ext import test from ddtrace.ext.ci_visibility.api import CIExcInfo @@ -17,6 +16,7 @@ from ddtrace.internal.ci_visibility.telemetry.constants import EVENT_TYPES from ddtrace.internal.ci_visibility.telemetry.events import record_event_created from ddtrace.internal.ci_visibility.telemetry.events import record_event_finished +from ddtrace.internal.coverage.lines import CoverageLines from ddtrace.internal.logger import get_logger @@ -60,7 +60,11 @@ def __init__( self._is_benchmark = None def __repr__(self) -> str: - return f"{self.__class__.__name__}(name={self.name}, parameters={self._parameters})" + suite_name = self.parent.name if self.parent is not None else "none" + module_name = self.parent.parent.name if self.parent is not None and self.parent.parent is not None else "none" + return "{}(name={}, suite={}, module={}, parameters={})".format( + self.__class__.__name__, self.name, suite_name, module_name, self._parameters + ) def _get_hierarchy_tags(self) -> Dict[str, str]: return { @@ -139,5 +143,5 @@ def make_early_flake_retry_from_test(self, original_test_id: CITestId, retry_num ), ) - def add_coverage_data(self, coverage_data: Dict[Path, List[Tuple[int, int]]]) -> None: - self._coverage_data.add_coverage_segments(coverage_data) + def add_coverage_data(self, coverage_data: Dict[Path, CoverageLines]) -> None: + self._coverage_data.add_covered_files(coverage_data) diff --git a/ddtrace/internal/ci_visibility/encoder.py b/ddtrace/internal/ci_visibility/encoder.py index 43f54d09414..f78ed526215 100644 --- a/ddtrace/internal/ci_visibility/encoder.py +++ b/ddtrace/internal/ci_visibility/encoder.py @@ -19,10 +19,13 @@ from ddtrace.internal.ci_visibility.telemetry.payload import record_endpoint_payload_events_count from ddtrace.internal.ci_visibility.telemetry.payload import record_endpoint_payload_events_serialization_time from ddtrace.internal.encoding import JSONEncoderV2 +from ddtrace.internal.logger import get_logger from ddtrace.internal.utils.time import StopWatch from ddtrace.internal.writer.writer import NoEncodableSpansError +log = get_logger(__name__) + if TYPE_CHECKING: # pragma: no cover from typing import Any # noqa:F401 from typing import Dict # noqa:F401 @@ -158,7 +161,11 @@ def _set_itr_suite_skipping_mode(self, new_value): self.itr_suite_skipping_mode = new_value def put(self, spans): - spans_with_coverage = [span for span in spans if COVERAGE_TAG_NAME in span.get_tags()] + spans_with_coverage = [ + span + for span in spans + if COVERAGE_TAG_NAME in span.get_tags() or span.get_struct_tag(COVERAGE_TAG_NAME) is not None + ] if not spans_with_coverage: raise NoEncodableSpansError() return super(CIVisibilityCoverageEncoderV02, self).put(spans_with_coverage) @@ -194,7 +201,10 @@ def _build_body(self, data): def _build_data(self, traces): # type: (List[List[Span]]) -> Optional[bytes] normalized_covs = [ - self._convert_span(span, "") for trace in traces for span in trace if COVERAGE_TAG_NAME in span.get_tags() + self._convert_span(span, "") + for trace in traces + for span in trace + if (COVERAGE_TAG_NAME in span.get_tags() or span.get_struct_tag(COVERAGE_TAG_NAME) is not None) ] if not normalized_covs: return None @@ -211,13 +221,23 @@ def _build_payload(self, traces): def _convert_span(self, span, dd_origin): # type: (Span, str) -> Dict[str, Any] + files: Dict[str, Any] = {} + + files_struct_tag_value = span.get_struct_tag(COVERAGE_TAG_NAME) + if files_struct_tag_value is not None and "files" in files_struct_tag_value: + files = files_struct_tag_value["files"] + elif COVERAGE_TAG_NAME in span.get_tags(): + files = json.loads(str(span.get_tag(COVERAGE_TAG_NAME)))["files"] + converted_span = { "test_session_id": int(span.get_tag(SESSION_ID) or "1"), "test_suite_id": int(span.get_tag(SUITE_ID) or "1"), - "files": json.loads(str(span.get_tag(COVERAGE_TAG_NAME)))["files"], + "files": files, } if not self.itr_suite_skipping_mode: converted_span["span_id"] = span.span_id + log.debug("Span converted to coverage event: %s", converted_span) + return converted_span diff --git a/ddtrace/internal/core/crashtracking.py b/ddtrace/internal/core/crashtracking.py index 9e96341af04..a36d9639fed 100644 --- a/ddtrace/internal/core/crashtracking.py +++ b/ddtrace/internal/core/crashtracking.py @@ -35,6 +35,7 @@ def start() -> bool: crashtracker.set_runtime_id(get_runtime_id()) crashtracker.set_library_version(version.get_version()) crashtracker.set_alt_stack(bool(crashtracker_config.alt_stack)) + crashtracker.set_wait_for_receiver(bool(crashtracker_config.wait_for_receiver)) if crashtracker_config.stacktrace_resolver == "fast": crashtracker.set_resolve_frames_fast() elif crashtracker_config.stacktrace_resolver == "full": diff --git a/ddtrace/internal/coverage/code.py b/ddtrace/internal/coverage/code.py index 1fc7e4028c0..e9f616248d1 100644 --- a/ddtrace/internal/coverage/code.py +++ b/ddtrace/internal/coverage/code.py @@ -1,7 +1,6 @@ from collections import defaultdict from copy import deepcopy from inspect import getmodule -import json import os from types import CodeType from types import ModuleType @@ -9,9 +8,11 @@ from ddtrace.internal.compat import Path from ddtrace.internal.coverage.instrumentation import instrument_all_lines +from ddtrace.internal.coverage.lines import CoverageLines from ddtrace.internal.coverage.report import gen_json_report from ddtrace.internal.coverage.report import print_coverage_report from ddtrace.internal.coverage.util import collapse_ranges +from ddtrace.internal.logger import get_logger from ddtrace.internal.module import ModuleWatchdog from ddtrace.internal.packages import platlib_path from ddtrace.internal.packages import platstdlib_path @@ -20,6 +21,8 @@ from ddtrace.vendor.contextvars import ContextVar +log = get_logger(__name__) + _original_exec = exec ctx_covered = ContextVar("ctx_covered", default=None) @@ -27,8 +30,8 @@ ctx_coverage_enabled = ContextVar("ctx_coverage_enabled", default=False) -def _get_ctx_covered_lines() -> t.DefaultDict[str, t.Set]: - return ctx_covered.get()[-1] if ctx_coverage_enabled.get() else defaultdict(set) +def _get_ctx_covered_lines() -> t.DefaultDict[str, CoverageLines]: + return ctx_covered.get()[-1] if ctx_coverage_enabled.get() else defaultdict(CoverageLines) class ModuleCodeCollector(ModuleWatchdog): @@ -47,11 +50,11 @@ def __init__(self) -> None: self.seen: t.Set[t.Tuple[CodeType, str]] = set() # Data structures for coverage data - self.lines: t.DefaultDict[str, t.Set] = defaultdict(set) - self.covered: t.DefaultDict[str, t.Set] = defaultdict(set) + self.lines: t.DefaultDict[str, CoverageLines] = defaultdict(CoverageLines) + self.covered: t.DefaultDict[str, CoverageLines] = defaultdict(CoverageLines) # Import-time coverage data - self._import_time_covered: t.DefaultDict[str, t.Set[int]] = defaultdict(set) + self._import_time_covered: t.DefaultDict[str, CoverageLines] = defaultdict(CoverageLines) self._import_time_contexts: t.Dict[str, "ModuleCodeCollector.CollectInContext"] = {} self._import_time_name_to_path: t.Dict[str, str] = {} self._import_names_by_path: t.Dict[str, t.Set[t.Tuple[str, t.Tuple[str, ...]]]] = defaultdict(set) @@ -94,53 +97,42 @@ def hook(self, arg: t.Tuple[int, str, t.Optional[t.Tuple[str, t.Tuple[str, ...]] if self._coverage_enabled: lines = self.covered[path] - if line not in lines: - # This line has already been covered - lines.add(line) + lines.add(line) if ctx_coverage_enabled.get(): # Import-time contexts store their lines in a non-context variable to be aggregated on request when # reporting coverage ctx_lines = _get_ctx_covered_lines()[path] - - if line not in ctx_lines: - ctx_lines.add(line) + ctx_lines.add(line) if import_name is not None and self._collect_import_coverage: self._import_names_by_path[path].add(import_name) - @classmethod - def absorb_data_json(cls, data_json: str): - """Absorb a JSON report of coverage data. This is used to aggregate coverage data from multiple processes. - - Absolute paths are expected. - """ - data = json.loads(data_json) - cls.inject_coverage(lines=data["lines"], covered=data["covered"]) - @classmethod def inject_coverage( - cls, lines: t.Optional[t.Dict[str, t.Set[int]]] = None, covered: t.Optional[t.Dict[str, t.Set[int]]] = None + cls, + lines: t.Optional[t.Dict[str, CoverageLines]] = None, + covered: t.Optional[t.Dict[str, CoverageLines]] = None, ): """Inject coverage data into the collector. This can be used to arbitrarily add covered files.""" instance = cls._instance + if instance is None: + return + ctx_covered_lines = None if ctx_coverage_enabled.get(): ctx_covered_lines = _get_ctx_covered_lines() - if instance is None: - return - if lines: for path, path_lines in lines.items(): - instance.lines[path] |= set(path_lines) + instance.lines[path].update(path_lines) if covered: for path, path_covered in covered.items(): if instance._coverage_enabled: - instance.covered[path] |= set(path_covered) + instance.covered[path].update(path_covered) if ctx_coverage_enabled.get() and ctx_covered_lines is not None: - ctx_covered_lines[path] |= set(path_covered) + ctx_covered_lines[path].update(path_covered) @classmethod def report(cls, workspace_path: Path, ignore_nocover: bool = False): @@ -153,23 +145,6 @@ def report(cls, workspace_path: Path, ignore_nocover: bool = False): print_coverage_report(executable_lines, covered_lines, workspace_path, ignore_nocover=ignore_nocover) - @classmethod - def get_data_json(cls) -> str: - if cls._instance is None: - return "{}" - instance: ModuleCodeCollector = cls._instance - - executable_lines = {path: list(lines) for path, lines in instance.lines.items()} - covered_lines = {path: list(lines) for path, lines in instance._get_covered_lines().items()} - - return json.dumps({"lines": executable_lines, "covered": covered_lines}) - - @classmethod - def get_context_data_json(cls) -> str: - covered_lines = _get_ctx_covered_lines() - - return json.dumps({"lines": {}, "covered": {path: list(lines) for path, lines in covered_lines.items()}}) - @classmethod def write_json_report_to_file(cls, filename: str, workspace_path: Path, ignore_nocover: bool = False): if cls._instance is None: @@ -182,7 +157,7 @@ def write_json_report_to_file(cls, filename: str, workspace_path: Path, ignore_n with open(filename, "w") as f: f.write(gen_json_report(executable_lines, covered_lines, workspace_path, ignore_nocover=ignore_nocover)) - def _get_covered_lines(self, include_imported: bool = False) -> t.Dict[str, t.Set[int]]: + def _get_covered_lines(self, include_imported: bool = False) -> t.Dict[str, CoverageLines]: # Covered lines should always be a copy to make sure the original cannot be altered covered_lines = deepcopy(_get_ctx_covered_lines() if ctx_coverage_enabled.get() else self.covered) if include_imported: @@ -207,7 +182,7 @@ def _add_import_time_lines(self, covered_lines): continue imported_module_lines = self._import_time_covered[path] - covered_lines[path] |= imported_module_lines + covered_lines[path].update(imported_module_lines) # Queue up dependencies of current path, if they exist, have valid paths, and haven't been visited yet for dependencies in self._import_names_by_path.get(path, set()): @@ -241,7 +216,7 @@ def __init__(self, is_import_coverage: bool = False): ctx_covered.set([]) def __enter__(self): - ctx_covered.get().append(defaultdict(set)) + ctx_covered.get().append(defaultdict(CoverageLines)) ctx_coverage_enabled.set(True) if self.is_import_coverage: @@ -257,7 +232,7 @@ def __exit__(self, *args, **kwargs): if len(covered_lines_stack) == 0: ctx_coverage_enabled.set(False) - def get_covered_lines(self): + def get_covered_lines(self) -> t.Dict[str, CoverageLines]: return ctx_covered.get()[-1] @classmethod @@ -311,7 +286,7 @@ def report_seen_lines(cls, workspace_path: Path, include_imported: bool = False) str(abs_path.relative_to(workspace_path)) if abs_path.is_relative_to(workspace_path) else abs_path_str ) - sorted_lines = sorted(lines) + sorted_lines = [i for i, v in enumerate(sorted(lines.to_sorted_list())) if v == 1] collapsed_ranges = collapse_ranges(sorted_lines) file_segments = [] @@ -378,7 +353,7 @@ def instrument_code(self, code: CodeType, package) -> CodeType: self.seen.add((new_code, code.co_filename)) # Keep note of all the lines that have been instrumented. These will be # the ones that can be covered. - self.lines[code.co_filename] |= lines + self.lines[code.co_filename].update(lines) return new_code def _exec(self, _object, _globals=None, _locals=None, **kwargs): diff --git a/ddtrace/internal/coverage/instrumentation_py3_10.py b/ddtrace/internal/coverage/instrumentation_py3_10.py index ece0166eb52..dfb3d4a8642 100644 --- a/ddtrace/internal/coverage/instrumentation_py3_10.py +++ b/ddtrace/internal/coverage/instrumentation_py3_10.py @@ -5,6 +5,7 @@ from types import CodeType import typing as t +from ddtrace.internal.coverage.lines import CoverageLines from ddtrace.internal.injection import HookType @@ -154,7 +155,7 @@ def trap_call(trap_index: int, arg_index: int) -> t.Tuple[Instruction, ...]: ) -def instrument_all_lines(code: CodeType, hook: HookType, path: str, package: str) -> t.Tuple[CodeType, t.Set[int]]: +def instrument_all_lines(code: CodeType, hook: HookType, path: str, package: str) -> t.Tuple[CodeType, CoverageLines]: # TODO[perf]: Check if we really need to << and >> everywhere trap_func, trap_arg = hook, path @@ -164,7 +165,7 @@ def instrument_all_lines(code: CodeType, hook: HookType, path: str, package: str trap_index = len(new_consts) new_consts.append(trap_func) - seen_lines = set() + seen_lines = CoverageLines() offset_map = {} diff --git a/ddtrace/internal/coverage/instrumentation_py3_11.py b/ddtrace/internal/coverage/instrumentation_py3_11.py index 20ca32ae72f..393a0c9c525 100644 --- a/ddtrace/internal/coverage/instrumentation_py3_11.py +++ b/ddtrace/internal/coverage/instrumentation_py3_11.py @@ -6,6 +6,7 @@ from types import CodeType import typing as t +from ddtrace.internal.coverage.lines import CoverageLines from ddtrace.internal.injection import HookType @@ -247,7 +248,7 @@ def trap_call(trap_index: int, arg_index: int) -> t.Tuple[Instruction, ...]: SKIP_LINES = frozenset([dis.opmap["END_ASYNC_FOR"]]) -def instrument_all_lines(code: CodeType, hook: HookType, path: str, package: str) -> t.Tuple[CodeType, t.Set[int]]: +def instrument_all_lines(code: CodeType, hook: HookType, path: str, package: str) -> t.Tuple[CodeType, CoverageLines]: # TODO[perf]: Check if we really need to << and >> everywhere trap_func, trap_arg = hook, path @@ -257,7 +258,7 @@ def instrument_all_lines(code: CodeType, hook: HookType, path: str, package: str trap_index = len(new_consts) new_consts.append(trap_func) - seen_lines = set() + seen_lines = CoverageLines() exc_table = list(parse_exception_table(code)) exc_table_offsets = {_ for e in exc_table for _ in (e.start, e.end, e.target)} diff --git a/ddtrace/internal/coverage/instrumentation_py3_12.py b/ddtrace/internal/coverage/instrumentation_py3_12.py index 69df06da135..e0937912f97 100644 --- a/ddtrace/internal/coverage/instrumentation_py3_12.py +++ b/ddtrace/internal/coverage/instrumentation_py3_12.py @@ -3,6 +3,7 @@ from types import CodeType import typing as t +from ddtrace.internal.coverage.lines import CoverageLines from ddtrace.internal.injection import HookType @@ -22,9 +23,11 @@ except ValueError: # TODO: Another coverage tool is already in use. Either warn the user # or free the tool and register ours. - def instrument_all_lines(code: CodeType, hook: HookType, path: str, package: str) -> t.Tuple[CodeType, t.Set[int]]: + def instrument_all_lines( + code: CodeType, hook: HookType, path: str, package: str + ) -> t.Tuple[CodeType, CoverageLines]: # No-op - return code, set() + return code, CoverageLines() else: _CODE_HOOKS: t.Dict[CodeType, t.Tuple[HookType, str, t.Dict[int, t.Tuple[str, t.Optional[t.Tuple[str]]]]]] = {} @@ -39,14 +42,16 @@ def _line_event_handler(code: CodeType, line: int) -> t.Any: sys.monitoring.COVERAGE_ID, sys.monitoring.events.LINE, _line_event_handler ) # noqa - def instrument_all_lines(code: CodeType, hook: HookType, path: str, package: str) -> t.Tuple[CodeType, t.Set[int]]: + def instrument_all_lines( + code: CodeType, hook: HookType, path: str, package: str + ) -> t.Tuple[CodeType, CoverageLines]: # Enable local line events for the code object sys.monitoring.set_local_events(sys.monitoring.COVERAGE_ID, code, sys.monitoring.events.LINE) # noqa # Collect all the line numbers in the code object linestarts = dict(dis.findlinestarts(code)) - lines = set() + lines = CoverageLines() import_names: t.Dict[int, t.Tuple[str, t.Optional[t.Tuple[str, ...]]]] = {} # The previous two arguments are kept in order to track the depth of the IMPORT_NAME diff --git a/ddtrace/internal/coverage/instrumentation_py3_7.py b/ddtrace/internal/coverage/instrumentation_py3_7.py index 30b6c7ca395..845edc6df65 100644 --- a/ddtrace/internal/coverage/instrumentation_py3_7.py +++ b/ddtrace/internal/coverage/instrumentation_py3_7.py @@ -5,6 +5,7 @@ from types import CodeType import typing as t +from ddtrace.internal.coverage.lines import CoverageLines from ddtrace.internal.injection import HookType @@ -176,7 +177,7 @@ def trap_call(trap_index: int, arg_index: int) -> t.Tuple[Instruction, ...]: ) -def instrument_all_lines(code: CodeType, hook: HookType, path: str, package: str) -> t.Tuple[CodeType, t.Set[int]]: +def instrument_all_lines(code: CodeType, hook: HookType, path: str, package: str) -> t.Tuple[CodeType, CoverageLines]: # TODO[perf]: Check if we really need to << and >> everywhere trap_func, trap_arg = hook, path @@ -186,7 +187,7 @@ def instrument_all_lines(code: CodeType, hook: HookType, path: str, package: str trap_index = len(new_consts) new_consts.append(trap_func) - seen_lines = set() + seen_lines = CoverageLines() offset_map = {} diff --git a/ddtrace/internal/coverage/instrumentation_py3_8.py b/ddtrace/internal/coverage/instrumentation_py3_8.py index a44c0cdd3d1..7c432fc25f2 100644 --- a/ddtrace/internal/coverage/instrumentation_py3_8.py +++ b/ddtrace/internal/coverage/instrumentation_py3_8.py @@ -5,6 +5,7 @@ from types import CodeType import typing as t +from ddtrace.internal.coverage.lines import CoverageLines from ddtrace.internal.injection import HookType @@ -177,7 +178,7 @@ def trap_call(trap_index: int, arg_index: int) -> t.Tuple[Instruction, ...]: ) -def instrument_all_lines(code: CodeType, hook: HookType, path: str, package: str) -> t.Tuple[CodeType, t.Set[int]]: +def instrument_all_lines(code: CodeType, hook: HookType, path: str, package: str) -> t.Tuple[CodeType, CoverageLines]: # TODO[perf]: Check if we really need to << and >> everywhere trap_func, trap_arg = hook, path @@ -187,7 +188,7 @@ def instrument_all_lines(code: CodeType, hook: HookType, path: str, package: str trap_index = len(new_consts) new_consts.append(trap_func) - seen_lines = set() + seen_lines = CoverageLines() offset_map = {} diff --git a/ddtrace/internal/coverage/lines.py b/ddtrace/internal/coverage/lines.py new file mode 100644 index 00000000000..547542c766f --- /dev/null +++ b/ddtrace/internal/coverage/lines.py @@ -0,0 +1,72 @@ +import typing as t + + +def _bit_count_compat(_byte: int) -> int: + return bin(_byte).count("1") + + +_bit_count: t.Callable[[int], int] = int.bit_count if hasattr(int, "bit_count") else _bit_count_compat + + +class CoverageLines: + def __init__(self, initial_size: int = 32): + # Initial size of 32 chosen based on p50 length of files in code base being 240 at time of writing + self._lines = bytearray(initial_size) + + def __len__(self): + return self._num_lines() + + def __bool__(self): + return self._num_lines() > 0 + + def __copy__(self): + new_instance = CoverageLines() + new_instance._lines = self._lines.copy() + return new_instance + + def __repr__(self): + return f"CoverageLines(num_lines={self._num_lines()})" + + def _num_lines(self) -> int: + return sum(_bit_count(byte) for byte in self._lines) + + def add(self, line_number: int): + lines_byte = line_number // 8 + + if lines_byte >= len(self._lines): + self._lines.extend(bytearray(lines_byte - len(self._lines) + 1)) + + # DEV this fun bit allows us to trick ourselves into little-endianness, which is what the backend wants to see + # in bytes + lines_bit = 0b1000_0000 >> (line_number % 8) + self._lines[lines_byte] |= lines_bit + + def to_sorted_list(self) -> t.List[int]: + """Returns a sorted list of covered line numbers""" + lines = [] + for idx, _byte in enumerate(self._lines): + for _bit in range(8): + # Producing a list of lines needs to account for the fact they are kept in a little-endian way + if _byte & (0b1000_0000 >> _bit): + lines.append(idx * 8 + _bit) + + return lines + + def update(self, other: "CoverageLines"): + # Extend our lines if the other coverage has more lines + if len(other._lines) > len(self._lines): + self._lines.extend(bytearray(len(other._lines) - len(self._lines))) + + for _byte_idx, _byte in enumerate(other._lines): + self._lines[_byte_idx] |= _byte + + def to_bytes(self) -> bytes: + """This exists as a simple interface in case we ever decide to change the internal lines representation""" + return self._lines + + @classmethod + def from_list(cls, lines: t.List[int]) -> "CoverageLines": + coverage = cls() + for line in lines: + coverage.add(line) + return coverage diff --git a/ddtrace/internal/coverage/multiprocessing_coverage.py b/ddtrace/internal/coverage/multiprocessing_coverage.py index e6b586f4482..e63252ef07c 100644 --- a/ddtrace/internal/coverage/multiprocessing_coverage.py +++ b/ddtrace/internal/coverage/multiprocessing_coverage.py @@ -15,9 +15,11 @@ from multiprocessing.connection import Connection import multiprocessing.process from pathlib import Path +import pickle # nosec: B403 -- pickle is only used to serialize coverage data from the child process to its parent import typing as t from ddtrace.internal.coverage.code import ModuleCodeCollector +from ddtrace.internal.coverage.lines import CoverageLines from ddtrace.internal.logger import get_logger @@ -51,7 +53,16 @@ def _absorb_child_coverage(self) -> None: if self._parent_conn.poll(): rcvd = self._parent_conn.recv() if rcvd: - ModuleCodeCollector.absorb_data_json(rcvd) + try: + data = pickle.loads(rcvd) # nosec: B301 -- we trust this is coverage data + except pickle.UnpicklingError: + log.debug("Could not unpickle coverage data, not injecting coverage") + raise + + lines: t.Dict[str, CoverageLines] = data.get("lines", {}) + covered: t.Dict[str, CoverageLines] = data.get("covered", {}) + + ModuleCodeCollector.inject_coverage(lines, covered) else: log.debug("Child process sent empty coverage data") else: @@ -78,8 +89,15 @@ def _bootstrap(self, *args, **kwargs) -> None: rval = base_process_bootstrap(self, *args, **kwargs) if self._dd_coverage_enabled and self._child_conn is not None: + instance = ModuleCodeCollector._instance + + if instance is None: + return + try: - self._child_conn.send(ModuleCodeCollector.get_data_json()) + self._child_conn.send(pickle.dumps({"lines": instance.lines, "covered": instance.covered})) + except pickle.PicklingError: + log.warning("Failed to pickle coverage data for child process", exc_info=True) except Exception: log.warning("Failed to send coverage data to parent process", exc_info=True) diff --git a/ddtrace/internal/coverage/threading_coverage.py b/ddtrace/internal/coverage/threading_coverage.py index 2408631bdba..58aa5930c3b 100644 --- a/ddtrace/internal/coverage/threading_coverage.py +++ b/ddtrace/internal/coverage/threading_coverage.py @@ -12,12 +12,16 @@ Session-level coverage does not need special-casing since the ModuleCodeCollector behavior is process-wide and thread-safe. """ +import pickle # nosec: B403 -- pickle is only used to serialize coverage data from a spawned thread to the main thread from queue import Queue import threading from ddtrace.internal.coverage.code import ModuleCodeCollector +from ddtrace.internal.logger import get_logger +log = get_logger(__name__) + Thread = threading.Thread thread_init = Thread.__init__ thread_boostrap_inner = Thread._bootstrap_inner # type: ignore[attr-defined] @@ -54,7 +58,11 @@ def _bootstrap_inner(self): finally: # Ensure coverage data is collected, and context is exited, even if an exception is raised if self._should_cover: - covered_lines = ModuleCodeCollector.get_context_data_json() + try: + covered_lines = pickle.dumps({"covered": self._coverage_context.get_covered_lines()}) + except pickle.PicklingError: + log.warning("Could not pickle coverage data, not injecting coverage") + return self._coverage_context.__exit__() self._coverage_queue.put(covered_lines) @@ -63,8 +71,13 @@ def join(self, *args, **kwargs): thread_join(self, *args, **kwargs) if self._should_cover: if self._coverage_queue.qsize(): - thread_coverage = self._coverage_queue.get() - ModuleCodeCollector.absorb_data_json(thread_coverage) + try: + data = pickle.loads(self._coverage_queue.get()) # nosec: B301 -- we trust this is coverage data + thread_covered = data.get("covered", {}) + except pickle.UnpicklingError: + log.warning("Could not unpickle coverage data, not injecting coverage") + return + ModuleCodeCollector.inject_coverage(covered=thread_covered) def _patch_threading(): diff --git a/ddtrace/internal/datadog/profiling/crashtracker/_crashtracker.pyi b/ddtrace/internal/datadog/profiling/crashtracker/_crashtracker.pyi index 0d181464961..5df95e5f859 100644 --- a/ddtrace/internal/datadog/profiling/crashtracker/_crashtracker.pyi +++ b/ddtrace/internal/datadog/profiling/crashtracker/_crashtracker.pyi @@ -11,6 +11,7 @@ def set_library_version(profiler_version: StringType) -> None: ... def set_stdout_filename(filename: StringType) -> None: ... def set_stderr_filename(filename: StringType) -> None: ... def set_alt_stack(alt_stack: bool) -> None: ... +def set_wait_for_receiver(wait: bool) -> None: ... def set_resolve_frames_disable() -> None: ... def set_resolve_frames_fast() -> None: ... def set_resolve_frames_full() -> None: ... diff --git a/ddtrace/internal/datadog/profiling/crashtracker/_crashtracker.pyx b/ddtrace/internal/datadog/profiling/crashtracker/_crashtracker.pyx index 9fbc43816a2..c7bb62da8be 100644 --- a/ddtrace/internal/datadog/profiling/crashtracker/_crashtracker.pyx +++ b/ddtrace/internal/datadog/profiling/crashtracker/_crashtracker.pyx @@ -28,6 +28,7 @@ cdef extern from "crashtracker_interface.hpp": void crashtracker_set_stdout_filename(string_view filename) void crashtracker_set_stderr_filename(string_view filename) void crashtracker_set_alt_stack(bint alt_stack) + void crashtracker_set_wait_for_receiver(bint wait) void crashtracker_set_resolve_frames_disable() void crashtracker_set_resolve_frames_fast() void crashtracker_set_resolve_frames_full() @@ -98,6 +99,10 @@ def set_alt_stack(alt_stack: bool) -> None: crashtracker_set_alt_stack(alt_stack) +def set_wait_for_receiver(wait: bool) -> None: + crashtracker_set_wait_for_receiver(wait) + + def set_resolve_frames_disable() -> None: crashtracker_set_resolve_frames_disable() diff --git a/ddtrace/internal/datadog/profiling/dd_wrapper/include/crashtracker.hpp b/ddtrace/internal/datadog/profiling/dd_wrapper/include/crashtracker.hpp index f340d926c00..02151d422ec 100644 --- a/ddtrace/internal/datadog/profiling/dd_wrapper/include/crashtracker.hpp +++ b/ddtrace/internal/datadog/profiling/dd_wrapper/include/crashtracker.hpp @@ -32,6 +32,7 @@ class Crashtracker { private: bool create_alt_stack = false; + bool wait_for_receiver = true; std::optional stderr_filename{ std::nullopt }; std::optional stdout_filename{ std::nullopt }; std::string path_to_receiver_binary; @@ -71,6 +72,7 @@ class Crashtracker void set_library_version(std::string_view _library_version); void set_url(std::string_view _url); void set_tag(std::string_view _key, std::string_view _value); + void set_wait_for_receiver(bool _wait); void set_create_alt_stack(bool _create_alt_stack); void set_stderr_filename(std::string_view _stderr_filename); diff --git a/ddtrace/internal/datadog/profiling/dd_wrapper/include/crashtracker_interface.hpp b/ddtrace/internal/datadog/profiling/dd_wrapper/include/crashtracker_interface.hpp index f3c747a2236..1cb5c294df0 100644 --- a/ddtrace/internal/datadog/profiling/dd_wrapper/include/crashtracker_interface.hpp +++ b/ddtrace/internal/datadog/profiling/dd_wrapper/include/crashtracker_interface.hpp @@ -19,6 +19,7 @@ extern "C" void crashtracker_set_stdout_filename(std::string_view filename); void crashtracker_set_stderr_filename(std::string_view filename); void crashtracker_set_alt_stack(bool alt_stack); + void crashtracker_set_wait_for_receiver(bool wait); void crashtracker_set_resolve_frames_disable(); void crashtracker_set_resolve_frames_fast(); void crashtracker_set_resolve_frames_full(); diff --git a/ddtrace/internal/datadog/profiling/dd_wrapper/src/crashtracker.cpp b/ddtrace/internal/datadog/profiling/dd_wrapper/src/crashtracker.cpp index f707573a65d..c8bda44eab3 100644 --- a/ddtrace/internal/datadog/profiling/dd_wrapper/src/crashtracker.cpp +++ b/ddtrace/internal/datadog/profiling/dd_wrapper/src/crashtracker.cpp @@ -12,6 +12,12 @@ Datadog::Crashtracker::set_create_alt_stack(bool _create_alt_stack) create_alt_stack = _create_alt_stack; } +void +Datadog::Crashtracker::set_wait_for_receiver(bool _wait) +{ + wait_for_receiver = _wait; +} + void Datadog::Crashtracker::set_env(std::string_view _env) { @@ -122,7 +128,7 @@ Datadog::Crashtracker::get_config() config.endpoint = ddog_endpoint_from_url(to_slice(url)); config.resolve_frames = resolve_frames; config.timeout_secs = timeout_secs; - + config.wait_for_receiver = wait_for_receiver; return config; } diff --git a/ddtrace/internal/datadog/profiling/dd_wrapper/src/crashtracker_interface.cpp b/ddtrace/internal/datadog/profiling/dd_wrapper/src/crashtracker_interface.cpp index 246af4f5159..bf3257225fd 100644 --- a/ddtrace/internal/datadog/profiling/dd_wrapper/src/crashtracker_interface.cpp +++ b/ddtrace/internal/datadog/profiling/dd_wrapper/src/crashtracker_interface.cpp @@ -82,6 +82,12 @@ crashtracker_set_alt_stack(bool alt_stack) // cppcheck-suppress unusedFunction crashtracker.set_create_alt_stack(alt_stack); } +void +crashtracker_set_wait_for_receiver(bool wait) // cppcheck-suppress unusedFunction +{ + crashtracker.set_wait_for_receiver(wait); +} + void crashtracker_set_resolve_frames_disable() // cppcheck-suppress unusedFunction { diff --git a/ddtrace/internal/module.py b/ddtrace/internal/module.py index 3c61a108ce3..2c607990a25 100644 --- a/ddtrace/internal/module.py +++ b/ddtrace/internal/module.py @@ -214,20 +214,6 @@ def call_back(self, module: ModuleType) -> None: for callback in self.callbacks.values(): callback(module) - def import_exception_call_back(self, module: ModuleType) -> None: - # Restore the original loader - try: - module.__loader__ = self.loader - except AttributeError: - pass - try: - module.spec.loader = self.loader - except AttributeError: - pass - - for import_exception_callback in self.import_exception_callbacks.values(): - import_exception_callback(module) - def load_module(self, fullname: str) -> t.Optional[ModuleType]: if self.loader is None: if self.spec is None: diff --git a/ddtrace/settings/crashtracker.py b/ddtrace/settings/crashtracker.py index b49b2ff5748..f22b363f56a 100644 --- a/ddtrace/settings/crashtracker.py +++ b/ddtrace/settings/crashtracker.py @@ -101,5 +101,13 @@ class CrashtrackingConfig(En): "This is generally useful only for dd-trace-py development.", ) + wait_for_receiver = En.v( + bool, + "wait_for_receiver", + default=True, + help_type="Boolean", + help="Whether to wait for the crashtracking receiver", + ) + config = CrashtrackingConfig() diff --git a/hatch.toml b/hatch.toml index 35b4f6fe3cd..03e326e5388 100644 --- a/hatch.toml +++ b/hatch.toml @@ -340,7 +340,7 @@ dependencies = [ [envs.dd_coverage.scripts] test = [ "pip freeze", - "pytest tests/coverage -s --no-cov", + "pytest tests/coverage -s --no-cov {args:}", ] [[envs.dd_coverage.matrix]] @@ -370,9 +370,9 @@ test = [ [[envs.pytest_plugin_v2.matrix]] python = ["3.7", "3.9"] -pytest = ["~=6.0", ">7"] +pytest = ["~=6.0", "latest"] [[envs.pytest_plugin_v2.matrix]] python = ["3.10", "3.12"] -pytest = ["~=6.0", "~=7.0", ">7"] +pytest = ["~=6.0", "~=7.0", "latest"] diff --git a/releasenotes/notes/deprecate-yaaredis-fe7ec032b017778d.yaml b/releasenotes/notes/deprecate-yaaredis-fe7ec032b017778d.yaml new file mode 100644 index 00000000000..f389d16dc33 --- /dev/null +++ b/releasenotes/notes/deprecate-yaaredis-fe7ec032b017778d.yaml @@ -0,0 +1,5 @@ +--- +deprecations: + - | + yaaredis: The yaaredis integration is deprecated and will be removed in a future version. + As an alternative to the yaaredis integration, the redis integration should be used. \ No newline at end of file diff --git a/setup.cfg b/setup.cfg index 0a148b4ce59..a62b967bb25 100644 --- a/setup.cfg +++ b/setup.cfg @@ -19,3 +19,6 @@ addopts = # DEV: The default is `test_*\.py` which will miss `test.py` files python_files = test*\.py asyncio_mode = auto + +[flake8] +max-line-length = 120 diff --git a/tests/appsec/iast_packages/test_packages.py b/tests/appsec/iast_packages/test_packages.py index bbb9eb09e91..c62d77c91d4 100644 --- a/tests/appsec/iast_packages/test_packages.py +++ b/tests/appsec/iast_packages/test_packages.py @@ -290,7 +290,6 @@ def uninstall(self, python_cmd): "xn--eckwd4c7c.xn--zckzah", import_module_to_validate="idna.codec", test_propagation=True, - fixme_propagation_fails=True, ), PackageForTesting( "importlib-resources", @@ -504,7 +503,6 @@ def uninstall(self, python_cmd): "", import_module_to_validate="rsa.pkcs1", test_propagation=True, - fixme_propagation_fails=False, ), PackageForTesting( "sqlalchemy", @@ -585,7 +583,6 @@ def uninstall(self, python_cmd): extras=[("beautifulsoup4", "4.12.3")], skip_python_version=[(3, 6), (3, 7), (3, 8)], test_propagation=True, - fixme_propagation_fails=True, ), PackageForTesting( "werkzeug", @@ -606,7 +603,6 @@ def uninstall(self, python_cmd): import_module_to_validate="yarl._url", skip_python_version=[(3, 6), (3, 7), (3, 8)], test_propagation=True, - fixme_propagation_fails=True, ), PackageForTesting( "zipp", @@ -679,7 +675,6 @@ def uninstall(self, python_cmd): "", skip_python_version=[(3, 8)], test_propagation=True, - fixme_propagation_fails=True, ), ## TODO: https://datadoghq.atlassian.net/browse/APPSEC-53659 ## Disabled due to a bug in CI: @@ -889,7 +884,7 @@ def _assert_propagation_results(response, package): if package.fixme_propagation_fails is not None: if result_ok: if package.fixme_propagation_fails: # For packages that are reliably failing - pytest.fail( + pytest.xfail( "FIXME: Test passed unexpectedly, consider changing to fixme_propagation_fails=False for package %s" % package.name ) diff --git a/tests/ci_visibility/api/fake_runner_mix_fail_itr_suite_level.py b/tests/ci_visibility/api/fake_runner_mix_fail_itr_suite_level.py index e08562ea450..f03b959c889 100644 --- a/tests/ci_visibility/api/fake_runner_mix_fail_itr_suite_level.py +++ b/tests/ci_visibility/api/fake_runner_mix_fail_itr_suite_level.py @@ -24,6 +24,7 @@ from ddtrace.ext.ci_visibility import api from ddtrace.internal.ci_visibility.utils import take_over_logger_stream_handler +from ddtrace.internal.coverage.lines import CoverageLines def _make_excinfo(): @@ -165,7 +166,7 @@ def main(): # # suite_1_test_1 test api.CITest.start(suite_1_test_1_id) - api.CITest.add_coverage_data(suite_1_test_1_id, {Path("my_file_1.py"): [(1, 3), (4, 8), (9, 9)]}) + api.CITest.add_coverage_data(suite_1_test_1_id, {Path("my_file_1.py"): CoverageLines.from_list([1, 2, 3, 4, 8, 9])}) api.CITest.mark_pass(suite_1_test_1_id) # @@ -175,8 +176,8 @@ def main(): api.CITest.add_coverage_data( suite_1_id, { - Path("my_file_1.py"): [(1, 3), (4, 8), (9, 9)], - Path("my/other/path/my_file_2.py"): [(1, 9), (10, 10000000)], + Path("my_file_1.py"): CoverageLines.from_list([1, 2, 3, 4, 8, 9]), + Path("my/other/path/my_file_2.py"): CoverageLines.from_list([1] + [9] + list(range(10, 101))), }, ) api.CITest.mark_skip(suite_1_test_2_id) @@ -185,9 +186,9 @@ def main(): # suite_1_test_3 test and EFD retries api.CITest.start(suite_1_test_3_id) suite_1_test_3_abs_path_1 = Path("my_abs_file_3.py").absolute() - api.CITest.add_coverage_data(suite_1_id, {suite_1_test_3_abs_path_1: [(1, 3), (4, 8), (9, 9)]}) + api.CITest.add_coverage_data(suite_1_id, {suite_1_test_3_abs_path_1: CoverageLines.from_list([1, 2, 3, 4, 8, 9])}) suite_1_test_3_rel_path_1 = Path("my_rel_file_3.py") - api.CITest.add_coverage_data(suite_1_id, {suite_1_test_3_rel_path_1: [(2, 2)]}) + api.CITest.add_coverage_data(suite_1_id, {suite_1_test_3_rel_path_1: CoverageLines.from_list([2, 2])}) api.CITest.mark_itr_skipped(suite_1_test_3_id) # api.CITest.start(suite_1_test_3_retry_1_id) @@ -200,10 +201,10 @@ def main(): api.CITest.add_coverage_data( suite_1_id, { - Path("my_file_1.py"): [(1, 3), (4, 8), (9, 9)], - Path("my/other/path/my_file_2.py"): [(1, 9), (10, 10000000)], - Path("my_abs_file_3.py").absolute(): [(1, 1)], - Path("my_rel_file_3.py"): [(1, 1), (3, 6), (79, 97)], + Path("my_file_1.py"): CoverageLines.from_list([1, 2, 3, 4, 8, 9]), + Path("my/other/path/my_file_2.py"): CoverageLines.from_list([1] + [9] + list(range(10, 101))), + Path("my_abs_file_3.py").absolute(): CoverageLines.from_list([1]), + Path("my_rel_file_3.py"): CoverageLines.from_list([1, 3, 4, 5, 6] + list(range(79, 98))), }, ) api.CITest.mark_pass(suite_1_test_3_retry_3_id) @@ -290,10 +291,10 @@ def main(): api.CITest.add_coverage_data( suite_2_id, { - suite_2_test_2_parametrized_5_abs_path_1: [(1, 3), (2, 6), (10, 12)], - suite_2_test_2_parametrized_5_abs_path_2: [(1, 3), (2, 6), (10, 12)], - suite_2_test_2_parametrized_5_rel_path_1: [(1, 2)], - suite_2_test_2_parametrized_5_rel_path_2: [(3, 3)], + suite_2_test_2_parametrized_5_abs_path_1: CoverageLines.from_list([1, 2, 3, 4, 5, 6, 10, 11, 12]), + suite_2_test_2_parametrized_5_abs_path_2: CoverageLines.from_list([1, 2, 3, 4, 5, 6, 10, 11, 12]), + suite_2_test_2_parametrized_5_rel_path_1: CoverageLines.from_list([1, 2]), + suite_2_test_2_parametrized_5_rel_path_2: CoverageLines.from_list([3]), }, ) @@ -311,10 +312,12 @@ def main(): api.CITest.add_coverage_data( suite_3_id, { - Path("my_file_suite_3_1.py"): [(1, 3), (4, 8), (9, 9)], - Path("my/other/path/my_file_suite_3_2.py"): [(1, 9), (10, 10000000)], - Path("my_abs_file_suite_3_3.py").absolute(): [(1, 1)], - Path("my_rel_file_suite_3_3.py"): [(1, 1), (3, 6), (79, 97)], + Path("my_file_suite_3_1.py"): CoverageLines.from_list([1, 2, 3, 4, 5, 6, 7, 8, 9]), + Path("my/other/path/my_file_suite_3_2.py"): CoverageLines.from_list( + list(range(1, 10)) + list(range(10, 101)) + ), + Path("my_abs_file_suite_3_3.py").absolute(): CoverageLines.from_list([1]), + Path("my_rel_file_suite_3_3.py"): CoverageLines.from_list([1, 3, 4, 5, 6] + list(range(79, 98))), }, ) api.CITest.mark_pass(suite_3_test_1_id) @@ -335,10 +338,10 @@ def main(): api.CITest.add_coverage_data( suite_3_id, { - suite_2_test_2_parametrized_5_abs_path_1: [(1, 3), (2, 6), (10, 12)], - suite_2_test_2_parametrized_5_abs_path_2: [(1, 3), (2, 6), (10, 12)], - suite_2_test_2_parametrized_5_rel_path_1: [(1, 2)], - suite_2_test_2_parametrized_5_rel_path_2: [(3, 3)], + suite_2_test_2_parametrized_5_abs_path_1: CoverageLines.from_list([1, 2, 3, 4, 5, 6, 10, 11, 12]), + suite_2_test_2_parametrized_5_abs_path_2: CoverageLines.from_list([1, 2, 3, 4, 5, 6, 10, 11, 12]), + suite_2_test_2_parametrized_5_rel_path_1: CoverageLines.from_list([1, 2]), + suite_2_test_2_parametrized_5_rel_path_2: CoverageLines.from_list([3, 3]), }, ) diff --git a/tests/ci_visibility/api/fake_runner_mix_fail_itr_test_level.py b/tests/ci_visibility/api/fake_runner_mix_fail_itr_test_level.py index 40a0fa427fa..6c386014277 100644 --- a/tests/ci_visibility/api/fake_runner_mix_fail_itr_test_level.py +++ b/tests/ci_visibility/api/fake_runner_mix_fail_itr_test_level.py @@ -23,6 +23,7 @@ from ddtrace.ext.ci_visibility import api from ddtrace.internal.ci_visibility.utils import take_over_logger_stream_handler +from ddtrace.internal.coverage.lines import CoverageLines def _make_excinfo(): @@ -165,7 +166,9 @@ def main(): # # suite_1_test_1 test api.CITest.start(suite_1_test_1_id) - api.CITest.add_coverage_data(suite_1_test_1_id, {Path("my_file_1.py"): [(1, 3), (4, 8), (9, 9)]}) + api.CITest.add_coverage_data( + suite_1_test_1_id, {Path("my_file_1.py"): CoverageLines.from_list([1, 2, 3, 4, 5, 6, 7, 8, 9])} + ) api.CITest.mark_pass(suite_1_test_1_id) # @@ -175,8 +178,8 @@ def main(): api.CITest.add_coverage_data( suite_1_test_2_id, { - Path("my_file_1.py"): [(1, 3), (4, 8), (9, 9)], - Path("my/other/path/my_file_2.py"): [(1, 9), (10, 10000000)], + Path("my_file_1.py"): CoverageLines.from_list([1, 2, 3, 4, 5, 6, 7, 8, 9]), + Path("my/other/path/my_file_2.py"): CoverageLines.from_list(list(range(1, 10)) + list(range(10, 101))), }, ) api.CITest.mark_skip(suite_1_test_2_id) @@ -185,9 +188,11 @@ def main(): # suite_1_test_3 test and EFD retries api.CITest.start(suite_1_test_3_id) suite_1_test_3_abs_path_1 = Path("my_abs_file_3.py").absolute() - api.CITest.add_coverage_data(suite_1_test_3_id, {suite_1_test_3_abs_path_1: [(1, 3), (4, 8), (9, 9)]}) + api.CITest.add_coverage_data( + suite_1_test_3_id, {suite_1_test_3_abs_path_1: CoverageLines.from_list([1, 2, 3, 4, 8, 9])} + ) suite_1_test_3_rel_path_1 = Path("my_rel_file_3.py") - api.CITest.add_coverage_data(suite_1_test_3_id, {suite_1_test_3_rel_path_1: [(2, 2)]}) + api.CITest.add_coverage_data(suite_1_test_3_id, {suite_1_test_3_rel_path_1: CoverageLines.from_list([2])}) api.CITest.mark_itr_skipped(suite_1_test_3_id) # api.CITest.start(suite_1_test_3_retry_1_id) @@ -200,10 +205,10 @@ def main(): api.CITest.add_coverage_data( suite_1_test_2_id, { - Path("my_file_1.py"): [(1, 3), (4, 8), (9, 9)], - Path("my/other/path/my_file_2.py"): [(1, 9), (10, 10000000)], - Path("my_abs_file_3.py").absolute(): [(1, 1)], - Path("my_rel_file_3.py"): [(1, 1), (3, 6), (79, 97)], + Path("my_file_1.py"): CoverageLines.from_list([1, 2, 3, 4, 5, 6, 7, 8, 9]), + Path("my/other/path/my_file_2.py"): CoverageLines.from_list(list(range(1, 10)) + list(range(10, 101))), + Path("my_abs_file_3.py").absolute(): CoverageLines.from_list([1]), + Path("my_rel_file_3.py"): CoverageLines.from_list([1, 3, 4, 5, 6] + list(range(79, 98))), }, ) api.CITest.mark_pass(suite_1_test_3_retry_3_id) @@ -279,10 +284,10 @@ def main(): api.CITest.add_coverage_data( suite_2_test_2_parametrized_5_id, { - suite_2_test_2_parametrized_5_abs_path_1: [(1, 3), (2, 6), (10, 12)], - suite_2_test_2_parametrized_5_abs_path_2: [(1, 3), (2, 6), (10, 12)], - suite_2_test_2_parametrized_5_rel_path_1: [(1, 2)], - suite_2_test_2_parametrized_5_rel_path_2: [(3, 3)], + suite_2_test_2_parametrized_5_abs_path_1: CoverageLines.from_list([1, 2, 3, 4, 5, 6, 10, 11, 12]), + suite_2_test_2_parametrized_5_abs_path_2: CoverageLines.from_list([1, 2, 3, 4, 5, 6, 10, 11, 12]), + suite_2_test_2_parametrized_5_rel_path_1: CoverageLines.from_list([1, 2]), + suite_2_test_2_parametrized_5_rel_path_2: CoverageLines.from_list([3]), }, ) api.CITest.mark_pass(suite_2_test_2_parametrized_5_id) diff --git a/tests/contrib/pytest/test_coverage_per_suite.py b/tests/contrib/pytest/test_coverage_per_suite.py index 4748894c700..b9644dc48c2 100644 --- a/tests/contrib/pytest/test_coverage_per_suite.py +++ b/tests/contrib/pytest/test_coverage_per_suite.py @@ -10,11 +10,45 @@ from ddtrace.internal.ci_visibility import CIVisibility from ddtrace.internal.ci_visibility.constants import COVERAGE_TAG_NAME from ddtrace.internal.ci_visibility.recorder import _CIVisibilitySettings +from ddtrace.internal.compat import PYTHON_VERSION_INFO +from ddtrace.internal.coverage.lines import CoverageLines +from ddtrace.internal.coverage.util import collapse_ranges from tests.ci_visibility.util import _patch_dummy_writer from tests.utils import TracerTestCase from tests.utils import override_env +# TODO: investigate why pytest 3.7 does not mark the decorated function line when skipped as covered +_DONT_COVER_SKIPPED_FUNC_LINE = PYTHON_VERSION_INFO <= (3, 8, 0) + + +def _get_tuples_from_bytearray(bitmap): + coverage_lines = CoverageLines() + coverage_lines._lines = bitmap + return collapse_ranges(coverage_lines.to_sorted_list()) + + +def _get_tuples_from_segments(segments): + return list((segment[0], segment[2]) for segment in segments) + + +def _get_span_coverage_data(span, use_plugin_v2=False): + """Returns an abstracted view of the coverage data from the span that is independent of the coverage format.""" + if use_plugin_v2: + tag_data = span.get_struct_tag(COVERAGE_TAG_NAME) + assert tag_data is not None, f"Coverage data not found in span {span}" + return { + file_data["filename"]: _get_tuples_from_bytearray(file_data["bitmap"]) for file_data in tag_data["files"] + } + + else: + # This will raise an exception and the test will fail if the tag is not found + tag_data = json.loads(span.get_tag(COVERAGE_TAG_NAME)) + return { + file_data["filename"]: _get_tuples_from_segments(file_data["segments"]) for file_data in tag_data["files"] + } + + class PytestTestCase(TracerTestCase): @pytest.fixture(autouse=True) def fixtures(self, testdir, monkeypatch, git_repo): @@ -125,65 +159,56 @@ def test_second(): test_suite_spans = [span for span in spans if span.get_tag("type") == "test_suite_end"] first_suite_span = test_suite_spans[0] assert first_suite_span.get_tag("type") == "test_suite_end" - assert COVERAGE_TAG_NAME in first_suite_span.get_tags() - tag_data = json.loads(first_suite_span.get_tag(COVERAGE_TAG_NAME)) - files = sorted(tag_data["files"], key=lambda x: x["filename"]) - - assert len(files) == 3 - - assert files[2]["filename"] == "test_cov.py" - - if _USE_PLUGIN_V2: - # This array is too long to store here, and this is temporary pending the rewrite of coverage format to - # byte arrays - pass - else: - assert len(files[2]["segments"]) == (55 if _USE_PLUGIN_V2 else 5) - assert files[2]["segments"][0] == [5, 0, 5, 0, -1] - assert files[2]["segments"][1] == [8, 0, 9, 0, -1] - assert files[2]["segments"][2] == [12, 0, 13, 0, -1] - assert files[2]["segments"][3] == [21, 0, 22, 0, -1] - assert files[2]["segments"][4] == [35, 0, 36, 0, -1] - - assert files[0]["filename"] == "lib_fn.py" - assert len(files[0]["segments"]) == (5 if _USE_PLUGIN_V2 else 1) + first_suite_coverage = _get_span_coverage_data(first_suite_span, _USE_PLUGIN_V2) + assert len(first_suite_coverage) == 3 if _USE_PLUGIN_V2: - assert files[0]["segments"] == [ - [1, 0, 2, 0, -1], - [1, 0, 1, 0, -1], - [1, 0, 1, 0, -1], - [1, 0, 1, 0, -1], - [1, 0, 1, 0, -1], - ] - else: - assert files[0]["segments"][0] == [2, 0, 2, 0, -1] - - assert files[1]["filename"] == "ret_false.py" - assert len(files[1]["segments"]) == (4 if _USE_PLUGIN_V2 else 1) + if _DONT_COVER_SKIPPED_FUNC_LINE: + assert first_suite_coverage["/test_cov.py"] == [ + (1, 2), + (4, 5), + (7, 9), + (11, 13), + (16, 16), + (20, 22), + (24, 24), + (28, 31), + (33, 33), + (35, 36), + (39, 42), + (44, 44), + ] + else: + assert first_suite_coverage["/test_cov.py"] == [ + (1, 2), + (4, 5), + (7, 9), + (11, 13), + (16, 17), + (20, 22), + (24, 25), + (28, 31), + (33, 36), + (39, 42), + (44, 45), + ] + assert first_suite_coverage["/lib_fn.py"] == [(1, 2)] + assert first_suite_coverage["/ret_false.py"] == [(1, 2)] - if _USE_PLUGIN_V2: - assert files[1]["segments"] == [[1, 0, 2, 0, -1], [1, 0, 1, 0, -1], [1, 0, 1, 0, -1], [1, 0, 1, 0, -1]] else: - assert files[1]["segments"][0] == [1, 0, 2, 0, -1] + assert first_suite_coverage["test_cov.py"] == [(5, 5), (8, 9), (12, 13), (21, 22), (35, 36)] + assert first_suite_coverage["lib_fn.py"] == [(2, 2)] + assert first_suite_coverage["ret_false.py"] == [(1, 2)] second_suite_span = test_suite_spans[-1] assert second_suite_span.get_tag("type") == "test_suite_end" - assert COVERAGE_TAG_NAME in second_suite_span.get_tags() - tag_data = json.loads(second_suite_span.get_tag(COVERAGE_TAG_NAME)) - files = sorted(tag_data["files"], key=lambda x: x["filename"]) - assert len(files) == 2 - assert files[1]["filename"] == "test_cov_second.py" - assert files[0]["filename"] == "ret_false.py" - assert len(files[1]["segments"]) == (2 if _USE_PLUGIN_V2 else 1) + second_suite_coverage = _get_span_coverage_data(second_suite_span, _USE_PLUGIN_V2) + assert len(second_suite_coverage) == 2 if _USE_PLUGIN_V2: - assert files[1]["segments"] == [[1, 0, 1, 0, -1], [3, 0, 5, 0, -1]] + assert second_suite_coverage["/test_cov_second.py"] == [(1, 1), (3, 5)] + assert second_suite_coverage["/ret_false.py"] == [(1, 2)] else: - assert files[1]["segments"][0] == [4, 0, 5, 0, -1] - assert len(files[0]["segments"]) == 1 - if _USE_PLUGIN_V2: - assert files[0]["segments"] == [[1, 0, 2, 0, -1]] - else: - assert files[0]["segments"][0] == [2, 0, 2, 0, -1] + assert second_suite_coverage["test_cov_second.py"] == [(4, 5)] + assert second_suite_coverage["ret_false.py"] == [(2, 2)] def test_pytest_will_report_coverage_by_suite_with_itr_skipped(self): self.testdir.makepyfile( @@ -252,38 +277,20 @@ def test_second(): test_suite_spans = [span for span in spans if span.get_tag("type") == "test_suite_end"] first_suite_span = test_suite_spans[0] assert first_suite_span.get_tag("type") == "test_suite_end" - assert COVERAGE_TAG_NAME in first_suite_span.get_tags() - tag_data = json.loads(first_suite_span.get_tag(COVERAGE_TAG_NAME)) - files = sorted(tag_data["files"], key=lambda x: x["filename"]) - - assert len(files) == 3 + second_suite_span = test_suite_spans[1] + assert second_suite_span.get_tag("type") == "test_suite_end" - assert files[2]["filename"] == "test_cov.py" - assert len(files[2]["segments"]) == (6 if _USE_PLUGIN_V2 else 2) - if _USE_PLUGIN_V2: - assert files[2]["segments"] == [ - [1, 0, 2, 0, -1], - [4, 0, 5, 0, -1], - [7, 0, 7, 0, -1], - [1, 0, 2, 0, -1], - [4, 0, 4, 0, -1], - [7, 0, 9, 0, -1], - ] - else: - assert files[2]["segments"][0] == [5, 0, 5, 0, -1] - assert files[2]["segments"][1] == [8, 0, 9, 0, -1] + first_suite_coverage = _get_span_coverage_data(first_suite_span, _USE_PLUGIN_V2) - assert files[0]["filename"] == "lib_fn.py" - assert len(files[0]["segments"]) == (2 if _USE_PLUGIN_V2 else 1) if _USE_PLUGIN_V2: - assert files[0]["segments"] == [[1, 0, 2, 0, -1], [1, 0, 1, 0, -1]] + assert len(first_suite_coverage) == 3 + assert first_suite_coverage["/test_cov.py"] == [(1, 2), (4, 5), (7, 9)] + assert first_suite_coverage["/lib_fn.py"] == [(1, 2)] + assert first_suite_coverage["/ret_false.py"] == [(1, 2)] + assert second_suite_span.get_struct_tag(COVERAGE_TAG_NAME) is None else: - assert files[0]["segments"][0] == [2, 0, 2, 0, -1] - - assert files[1]["filename"] == "ret_false.py" - assert len(files[1]["segments"]) == 1 - assert files[1]["segments"][0] == [1, 0, 2, 0, -1] - - second_suite_span = test_suite_spans[1] - assert second_suite_span.get_tag("type") == "test_suite_end" - assert COVERAGE_TAG_NAME not in second_suite_span.get_tags() + assert len(first_suite_coverage) == 3 + assert first_suite_coverage["test_cov.py"] == [(5, 5), (8, 9)] + assert first_suite_coverage["lib_fn.py"] == [(2, 2)] + assert first_suite_coverage["ret_false.py"] == [(1, 2)] + assert COVERAGE_TAG_NAME not in second_suite_span.get_tags() diff --git a/tests/coverage/test_coverage_multiprocessing.py b/tests/coverage/test_coverage_multiprocessing.py index 97a44590e48..2913df2e32e 100644 --- a/tests/coverage/test_coverage_multiprocessing.py +++ b/tests/coverage/test_coverage_multiprocessing.py @@ -102,6 +102,7 @@ def test_coverage_multiprocessing_session(): from ddtrace.internal.coverage.code import ModuleCodeCollector from ddtrace.internal.coverage.installer import install + from tests.coverage.utils import _get_relpath_dict cwd = os.getcwd() @@ -117,11 +118,11 @@ def test_coverage_multiprocessing_session(): ModuleCodeCollector.stop_coverage() - covered_lines = dict(ModuleCodeCollector._instance._get_covered_lines()) + covered_lines = _get_relpath_dict(cwd, ModuleCodeCollector._instance._get_covered_lines()) expected_lines = { - f"{cwd}/tests/coverage/included_path/callee.py": {1, 2, 3, 5, 6, 9, 17}, - f"{cwd}/tests/coverage/included_path/lib.py": {1, 2, 5}, + "tests/coverage/included_path/callee.py": {1, 2, 3, 5, 6, 9, 17}, + "tests/coverage/included_path/lib.py": {1, 2, 5}, } if expected_lines != covered_lines: @@ -141,6 +142,7 @@ def test_coverage_multiprocessing_context(): from ddtrace.internal.coverage.code import ModuleCodeCollector from ddtrace.internal.coverage.installer import install + from tests.coverage.utils import _get_relpath_dict cwd = os.getcwd() @@ -158,11 +160,11 @@ def test_coverage_multiprocessing_context(): process.start() process.join() - context_covered = dict(context_collector.get_covered_lines()) + context_covered = _get_relpath_dict(cwd, context_collector.get_covered_lines()) expected_lines = { - f"{cwd}/tests/coverage/included_path/callee.py": {10, 11, 13, 14}, - f"{cwd}/tests/coverage/included_path/in_context_lib.py": {1, 2, 5}, + "tests/coverage/included_path/callee.py": {10, 11, 13, 14}, + "tests/coverage/included_path/in_context_lib.py": {1, 2, 5}, } assert expected_lines == context_covered, f"Mismatched lines: {expected_lines} vs {context_covered}" @@ -185,6 +187,7 @@ def test_coverage_concurrent_futures_processpool_session(): from ddtrace.internal.coverage.code import ModuleCodeCollector from ddtrace.internal.coverage.installer import install + from tests.coverage.utils import _get_relpath_dict cwd = os.getcwd() @@ -200,11 +203,11 @@ def test_coverage_concurrent_futures_processpool_session(): ModuleCodeCollector.stop_coverage() - covered_lines = dict(ModuleCodeCollector._instance._get_covered_lines()) + covered_lines = _get_relpath_dict(cwd, ModuleCodeCollector._instance._get_covered_lines()) expected_lines = { - f"{cwd}/tests/coverage/included_path/callee.py": {1, 2, 3, 5, 6, 9, 17}, - f"{cwd}/tests/coverage/included_path/lib.py": {1, 2, 5}, + "tests/coverage/included_path/callee.py": {1, 2, 3, 5, 6, 9, 17}, + "tests/coverage/included_path/lib.py": {1, 2, 5}, } if expected_lines != covered_lines: @@ -226,6 +229,7 @@ def test_coverage_concurrent_futures_processpool_context(): from ddtrace.internal.coverage.code import ModuleCodeCollector from ddtrace.internal.coverage.installer import install + from tests.coverage.utils import _get_relpath_dict cwd = os.getcwd() @@ -243,16 +247,16 @@ def test_coverage_concurrent_futures_processpool_context(): future = executor.submit(called_in_context_main, 1, 2) future.result() - context_covered = dict(context_collector.get_covered_lines()) + context_covered = _get_relpath_dict(cwd, context_collector.get_covered_lines()) expected_lines = { - f"{cwd}/tests/coverage/included_path/callee.py": {10, 11, 13, 14}, - f"{cwd}/tests/coverage/included_path/in_context_lib.py": {1, 2, 5}, + "tests/coverage/included_path/callee.py": {10, 11, 13, 14}, + "tests/coverage/included_path/in_context_lib.py": {1, 2, 5}, } if os.environ["start_method"] != "fork": # In spawn or forkserver modes, the module is reimported entirely - expected_lines[f"{cwd}/tests/coverage/included_path/callee.py"] = {1, 9, 10, 11, 13, 14, 17} + expected_lines["tests/coverage/included_path/callee.py"] = {1, 9, 10, 11, 13, 14, 17} assert expected_lines == context_covered, f"Mismatched lines: {expected_lines} vs {context_covered}" diff --git a/tests/coverage/test_coverage_threading.py b/tests/coverage/test_coverage_threading.py index 7ddf09671a0..93ecc7e7dbb 100644 --- a/tests/coverage/test_coverage_threading.py +++ b/tests/coverage/test_coverage_threading.py @@ -9,6 +9,7 @@ def test_coverage_threading_session(): from ddtrace.internal.coverage.code import ModuleCodeCollector from ddtrace.internal.coverage.installer import install + from tests.coverage.utils import _get_relpath_dict cwd = os.getcwd() @@ -24,11 +25,11 @@ def test_coverage_threading_session(): ModuleCodeCollector.stop_coverage() - covered_lines = dict(ModuleCodeCollector._instance._get_covered_lines()) + covered_lines = _get_relpath_dict(cwd, ModuleCodeCollector._instance._get_covered_lines()) expected_lines = { - f"{cwd}/tests/coverage/included_path/callee.py": {1, 2, 3, 5, 6, 9, 17}, - f"{cwd}/tests/coverage/included_path/lib.py": {1, 2, 5}, + "tests/coverage/included_path/callee.py": {1, 2, 3, 5, 6, 9, 17}, + "tests/coverage/included_path/lib.py": {1, 2, 5}, } if expected_lines != covered_lines: @@ -44,6 +45,7 @@ def test_coverage_threading_context(): from ddtrace.internal.coverage.code import ModuleCodeCollector from ddtrace.internal.coverage.installer import install + from tests.coverage.utils import _get_relpath_dict cwd = os.getcwd() @@ -61,11 +63,11 @@ def test_coverage_threading_context(): thread.start() thread.join() - context_covered = dict(context_collector.get_covered_lines()) + context_covered = _get_relpath_dict(cwd, context_collector.get_covered_lines()) expected_lines = { - f"{cwd}/tests/coverage/included_path/callee.py": {10, 11, 13, 14}, - f"{cwd}/tests/coverage/included_path/in_context_lib.py": {1, 2, 5}, + "tests/coverage/included_path/callee.py": {10, 11, 13, 14}, + "tests/coverage/included_path/in_context_lib.py": {1, 2, 5}, } assert expected_lines == context_covered, f"Mismatched lines: {expected_lines} vs {context_covered}" @@ -82,6 +84,7 @@ def test_coverage_concurrent_futures_threadpool_session(): from ddtrace.internal.coverage.code import ModuleCodeCollector from ddtrace.internal.coverage.installer import install + from tests.coverage.utils import _get_relpath_dict cwd = os.getcwd() @@ -97,11 +100,11 @@ def test_coverage_concurrent_futures_threadpool_session(): ModuleCodeCollector.stop_coverage() - covered_lines = dict(ModuleCodeCollector._instance._get_covered_lines()) + covered_lines = _get_relpath_dict(cwd, ModuleCodeCollector._instance._get_covered_lines()) expected_lines = { - f"{cwd}/tests/coverage/included_path/callee.py": {1, 2, 3, 5, 6, 9, 17}, - f"{cwd}/tests/coverage/included_path/lib.py": {1, 2, 5}, + "tests/coverage/included_path/callee.py": {1, 2, 3, 5, 6, 9, 17}, + "tests/coverage/included_path/lib.py": {1, 2, 5}, } if expected_lines != covered_lines: @@ -117,6 +120,7 @@ def test_coverage_concurrent_futures_threadpool_context(): from ddtrace.internal.coverage.code import ModuleCodeCollector from ddtrace.internal.coverage.installer import install + from tests.coverage.utils import _get_relpath_dict cwd = os.getcwd() @@ -134,11 +138,11 @@ def test_coverage_concurrent_futures_threadpool_context(): future = executor.submit(called_in_context_main, 1, 2) future.result() - context_covered = dict(context_collector.get_covered_lines()) + context_covered = _get_relpath_dict(cwd, context_collector.get_covered_lines()) expected_lines = { - f"{cwd}/tests/coverage/included_path/callee.py": {10, 11, 13, 14}, - f"{cwd}/tests/coverage/included_path/in_context_lib.py": {1, 2, 5}, + "tests/coverage/included_path/callee.py": {10, 11, 13, 14}, + "tests/coverage/included_path/in_context_lib.py": {1, 2, 5}, } assert expected_lines == context_covered, f"Mismatched lines: {expected_lines} vs {context_covered}" diff --git a/tests/coverage/utils.py b/tests/coverage/utils.py index b283822858c..13b2c979c1c 100644 --- a/tests/coverage/utils.py +++ b/tests/coverage/utils.py @@ -12,4 +12,11 @@ def _get_relpath_dict(rootpath: str, dict_to_update: dict): """Expects a dictionary of path strings to anything and returns an identical dictionary with the keys changed to relative path strings """ - return {_get_relpath_str(Path(rootpath), Path(path)): lines for path, lines in dict_to_update.items()} + return { + _get_relpath_str(Path(rootpath), Path(path)): set(lines.to_sorted_list()) + for path, lines in dict_to_update.items() + } + + +def _get_lines_set_from_coverage_lines(): + """Convenience function to extract the set of lines from a CoverageLines object""" diff --git a/tests/snapshots/test_api_fake_runners.test_manual_api_fake_runner_all_itr_skip_suite_level.json b/tests/snapshots/test_api_fake_runners.test_manual_api_fake_runner_all_itr_skip_suite_level.json index fd9c585cd4b..8566fa77219 100644 --- a/tests/snapshots/test_api_fake_runners.test_manual_api_fake_runner_all_itr_skip_suite_level.json +++ b/tests/snapshots/test_api_fake_runners.test_manual_api_fake_runner_all_itr_skip_suite_level.json @@ -12,15 +12,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653400000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_suite_level0", + "_dd.p.tid": "66c6e97c00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f0ca924bb3e9454fac76ae86273cd9c0", + "runtime-id": "7a37e03fbf474043909bc2d72b1017e6", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -37,9 +37,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_1", - "test_module_id": "3125979931627335240", - "test_session_id": "4486897983980669357", - "test_suite_id": "17360288809654863735", + "test_module_id": "9311224518987898403", + "test_session_id": "9960078110919642242", + "test_suite_id": "17278295171335698528", "type": "test" }, "metrics": { @@ -47,12 +47,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 81974, + "process_id": 23418, "test.source.end": 2, "test.source.start": 1 }, - "duration": 88417, - "start": 1723819316523495128 + "duration": 115542, + "start": 1724311932331144126 }], [ { @@ -68,15 +68,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653400000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_suite_level0", + "_dd.p.tid": "66c6e97c00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f0ca924bb3e9454fac76ae86273cd9c0", + "runtime-id": "7a37e03fbf474043909bc2d72b1017e6", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -92,9 +92,9 @@ "test.skipped_by_itr": "true", "test.status": "skip", "test.suite": "suite_1", - "test_module_id": "3125979931627335240", - "test_session_id": "4486897983980669357", - "test_suite_id": "17360288809654863735", + "test_module_id": "9311224518987898403", + "test_session_id": "9960078110919642242", + "test_suite_id": "17278295171335698528", "type": "test" }, "metrics": { @@ -102,10 +102,10 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 81974 + "process_id": 23418 }, - "duration": 46625, - "start": 1723819316524054378 + "duration": 72416, + "start": 1724311932331773460 }], [ { @@ -121,15 +121,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653400000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_suite_level0", + "_dd.p.tid": "66c6e97c00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f0ca924bb3e9454fac76ae86273cd9c0", + "runtime-id": "7a37e03fbf474043909bc2d72b1017e6", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -147,9 +147,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_1", - "test_module_id": "3125979931627335240", - "test_session_id": "4486897983980669357", - "test_suite_id": "17360288809654863735", + "test_module_id": "9311224518987898403", + "test_session_id": "9960078110919642242", + "test_suite_id": "17278295171335698528", "type": "test" }, "metrics": { @@ -157,12 +157,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 81974, + "process_id": 23418, "test.source.end": 12, "test.source.start": 4 }, - "duration": 65500, - "start": 1723819316524163003 + "duration": 76542, + "start": 1724311932331935626 }], [ { @@ -178,15 +178,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653400000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_suite_level0", + "_dd.p.tid": "66c6e97c00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f0ca924bb3e9454fac76ae86273cd9c0", + "runtime-id": "7a37e03fbf474043909bc2d72b1017e6", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -204,9 +204,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_1", - "test_module_id": "3125979931627335240", - "test_session_id": "4486897983980669357", - "test_suite_id": "17360288809654863735", + "test_module_id": "9311224518987898403", + "test_session_id": "9960078110919642242", + "test_suite_id": "17278295171335698528", "type": "test" }, "metrics": { @@ -214,12 +214,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 81974, + "process_id": 23418, "test.source.end": 12, "test.source.start": 4 }, - "duration": 51250, - "start": 1723819316524281086 + "duration": 58167, + "start": 1724311932332070293 }], [ { @@ -235,15 +235,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653400000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_suite_level0", + "_dd.p.tid": "66c6e97c00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f0ca924bb3e9454fac76ae86273cd9c0", + "runtime-id": "7a37e03fbf474043909bc2d72b1017e6", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -261,9 +261,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_1", - "test_module_id": "3125979931627335240", - "test_session_id": "4486897983980669357", - "test_suite_id": "17360288809654863735", + "test_module_id": "9311224518987898403", + "test_session_id": "9960078110919642242", + "test_suite_id": "17278295171335698528", "type": "test" }, "metrics": { @@ -271,12 +271,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 81974, + "process_id": 23418, "test.source.end": 12, "test.source.start": 4 }, - "duration": 52000, - "start": 1723819316524382586 + "duration": 73875, + "start": 1724311932332182793 }], [ { @@ -292,15 +292,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653400000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_suite_level0", + "_dd.p.tid": "66c6e97c00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f0ca924bb3e9454fac76ae86273cd9c0", + "runtime-id": "7a37e03fbf474043909bc2d72b1017e6", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -318,9 +318,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_1", - "test_module_id": "3125979931627335240", - "test_session_id": "4486897983980669357", - "test_suite_id": "17360288809654863735", + "test_module_id": "9311224518987898403", + "test_session_id": "9960078110919642242", + "test_suite_id": "17278295171335698528", "type": "test" }, "metrics": { @@ -328,12 +328,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 81974, + "process_id": 23418, "test.source.end": 12, "test.source.start": 4 }, - "duration": 48875, - "start": 1723819316524482920 + "duration": 50917, + "start": 1724311932332310918 }], [ { @@ -350,15 +350,15 @@ "_dd.ci.itr.tests_skipped": "true", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653400000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_suite_level0", + "_dd.p.tid": "66c6e97c00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f0ca924bb3e9454fac76ae86273cd9c0", + "runtime-id": "7a37e03fbf474043909bc2d72b1017e6", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -373,7 +373,7 @@ "test.itr.unskippable": "false", "test.skipped_by_itr": "true", "test.status": "skip", - "test_session_id": "4486897983980669357", + "test_session_id": "9960078110919642242", "type": "test_session_end" }, "metrics": { @@ -381,11 +381,11 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 81974, + "process_id": 23418, "test.itr.tests_skipping.count": 2 }, - "duration": 2149792, - "start": 1723819316523393753 + "duration": 2418708, + "start": 1724311932330992210 }, { "name": "ci_visibility.module", @@ -401,11 +401,11 @@ "_dd.ci.itr.tests_skipped": "true", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653400000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_suite_level0", + "_dd.p.tid": "66c6e97c00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -425,8 +425,8 @@ "test.module_path": "", "test.skipped_by_itr": "true", "test.status": "skip", - "test_module_id": "3125979931627335240", - "test_session_id": "4486897983980669357", + "test_module_id": "9311224518987898403", + "test_session_id": "9960078110919642242", "type": "test_module_end" }, "metrics": { @@ -435,8 +435,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 1 }, - "duration": 1245958, - "start": 1723819316523446003 + "duration": 1502791, + "start": 1724311932331039710 }, { "name": "ci_visibility.suite", @@ -451,11 +451,11 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653400000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_suite_level0", + "_dd.p.tid": "66c6e97c00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -474,9 +474,9 @@ "test.skipped_by_itr": "true", "test.status": "skip", "test.suite": "suite_1", - "test_module_id": "3125979931627335240", - "test_session_id": "4486897983980669357", - "test_suite_id": "17360288809654863735", + "test_module_id": "9311224518987898403", + "test_session_id": "9960078110919642242", + "test_suite_id": "17278295171335698528", "type": "test_suite_end" }, "metrics": { @@ -485,8 +485,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 1 }, - "duration": 1147625, - "start": 1723819316523470420 + "duration": 1395583, + "start": 1724311932331064793 }, { "name": "ci_visibility.module", @@ -502,11 +502,11 @@ "_dd.ci.itr.tests_skipped": "true", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653400000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_suite_level0", + "_dd.p.tid": "66c6e97c00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -526,8 +526,8 @@ "test.module_path": "", "test.skipped_by_itr": "true", "test.status": "skip", - "test_module_id": "18407375889356992010", - "test_session_id": "4486897983980669357", + "test_module_id": "10340812960793613022", + "test_session_id": "9960078110919642242", "type": "test_module_end" }, "metrics": { @@ -536,8 +536,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 1 }, - "duration": 735458, - "start": 1723819316524733045 + "duration": 747709, + "start": 1724311932332583251 }, { "name": "ci_visibility.suite", @@ -552,11 +552,11 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653400000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_suite_level0", + "_dd.p.tid": "66c6e97c00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -575,9 +575,9 @@ "test.skipped_by_itr": "true", "test.status": "skip", "test.suite": "suite_2", - "test_module_id": "18407375889356992010", - "test_session_id": "4486897983980669357", - "test_suite_id": "17346575293357844947", + "test_module_id": "10340812960793613022", + "test_session_id": "9960078110919642242", + "test_suite_id": "1796246485677819899", "type": "test_suite_end" }, "metrics": { @@ -586,8 +586,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 1 }, - "duration": 651084, - "start": 1723819316524754211 + "duration": 660875, + "start": 1724311932332607668 }], [ { @@ -603,15 +603,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653400000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_suite_level0", + "_dd.p.tid": "66c6e97c00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f0ca924bb3e9454fac76ae86273cd9c0", + "runtime-id": "7a37e03fbf474043909bc2d72b1017e6", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -628,9 +628,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_2", - "test_module_id": "18407375889356992010", - "test_session_id": "4486897983980669357", - "test_suite_id": "17346575293357844947", + "test_module_id": "10340812960793613022", + "test_session_id": "9960078110919642242", + "test_suite_id": "1796246485677819899", "type": "test" }, "metrics": { @@ -638,12 +638,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 81974, + "process_id": 23418, "test.source.end": 2, "test.source.start": 1 }, - "duration": 50166, - "start": 1723819316524774920 + "duration": 48875, + "start": 1724311932332627001 }], [ { @@ -659,15 +659,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653400000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_suite_level0", + "_dd.p.tid": "66c6e97c00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f0ca924bb3e9454fac76ae86273cd9c0", + "runtime-id": "7a37e03fbf474043909bc2d72b1017e6", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -683,9 +683,9 @@ "test.skipped_by_itr": "true", "test.status": "skip", "test.suite": "suite_2", - "test_module_id": "18407375889356992010", - "test_session_id": "4486897983980669357", - "test_suite_id": "17346575293357844947", + "test_module_id": "10340812960793613022", + "test_session_id": "9960078110919642242", + "test_suite_id": "1796246485677819899", "type": "test" }, "metrics": { @@ -693,10 +693,10 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 81974 + "process_id": 23418 }, - "duration": 36583, - "start": 1723819316524877545 + "duration": 35125, + "start": 1724311932332728501 }], [ { @@ -712,15 +712,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653400000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_suite_level0", + "_dd.p.tid": "66c6e97c00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f0ca924bb3e9454fac76ae86273cd9c0", + "runtime-id": "7a37e03fbf474043909bc2d72b1017e6", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -738,9 +738,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_2", - "test_module_id": "18407375889356992010", - "test_session_id": "4486897983980669357", - "test_suite_id": "17346575293357844947", + "test_module_id": "10340812960793613022", + "test_session_id": "9960078110919642242", + "test_suite_id": "1796246485677819899", "type": "test" }, "metrics": { @@ -748,12 +748,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 81974, + "process_id": 23418, "test.source.end": 12, "test.source.start": 4 }, - "duration": 60250, - "start": 1723819316524963628 + "duration": 51334, + "start": 1724311932332814376 }], [ { @@ -769,15 +769,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653400000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_suite_level0", + "_dd.p.tid": "66c6e97c00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f0ca924bb3e9454fac76ae86273cd9c0", + "runtime-id": "7a37e03fbf474043909bc2d72b1017e6", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -795,9 +795,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_2", - "test_module_id": "18407375889356992010", - "test_session_id": "4486897983980669357", - "test_suite_id": "17346575293357844947", + "test_module_id": "10340812960793613022", + "test_session_id": "9960078110919642242", + "test_suite_id": "1796246485677819899", "type": "test" }, "metrics": { @@ -805,12 +805,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 81974, + "process_id": 23418, "test.source.end": 12, "test.source.start": 4 }, - "duration": 53917, - "start": 1723819316525077003 + "duration": 53750, + "start": 1724311932332919418 }], [ { @@ -826,15 +826,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653400000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_suite_level0", + "_dd.p.tid": "66c6e97c00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f0ca924bb3e9454fac76ae86273cd9c0", + "runtime-id": "7a37e03fbf474043909bc2d72b1017e6", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -852,9 +852,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_2", - "test_module_id": "18407375889356992010", - "test_session_id": "4486897983980669357", - "test_suite_id": "17346575293357844947", + "test_module_id": "10340812960793613022", + "test_session_id": "9960078110919642242", + "test_suite_id": "1796246485677819899", "type": "test" }, "metrics": { @@ -862,12 +862,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 81974, + "process_id": 23418, "test.source.end": 12, "test.source.start": 4 }, - "duration": 51041, - "start": 1723819316525179295 + "duration": 50750, + "start": 1724311932333023001 }], [ { @@ -883,15 +883,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653400000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_suite_level0", + "_dd.p.tid": "66c6e97c00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f0ca924bb3e9454fac76ae86273cd9c0", + "runtime-id": "7a37e03fbf474043909bc2d72b1017e6", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -909,9 +909,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_2", - "test_module_id": "18407375889356992010", - "test_session_id": "4486897983980669357", - "test_suite_id": "17346575293357844947", + "test_module_id": "10340812960793613022", + "test_session_id": "9960078110919642242", + "test_suite_id": "1796246485677819899", "type": "test" }, "metrics": { @@ -919,10 +919,10 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 81974, + "process_id": 23418, "test.source.end": 12, "test.source.start": 4 }, - "duration": 49792, - "start": 1723819316525278961 + "duration": 51875, + "start": 1724311932333125043 }]] diff --git a/tests/snapshots/test_api_fake_runners.test_manual_api_fake_runner_all_itr_skip_test_level.json b/tests/snapshots/test_api_fake_runners.test_manual_api_fake_runner_all_itr_skip_test_level.json index 9f292ed8753..bed274831a1 100644 --- a/tests/snapshots/test_api_fake_runners.test_manual_api_fake_runner_all_itr_skip_test_level.json +++ b/tests/snapshots/test_api_fake_runners.test_manual_api_fake_runner_all_itr_skip_test_level.json @@ -12,15 +12,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653500000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_test_level0", + "_dd.p.tid": "66c6e97700000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "c7d082b5a86a4380809ffd7356bfce8a", + "runtime-id": "79269605e37b4656813883d05df45123", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -37,9 +37,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_1", - "test_module_id": "16851508553641094477", - "test_session_id": "7044469121753049053", - "test_suite_id": "7912177409557254925", + "test_module_id": "9995799750791024439", + "test_session_id": "4815179886487655718", + "test_suite_id": "2155122128085108702", "type": "test" }, "metrics": { @@ -47,12 +47,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82003, + "process_id": 23244, "test.source.end": 2, "test.source.start": 1 }, - "duration": 89166, - "start": 1723819317202494962 + "duration": 93459, + "start": 1724311927747727555 }], [ { @@ -68,15 +68,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653500000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_test_level0", + "_dd.p.tid": "66c6e97700000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "c7d082b5a86a4380809ffd7356bfce8a", + "runtime-id": "79269605e37b4656813883d05df45123", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -92,9 +92,9 @@ "test.skipped_by_itr": "true", "test.status": "skip", "test.suite": "suite_1", - "test_module_id": "16851508553641094477", - "test_session_id": "7044469121753049053", - "test_suite_id": "7912177409557254925", + "test_module_id": "9995799750791024439", + "test_session_id": "4815179886487655718", + "test_suite_id": "2155122128085108702", "type": "test" }, "metrics": { @@ -102,10 +102,10 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82003 + "process_id": 23244 }, - "duration": 61584, - "start": 1723819317202976003 + "duration": 52750, + "start": 1724311927748256222 }], [ { @@ -121,15 +121,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653500000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_test_level0", + "_dd.p.tid": "66c6e97700000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "c7d082b5a86a4380809ffd7356bfce8a", + "runtime-id": "79269605e37b4656813883d05df45123", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -147,9 +147,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_1", - "test_module_id": "16851508553641094477", - "test_session_id": "7044469121753049053", - "test_suite_id": "7912177409557254925", + "test_module_id": "9995799750791024439", + "test_session_id": "4815179886487655718", + "test_suite_id": "2155122128085108702", "type": "test" }, "metrics": { @@ -157,12 +157,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82003, + "process_id": 23244, "test.source.end": 12, "test.source.start": 4 }, - "duration": 68167, - "start": 1723819317203102128 + "duration": 73750, + "start": 1724311927748380180 }], [ { @@ -178,15 +178,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653500000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_test_level0", + "_dd.p.tid": "66c6e97700000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "c7d082b5a86a4380809ffd7356bfce8a", + "runtime-id": "79269605e37b4656813883d05df45123", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -204,9 +204,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_1", - "test_module_id": "16851508553641094477", - "test_session_id": "7044469121753049053", - "test_suite_id": "7912177409557254925", + "test_module_id": "9995799750791024439", + "test_session_id": "4815179886487655718", + "test_suite_id": "2155122128085108702", "type": "test" }, "metrics": { @@ -214,12 +214,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82003, + "process_id": 23244, "test.source.end": 12, "test.source.start": 4 }, - "duration": 55458, - "start": 1723819317203226837 + "duration": 60750, + "start": 1724311927748518722 }], [ { @@ -235,15 +235,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653500000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_test_level0", + "_dd.p.tid": "66c6e97700000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "c7d082b5a86a4380809ffd7356bfce8a", + "runtime-id": "79269605e37b4656813883d05df45123", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -261,9 +261,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_1", - "test_module_id": "16851508553641094477", - "test_session_id": "7044469121753049053", - "test_suite_id": "7912177409557254925", + "test_module_id": "9995799750791024439", + "test_session_id": "4815179886487655718", + "test_suite_id": "2155122128085108702", "type": "test" }, "metrics": { @@ -271,12 +271,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82003, + "process_id": 23244, "test.source.end": 12, "test.source.start": 4 }, - "duration": 57583, - "start": 1723819317203337420 + "duration": 55041, + "start": 1724311927748633389 }], [ { @@ -292,15 +292,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653500000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_test_level0", + "_dd.p.tid": "66c6e97700000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "c7d082b5a86a4380809ffd7356bfce8a", + "runtime-id": "79269605e37b4656813883d05df45123", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -318,9 +318,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_1", - "test_module_id": "16851508553641094477", - "test_session_id": "7044469121753049053", - "test_suite_id": "7912177409557254925", + "test_module_id": "9995799750791024439", + "test_session_id": "4815179886487655718", + "test_suite_id": "2155122128085108702", "type": "test" }, "metrics": { @@ -328,12 +328,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82003, + "process_id": 23244, "test.source.end": 12, "test.source.start": 4 }, - "duration": 55292, - "start": 1723819317203446128 + "duration": 58334, + "start": 1724311927748741055 }], [ { @@ -350,15 +350,15 @@ "_dd.ci.itr.tests_skipped": "true", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653500000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_test_level0", + "_dd.p.tid": "66c6e97700000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "c7d082b5a86a4380809ffd7356bfce8a", + "runtime-id": "79269605e37b4656813883d05df45123", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -373,7 +373,7 @@ "test.itr.unskippable": "false", "test.skipped_by_itr": "true", "test.status": "skip", - "test_session_id": "7044469121753049053", + "test_session_id": "4815179886487655718", "type": "test_session_end" }, "metrics": { @@ -381,11 +381,11 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82003, + "process_id": 23244, "test.itr.tests_skipping.count": 12 }, - "duration": 2077917, - "start": 1723819317202400295 + "duration": 2255542, + "start": 1724311927747572347 }, { "name": "ci_visibility.module", @@ -401,11 +401,11 @@ "_dd.ci.itr.tests_skipped": "true", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653500000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_test_level0", + "_dd.p.tid": "66c6e97700000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -425,8 +425,8 @@ "test.module_path": "", "test.skipped_by_itr": "true", "test.status": "skip", - "test_module_id": "16851508553641094477", - "test_session_id": "7044469121753049053", + "test_module_id": "9995799750791024439", + "test_session_id": "4815179886487655718", "type": "test_module_end" }, "metrics": { @@ -435,8 +435,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 6 }, - "duration": 1210959, - "start": 1723819317202444253 + "duration": 1338167, + "start": 1724311927747620430 }, { "name": "ci_visibility.suite", @@ -451,11 +451,11 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653500000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_test_level0", + "_dd.p.tid": "66c6e97700000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -473,9 +473,9 @@ "test.skipped_by_itr": "true", "test.status": "skip", "test.suite": "suite_1", - "test_module_id": "16851508553641094477", - "test_session_id": "7044469121753049053", - "test_suite_id": "7912177409557254925", + "test_module_id": "9995799750791024439", + "test_session_id": "4815179886487655718", + "test_suite_id": "2155122128085108702", "type": "test_suite_end" }, "metrics": { @@ -484,8 +484,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 6 }, - "duration": 1108875, - "start": 1723819317202469128 + "duration": 1229583, + "start": 1724311927747648514 }, { "name": "ci_visibility.module", @@ -501,11 +501,11 @@ "_dd.ci.itr.tests_skipped": "true", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653500000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_test_level0", + "_dd.p.tid": "66c6e97700000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -525,8 +525,8 @@ "test.module_path": "", "test.skipped_by_itr": "true", "test.status": "skip", - "test_module_id": "10892136805134364735", - "test_session_id": "7044469121753049053", + "test_module_id": "1165570309637852895", + "test_session_id": "4815179886487655718", "type": "test_module_end" }, "metrics": { @@ -535,8 +535,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 6 }, - "duration": 715667, - "start": 1723819317203693295 + "duration": 755041, + "start": 1724311927748997264 }, { "name": "ci_visibility.suite", @@ -551,11 +551,11 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653500000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_test_level0", + "_dd.p.tid": "66c6e97700000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -573,9 +573,9 @@ "test.skipped_by_itr": "true", "test.status": "skip", "test.suite": "suite_2", - "test_module_id": "10892136805134364735", - "test_session_id": "7044469121753049053", - "test_suite_id": "10841787859285247862", + "test_module_id": "1165570309637852895", + "test_session_id": "4815179886487655718", + "test_suite_id": "15601056226237665687", "type": "test_suite_end" }, "metrics": { @@ -584,8 +584,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 6 }, - "duration": 633125, - "start": 1723819317203714920 + "duration": 674000, + "start": 1724311927749018347 }], [ { @@ -601,15 +601,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653500000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_test_level0", + "_dd.p.tid": "66c6e97700000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "c7d082b5a86a4380809ffd7356bfce8a", + "runtime-id": "79269605e37b4656813883d05df45123", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -626,9 +626,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_2", - "test_module_id": "10892136805134364735", - "test_session_id": "7044469121753049053", - "test_suite_id": "10841787859285247862", + "test_module_id": "1165570309637852895", + "test_session_id": "4815179886487655718", + "test_suite_id": "15601056226237665687", "type": "test" }, "metrics": { @@ -636,12 +636,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82003, + "process_id": 23244, "test.source.end": 2, "test.source.start": 1 }, - "duration": 57625, - "start": 1723819317203733837 + "duration": 48917, + "start": 1724311927749037555 }], [ { @@ -657,15 +657,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653500000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_test_level0", + "_dd.p.tid": "66c6e97700000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "c7d082b5a86a4380809ffd7356bfce8a", + "runtime-id": "79269605e37b4656813883d05df45123", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -681,9 +681,9 @@ "test.skipped_by_itr": "true", "test.status": "skip", "test.suite": "suite_2", - "test_module_id": "10892136805134364735", - "test_session_id": "7044469121753049053", - "test_suite_id": "10841787859285247862", + "test_module_id": "1165570309637852895", + "test_session_id": "4815179886487655718", + "test_suite_id": "15601056226237665687", "type": "test" }, "metrics": { @@ -691,10 +691,10 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82003 + "process_id": 23244 }, - "duration": 36250, - "start": 1723819317203842045 + "duration": 50875, + "start": 1724311927749140639 }], [ { @@ -710,15 +710,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653500000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_test_level0", + "_dd.p.tid": "66c6e97700000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "c7d082b5a86a4380809ffd7356bfce8a", + "runtime-id": "79269605e37b4656813883d05df45123", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -736,9 +736,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_2", - "test_module_id": "10892136805134364735", - "test_session_id": "7044469121753049053", - "test_suite_id": "10841787859285247862", + "test_module_id": "1165570309637852895", + "test_session_id": "4815179886487655718", + "test_suite_id": "15601056226237665687", "type": "test" }, "metrics": { @@ -746,12 +746,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82003, + "process_id": 23244, "test.source.end": 12, "test.source.start": 4 }, - "duration": 50542, - "start": 1723819317203925253 + "duration": 52542, + "start": 1724311927749249597 }], [ { @@ -767,15 +767,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653500000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_test_level0", + "_dd.p.tid": "66c6e97700000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "c7d082b5a86a4380809ffd7356bfce8a", + "runtime-id": "79269605e37b4656813883d05df45123", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -793,9 +793,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_2", - "test_module_id": "10892136805134364735", - "test_session_id": "7044469121753049053", - "test_suite_id": "10841787859285247862", + "test_module_id": "1165570309637852895", + "test_session_id": "4815179886487655718", + "test_suite_id": "15601056226237665687", "type": "test" }, "metrics": { @@ -803,12 +803,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82003, + "process_id": 23244, "test.source.end": 12, "test.source.start": 4 }, - "duration": 52958, - "start": 1723819317204034337 + "duration": 53625, + "start": 1724311927749350055 }], [ { @@ -824,15 +824,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653500000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_test_level0", + "_dd.p.tid": "66c6e97700000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "c7d082b5a86a4380809ffd7356bfce8a", + "runtime-id": "79269605e37b4656813883d05df45123", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -850,9 +850,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_2", - "test_module_id": "10892136805134364735", - "test_session_id": "7044469121753049053", - "test_suite_id": "10841787859285247862", + "test_module_id": "1165570309637852895", + "test_session_id": "4815179886487655718", + "test_suite_id": "15601056226237665687", "type": "test" }, "metrics": { @@ -860,12 +860,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82003, + "process_id": 23244, "test.source.end": 12, "test.source.start": 4 }, - "duration": 49000, - "start": 1723819317204137087 + "duration": 54792, + "start": 1724311927749459180 }], [ { @@ -881,15 +881,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653500000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_all_itr_skip_test_level0", + "_dd.p.tid": "66c6e97700000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_all_itr_skip_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "c7d082b5a86a4380809ffd7356bfce8a", + "runtime-id": "79269605e37b4656813883d05df45123", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -907,9 +907,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_2", - "test_module_id": "10892136805134364735", - "test_session_id": "7044469121753049053", - "test_suite_id": "10841787859285247862", + "test_module_id": "1165570309637852895", + "test_session_id": "4815179886487655718", + "test_suite_id": "15601056226237665687", "type": "test" }, "metrics": { @@ -917,10 +917,10 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82003, + "process_id": 23244, "test.source.end": 12, "test.source.start": 4 }, - "duration": 50083, - "start": 1723819317204232837 + "duration": 49167, + "start": 1724311927749569097 }]] diff --git a/tests/snapshots/test_api_fake_runners.test_manual_api_fake_runner_mix_fail_itr_suite_level.json b/tests/snapshots/test_api_fake_runners.test_manual_api_fake_runner_mix_fail_itr_suite_level.json index 812537b20bc..01e543f72ec 100644 --- a/tests/snapshots/test_api_fake_runners.test_manual_api_fake_runner_mix_fail_itr_suite_level.json +++ b/tests/snapshots/test_api_fake_runners.test_manual_api_fake_runner_mix_fail_itr_suite_level.json @@ -12,20 +12,19 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", "test.command": "manual_test_mix_fail_itr_suite_level", - "test.coverage": "{\"files\": [{\"filename\": \"my_file_1.py\", \"segments\": [[1, 0, 3, 0, -1], [4, 0, 8, 0, -1], [9, 0, 9, 0, -1]]}]}", "test.framework": "dd_manual_test_fw", "test.framework_version": "1.0.0", "test.itr.forced_run": "false", @@ -37,9 +36,9 @@ "test.source.file": "my_file_1.py", "test.status": "pass", "test.suite": "suite_1", - "test_module_id": "12623761841558145104", - "test_session_id": "11298329170422369969", - "test_suite_id": "13371748177665185183", + "test_module_id": "2098407172607919429", + "test_session_id": "14015492095821281900", + "test_suite_id": "13492415637471341051", "type": "test" }, "metrics": { @@ -47,12 +46,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.source.end": 2, "test.source.start": 1 }, - "duration": 127542, - "start": 1723819319810785171 + "duration": 129583, + "start": 1724311926407498513 }], [ { @@ -68,15 +67,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -92,9 +91,9 @@ "test.status": "skip", "test.suite": "suite_1", "test.tag1": "suite_1_test_2_id", - "test_module_id": "12623761841558145104", - "test_session_id": "11298329170422369969", - "test_suite_id": "13371748177665185183", + "test_module_id": "2098407172607919429", + "test_session_id": "14015492095821281900", + "test_suite_id": "13492415637471341051", "type": "test" }, "metrics": { @@ -102,10 +101,10 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119 + "process_id": 23186 }, - "duration": 107375, - "start": 1723819319811289296 + "duration": 133167, + "start": 1724311926408024971 }], [ { @@ -121,15 +120,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -147,9 +146,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_1", - "test_module_id": "12623761841558145104", - "test_session_id": "11298329170422369969", - "test_suite_id": "13371748177665185183", + "test_module_id": "2098407172607919429", + "test_session_id": "14015492095821281900", + "test_suite_id": "13492415637471341051", "type": "test" }, "metrics": { @@ -157,12 +156,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.source.end": 12, "test.source.start": 4 }, - "duration": 94500, - "start": 1723819319811460463 + "duration": 113042, + "start": 1724311926408242513 }], [ { @@ -178,15 +177,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -203,9 +202,9 @@ "test.source.file": "my_file_1.py", "test.status": "pass", "test.suite": "suite_1", - "test_module_id": "12623761841558145104", - "test_session_id": "11298329170422369969", - "test_suite_id": "13371748177665185183", + "test_module_id": "2098407172607919429", + "test_session_id": "14015492095821281900", + "test_suite_id": "13492415637471341051", "type": "test" }, "metrics": { @@ -213,12 +212,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.source.end": 12, "test.source.start": 4 }, - "duration": 50708, - "start": 1723819319811611213 + "duration": 51583, + "start": 1724311926408415263 }], [ { @@ -234,15 +233,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -259,9 +258,9 @@ "test.source.file": "my_file_1.py", "test.status": "pass", "test.suite": "suite_1", - "test_module_id": "12623761841558145104", - "test_session_id": "11298329170422369969", - "test_suite_id": "13371748177665185183", + "test_module_id": "2098407172607919429", + "test_session_id": "14015492095821281900", + "test_suite_id": "13492415637471341051", "type": "test" }, "metrics": { @@ -269,12 +268,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.source.end": 12, "test.source.start": 4 }, - "duration": 48500, - "start": 1723819319811712463 + "duration": 55792, + "start": 1724311926408519013 }], [ { @@ -290,15 +289,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -315,9 +314,9 @@ "test.source.file": "my_file_1.py", "test.status": "pass", "test.suite": "suite_1", - "test_module_id": "12623761841558145104", - "test_session_id": "11298329170422369969", - "test_suite_id": "13371748177665185183", + "test_module_id": "2098407172607919429", + "test_session_id": "14015492095821281900", + "test_suite_id": "13492415637471341051", "type": "test" }, "metrics": { @@ -325,12 +324,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.source.end": 12, "test.source.start": 4 }, - "duration": 140334, - "start": 1723819319811810796 + "duration": 141625, + "start": 1724311926408623971 }], [ { @@ -346,15 +345,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -372,9 +371,9 @@ "test.suite": "suite_1", "test.tag1": "suite_1_test_4_parametrized_1_id", "test.tag2": "value_for_tag_2", - "test_module_id": "12623761841558145104", - "test_session_id": "11298329170422369969", - "test_suite_id": "13371748177665185183", + "test_module_id": "2098407172607919429", + "test_session_id": "14015492095821281900", + "test_suite_id": "13492415637471341051", "type": "test" }, "metrics": { @@ -382,11 +381,11 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.tag4": 4 }, - "duration": 74042, - "start": 1723819319812001963 + "duration": 83084, + "start": 1724311926408817721 }], [ { @@ -402,15 +401,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -426,9 +425,9 @@ "test.skipped_by_itr": "true", "test.status": "pass", "test.suite": "suite_1", - "test_module_id": "12623761841558145104", - "test_session_id": "11298329170422369969", - "test_suite_id": "13371748177665185183", + "test_module_id": "2098407172607919429", + "test_session_id": "14015492095821281900", + "test_suite_id": "13492415637471341051", "type": "test" }, "metrics": { @@ -436,10 +435,10 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119 + "process_id": 23186 }, - "duration": 32583, - "start": 1723819319812126963 + "duration": 33958, + "start": 1724311926408951930 }], [ { @@ -455,18 +454,18 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "error.message": "This is a fake exception", - "error.stack": "Traceback (most recent call last):\n File \"/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0/fake_runner_mix_fail_itr_suite_level.py\", line 31, in _make_excinfo\n raise ValueError(\"This is a fake exception\")\nValueError: This is a fake exception\n", + "error.stack": "Traceback (most recent call last):\n File \"/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0/fake_runner_mix_fail_itr_suite_level.py\", line 32, in _make_excinfo\n raise ValueError(\"This is a fake exception\")\nValueError: This is a fake exception\n", "error.type": "builtins.ValueError", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -483,9 +482,9 @@ "test.status": "fail", "test.suite": "suite_1", "test.tag1": "suite_1_test_4_parametrized_3_id", - "test_module_id": "12623761841558145104", - "test_session_id": "11298329170422369969", - "test_suite_id": "13371748177665185183", + "test_module_id": "2098407172607919429", + "test_session_id": "14015492095821281900", + "test_suite_id": "13492415637471341051", "type": "test" }, "metrics": { @@ -493,11 +492,11 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.tag3": 12333333 }, - "duration": 162333, - "start": 1723819319812234088 + "duration": 211708, + "start": 1724311926409078638 }], [ { @@ -514,15 +513,15 @@ "_dd.ci.itr.tests_skipped": "true", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -537,7 +536,7 @@ "test.itr.unskippable": "true", "test.skipped_by_itr": "true", "test.status": "fail", - "test_session_id": "11298329170422369969", + "test_session_id": "14015492095821281900", "type": "test_session_end" }, "metrics": { @@ -545,11 +544,11 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.itr.tests_skipping.count": 1 }, - "duration": 5210584, - "start": 1723819319810121671 + "duration": 5608917, + "start": 1724311926406765888 }, { "name": "ci_visibility.module", @@ -565,11 +564,11 @@ "_dd.ci.itr.tests_skipped": "false", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -589,8 +588,8 @@ "test.module_path": "", "test.skipped_by_itr": "true", "test.status": "fail", - "test_module_id": "12623761841558145104", - "test_session_id": "11298329170422369969", + "test_module_id": "2098407172607919429", + "test_session_id": "14015492095821281900", "type": "test_module_end" }, "metrics": { @@ -599,8 +598,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 0 }, - "duration": 1866250, - "start": 1723819319810732755 + "duration": 2057917, + "start": 1724311926407429721 }, { "name": "ci_visibility.suite", @@ -615,11 +614,11 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -627,7 +626,6 @@ "runtime.version": "3.10.11", "span.kind": "test", "test.command": "manual_test_mix_fail_itr_suite_level", - "test.coverage": "{\"files\": [{\"filename\": \"my_file_1.py\", \"segments\": [[1, 0, 3, 0, -1], [4, 0, 8, 0, -1], [9, 0, 9, 0, -1], [1, 0, 3, 0, -1], [4, 0, 8, 0, -1], [9, 0, 9, 0, -1]]}, {\"filename\": \"my/other/path/my_file_2.py\", \"segments\": [[1, 0, 9, 0, -1], [10, 0, 10000000, 0, -1], [1, 0, 9, 0, -1], [10, 0, 10000000, 0, -1]]}, {\"filename\": \"my_abs_file_3.py\", \"segments\": [[1, 0, 3, 0, -1], [4, 0, 8, 0, -1], [9, 0, 9, 0, -1], [1, 0, 1, 0, -1]]}, {\"filename\": \"my_rel_file_3.py\", \"segments\": [[2, 0, 2, 0, -1], [1, 0, 1, 0, -1], [3, 0, 6, 0, -1], [79, 0, 97, 0, -1]]}]}", "test.framework": "dd_manual_test_fw", "test.framework_version": "1.0.0", "test.itr.forced_run": "false", @@ -638,9 +636,9 @@ "test.skipped_by_itr": "true", "test.status": "fail", "test.suite": "suite_1", - "test_module_id": "12623761841558145104", - "test_session_id": "11298329170422369969", - "test_suite_id": "13371748177665185183", + "test_module_id": "2098407172607919429", + "test_session_id": "14015492095821281900", + "test_suite_id": "13492415637471341051", "type": "test_suite_end" }, "metrics": { @@ -649,8 +647,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 0 }, - "duration": 1763125, - "start": 1723819319810757005 + "duration": 1932666, + "start": 1724311926407470180 }, { "name": "ci_visibility.module", @@ -666,11 +664,11 @@ "_dd.ci.itr.tests_skipped": "false", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -690,8 +688,8 @@ "test.module_path": "", "test.skipped_by_itr": "true", "test.status": "pass", - "test_module_id": "9199024252026718559", - "test_session_id": "11298329170422369969", + "test_module_id": "12347892959393502470", + "test_session_id": "14015492095821281900", "type": "test_module_end" }, "metrics": { @@ -700,8 +698,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 0 }, - "duration": 880834, - "start": 1723819319812640671 + "duration": 904917, + "start": 1724311926409527721 }, { "name": "ci_visibility.suite", @@ -716,11 +714,11 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -728,7 +726,6 @@ "runtime.version": "3.10.11", "span.kind": "test", "test.command": "manual_test_mix_fail_itr_suite_level", - "test.coverage": "{\"files\": [{\"filename\": \"my_abs_file_suite_2_5_1.py\", \"segments\": [[1, 0, 3, 0, -1], [2, 0, 6, 0, -1], [10, 0, 12, 0, -1]]}, {\"filename\": \"my_abs_file_2_5_2.py\", \"segments\": [[1, 0, 3, 0, -1], [2, 0, 6, 0, -1], [10, 0, 12, 0, -1]]}, {\"filename\": \"my_rel_file_2_5.py\", \"segments\": [[1, 0, 2, 0, -1], [3, 0, 3, 0, -1]]}]}", "test.framework": "dd_manual_test_fw", "test.framework_version": "1.0.0", "test.itr.forced_run": "false", @@ -739,9 +736,9 @@ "test.skipped_by_itr": "true", "test.status": "pass", "test.suite": "suite_2", - "test_module_id": "9199024252026718559", - "test_session_id": "11298329170422369969", - "test_suite_id": "8881898747854029067", + "test_module_id": "12347892959393502470", + "test_session_id": "14015492095821281900", + "test_suite_id": "9656021123703139454", "type": "test_suite_end" }, "metrics": { @@ -750,8 +747,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 0 }, - "duration": 792625, - "start": 1723819319812661421 + "duration": 811917, + "start": 1724311926409549096 }, { "name": "ci_visibility.module", @@ -767,11 +764,11 @@ "_dd.ci.itr.tests_skipped": "false", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -791,8 +788,8 @@ "test.module_path": "", "test.skipped_by_itr": "true", "test.status": "fail", - "test_module_id": "13110933973750100942", - "test_session_id": "11298329170422369969", + "test_module_id": "12239987392630060699", + "test_session_id": "14015492095821281900", "type": "test_module_end" }, "metrics": { @@ -801,8 +798,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 0 }, - "duration": 897459, - "start": 1723819319813561046 + "duration": 965333, + "start": 1724311926410470888 }, { "name": "ci_visibility.suite", @@ -817,11 +814,11 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -829,7 +826,6 @@ "runtime.version": "3.10.11", "span.kind": "test", "test.command": "manual_test_mix_fail_itr_suite_level", - "test.coverage": "{\"files\": [{\"filename\": \"my_file_suite_3_1.py\", \"segments\": [[1, 0, 3, 0, -1], [4, 0, 8, 0, -1], [9, 0, 9, 0, -1]]}, {\"filename\": \"my/other/path/my_file_suite_3_2.py\", \"segments\": [[1, 0, 9, 0, -1], [10, 0, 10000000, 0, -1]]}, {\"filename\": \"my_abs_file_suite_3_3.py\", \"segments\": [[1, 0, 1, 0, -1]]}, {\"filename\": \"my_rel_file_suite_3_3.py\", \"segments\": [[1, 0, 1, 0, -1], [3, 0, 6, 0, -1], [79, 0, 97, 0, -1]]}, {\"filename\": \"my_abs_file_suite_3_1.py\", \"segments\": [[1, 0, 3, 0, -1], [2, 0, 6, 0, -1], [10, 0, 12, 0, -1]]}, {\"filename\": \"my_abs_file_suite_3_2.py\", \"segments\": [[1, 0, 3, 0, -1], [2, 0, 6, 0, -1], [10, 0, 12, 0, -1]]}, {\"filename\": \"my_rel_file_suite3_5.py\", \"segments\": [[1, 0, 2, 0, -1], [3, 0, 3, 0, -1]]}]}", "test.framework": "dd_manual_test_fw", "test.framework_version": "1.0.0", "test.itr.forced_run": "false", @@ -840,9 +836,9 @@ "test.skipped_by_itr": "true", "test.status": "fail", "test.suite": "suite_3", - "test_module_id": "13110933973750100942", - "test_session_id": "11298329170422369969", - "test_suite_id": "1448394561265813056", + "test_module_id": "12239987392630060699", + "test_session_id": "14015492095821281900", + "test_suite_id": "14698654813906553466", "type": "test_suite_end" }, "metrics": { @@ -851,8 +847,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 0 }, - "duration": 475959, - "start": 1723819319813579921 + "duration": 499833, + "start": 1724311926410495430 }, { "name": "ci_visibility.suite", @@ -867,11 +863,11 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -889,9 +885,9 @@ "test.skipped_by_itr": "true", "test.status": "pass", "test.suite": "suite_4", - "test_module_id": "13110933973750100942", - "test_session_id": "11298329170422369969", - "test_suite_id": "12034448149469296932", + "test_module_id": "12239987392630060699", + "test_session_id": "14015492095821281900", + "test_suite_id": "15133203111152333499", "type": "test_suite_end" }, "metrics": { @@ -900,8 +896,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 0 }, - "duration": 298417, - "start": 1723819319814098046 + "duration": 335542, + "start": 1724311926411035638 }, { "name": "ci_visibility.module", @@ -917,11 +913,11 @@ "_dd.ci.itr.tests_skipped": "true", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -941,8 +937,8 @@ "test.module_path": "", "test.skipped_by_itr": "true", "test.status": "pass", - "test_module_id": "8538918534017749610", - "test_session_id": "11298329170422369969", + "test_module_id": "16187368264677766311", + "test_session_id": "14015492095821281900", "type": "test_module_end" }, "metrics": { @@ -951,8 +947,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 1 }, - "duration": 742625, - "start": 1723819319814495088 + "duration": 802666, + "start": 1724311926411472305 }, { "name": "ci_visibility.suite", @@ -967,11 +963,11 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -990,9 +986,9 @@ "test.skipped_by_itr": "true", "test.status": "skip", "test.suite": "suite_5", - "test_module_id": "8538918534017749610", - "test_session_id": "11298329170422369969", - "test_suite_id": "8626754067603456253", + "test_module_id": "16187368264677766311", + "test_session_id": "14015492095821281900", + "test_suite_id": "9080503809193199142", "type": "test_suite_end" }, "metrics": { @@ -1001,8 +997,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 1 }, - "duration": 324917, - "start": 1723819319814512588 + "duration": 347417, + "start": 1724311926411490471 }, { "name": "ci_visibility.suite", @@ -1017,11 +1013,11 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -1039,9 +1035,9 @@ "test.skipped_by_itr": "true", "test.status": "pass", "test.suite": "suite_6", - "test_module_id": "8538918534017749610", - "test_session_id": "11298329170422369969", - "test_suite_id": "1837711723375051993", + "test_module_id": "16187368264677766311", + "test_session_id": "14015492095821281900", + "test_suite_id": "2797805099407106433", "type": "test_suite_end" }, "metrics": { @@ -1050,8 +1046,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 0 }, - "duration": 295833, - "start": 1723819319814875713 + "duration": 331709, + "start": 1724311926411877846 }], [ { @@ -1067,15 +1063,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1091,9 +1087,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_2", - "test_module_id": "9199024252026718559", - "test_session_id": "11298329170422369969", - "test_suite_id": "8881898747854029067", + "test_module_id": "12347892959393502470", + "test_session_id": "14015492095821281900", + "test_suite_id": "9656021123703139454", "type": "test" }, "metrics": { @@ -1101,12 +1097,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.source.end": 2, "test.source.start": 1 }, - "duration": 44458, - "start": 1723819319812680463 + "duration": 47250, + "start": 1724311926409569013 }], [ { @@ -1122,15 +1118,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1149,9 +1145,9 @@ "test.suite": "suite_2", "test.tag1": "suite_2_test_2_parametrized_1_id", "test.tag2": "two", - "test_module_id": "9199024252026718559", - "test_session_id": "11298329170422369969", - "test_suite_id": "8881898747854029067", + "test_module_id": "12347892959393502470", + "test_session_id": "14015492095821281900", + "test_suite_id": "9656021123703139454", "type": "test" }, "metrics": { @@ -1159,13 +1155,13 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.source.end": 9, "test.source.start": 8, "test.tag3": 3 }, - "duration": 45125, - "start": 1723819319812782463 + "duration": 44667, + "start": 1724311926409675763 }], [ { @@ -1181,15 +1177,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1206,9 +1202,9 @@ "test.source.file": "test_file_2.py", "test.status": "pass", "test.suite": "suite_2", - "test_module_id": "9199024252026718559", - "test_session_id": "11298329170422369969", - "test_suite_id": "8881898747854029067", + "test_module_id": "12347892959393502470", + "test_session_id": "14015492095821281900", + "test_suite_id": "9656021123703139454", "type": "test" }, "metrics": { @@ -1216,12 +1212,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.source.end": 9, "test.source.start": 8 }, - "duration": 54500, - "start": 1723819319812874505 + "duration": 55291, + "start": 1724311926409772430 }], [ { @@ -1237,15 +1233,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1263,9 +1259,9 @@ "test.source.file": "test_file_2.py", "test.status": "skip", "test.suite": "suite_2", - "test_module_id": "9199024252026718559", - "test_session_id": "11298329170422369969", - "test_suite_id": "8881898747854029067", + "test_module_id": "12347892959393502470", + "test_session_id": "14015492095821281900", + "test_suite_id": "9656021123703139454", "type": "test" }, "metrics": { @@ -1273,12 +1269,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.source.end": 9, "test.source.start": 8 }, - "duration": 53750, - "start": 1723819319812975630 + "duration": 46125, + "start": 1724311926409874555 }], [ { @@ -1294,15 +1290,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1319,9 +1315,9 @@ "test.source.file": "test_file_2.py", "test.status": "pass", "test.suite": "suite_2", - "test_module_id": "9199024252026718559", - "test_session_id": "11298329170422369969", - "test_suite_id": "8881898747854029067", + "test_module_id": "12347892959393502470", + "test_session_id": "14015492095821281900", + "test_suite_id": "9656021123703139454", "type": "test" }, "metrics": { @@ -1329,12 +1325,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.source.end": 9, "test.source.start": 8 }, - "duration": 43666, - "start": 1723819319813075380 + "duration": 42458, + "start": 1724311926409967388 }], [ { @@ -1350,15 +1346,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1375,9 +1371,9 @@ "test.source.file": "test_file_2.py", "test.status": "pass", "test.suite": "suite_2", - "test_module_id": "9199024252026718559", - "test_session_id": "11298329170422369969", - "test_suite_id": "8881898747854029067", + "test_module_id": "12347892959393502470", + "test_session_id": "14015492095821281900", + "test_suite_id": "9656021123703139454", "type": "test" }, "metrics": { @@ -1385,12 +1381,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.source.end": 9, "test.source.start": 8 }, - "duration": 40417, - "start": 1723819319813164796 + "duration": 40459, + "start": 1724311926410055971 }], [ { @@ -1406,15 +1402,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1433,9 +1429,9 @@ "test.suite": "suite_2", "test.tag1": "suite_2_test_3_id", "test.tag3": "this tag stays", - "test_module_id": "9199024252026718559", - "test_session_id": "11298329170422369969", - "test_suite_id": "8881898747854029067", + "test_module_id": "12347892959393502470", + "test_session_id": "14015492095821281900", + "test_suite_id": "9656021123703139454", "type": "test" }, "metrics": { @@ -1443,13 +1439,13 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.source.end": 12, "test.source.start": 4, "test.tag2": 2 }, - "duration": 54167, - "start": 1723819319813257838 + "duration": 66959, + "start": 1724311926410141971 }], [ { @@ -1465,15 +1461,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1489,9 +1485,9 @@ "test.source.file": "module_3/suite_3.py", "test.status": "pass", "test.suite": "suite_3", - "test_module_id": "13110933973750100942", - "test_session_id": "11298329170422369969", - "test_suite_id": "1448394561265813056", + "test_module_id": "12239987392630060699", + "test_session_id": "14015492095821281900", + "test_suite_id": "14698654813906553466", "type": "test" }, "metrics": { @@ -1499,12 +1495,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.source.end": 6, "test.source.start": 4 }, - "duration": 113959, - "start": 1723819319813598546 + "duration": 135042, + "start": 1724311926410514221 }], [ { @@ -1520,15 +1516,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1544,9 +1540,9 @@ "test.source.file": "module_3/suite_3.py", "test.status": "fail", "test.suite": "suite_3", - "test_module_id": "13110933973750100942", - "test_session_id": "11298329170422369969", - "test_suite_id": "1448394561265813056", + "test_module_id": "12239987392630060699", + "test_session_id": "14015492095821281900", + "test_suite_id": "14698654813906553466", "type": "test" }, "metrics": { @@ -1554,12 +1550,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.source.end": 12, "test.source.start": 9 }, - "duration": 43917, - "start": 1723819319813761963 + "duration": 43125, + "start": 1724311926410701763 }], [ { @@ -1575,15 +1571,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1599,9 +1595,9 @@ "test.source.file": "module_3/suite_3.py", "test.status": "pass", "test.suite": "suite_3", - "test_module_id": "13110933973750100942", - "test_session_id": "11298329170422369969", - "test_suite_id": "1448394561265813056", + "test_module_id": "12239987392630060699", + "test_session_id": "14015492095821281900", + "test_suite_id": "14698654813906553466", "type": "test" }, "metrics": { @@ -1609,12 +1605,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.source.end": 48, "test.source.start": 16 }, - "duration": 42458, - "start": 1723819319813853005 + "duration": 41000, + "start": 1724311926410797055 }], [ { @@ -1630,15 +1626,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1654,9 +1650,9 @@ "test.source.file": "module_3/suite_4.py", "test.status": "pass", "test.suite": "suite_4", - "test_module_id": "13110933973750100942", - "test_session_id": "11298329170422369969", - "test_suite_id": "12034448149469296932", + "test_module_id": "12239987392630060699", + "test_session_id": "14015492095821281900", + "test_suite_id": "15133203111152333499", "type": "test" }, "metrics": { @@ -1664,12 +1660,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.source.end": 6, "test.source.start": 4 }, - "duration": 41834, - "start": 1723819319814118421 + "duration": 43167, + "start": 1724311926411056138 }], [ { @@ -1685,15 +1681,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1709,9 +1705,9 @@ "test.source.file": "module_3/suite_4.py", "test.status": "pass", "test.suite": "suite_4", - "test_module_id": "13110933973750100942", - "test_session_id": "11298329170422369969", - "test_suite_id": "12034448149469296932", + "test_module_id": "12239987392630060699", + "test_session_id": "14015492095821281900", + "test_suite_id": "15133203111152333499", "type": "test" }, "metrics": { @@ -1719,12 +1715,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.source.end": 12, "test.source.start": 9 }, - "duration": 40417, - "start": 1723819319814206588 + "duration": 56083, + "start": 1724311926411148805 }], [ { @@ -1740,15 +1736,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1764,9 +1760,9 @@ "test.source.file": "module_3/suite_4.py", "test.status": "pass", "test.suite": "suite_4", - "test_module_id": "13110933973750100942", - "test_session_id": "11298329170422369969", - "test_suite_id": "12034448149469296932", + "test_module_id": "12239987392630060699", + "test_session_id": "14015492095821281900", + "test_suite_id": "15133203111152333499", "type": "test" }, "metrics": { @@ -1774,12 +1770,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.source.end": 48, "test.source.start": 16 }, - "duration": 40959, - "start": 1723819319814293296 + "duration": 46542, + "start": 1724311926411255596 }], [ { @@ -1795,15 +1791,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1820,9 +1816,9 @@ "test.source.file": "module_5/suite_5.py", "test.status": "skip", "test.suite": "suite_5", - "test_module_id": "8538918534017749610", - "test_session_id": "11298329170422369969", - "test_suite_id": "8626754067603456253", + "test_module_id": "16187368264677766311", + "test_session_id": "14015492095821281900", + "test_suite_id": "9080503809193199142", "type": "test" }, "metrics": { @@ -1830,12 +1826,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.source.end": 6, "test.source.start": 4 }, - "duration": 47167, - "start": 1723819319814530963 + "duration": 50333, + "start": 1724311926411509638 }], [ { @@ -1851,15 +1847,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1876,9 +1872,9 @@ "test.source.file": "module_5/suite_5.py", "test.status": "skip", "test.suite": "suite_5", - "test_module_id": "8538918534017749610", - "test_session_id": "11298329170422369969", - "test_suite_id": "8626754067603456253", + "test_module_id": "16187368264677766311", + "test_session_id": "14015492095821281900", + "test_suite_id": "9080503809193199142", "type": "test" }, "metrics": { @@ -1886,12 +1882,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.source.end": 12, "test.source.start": 9 }, - "duration": 44375, - "start": 1723819319814625671 + "duration": 46375, + "start": 1724311926411610596 }], [ { @@ -1907,15 +1903,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1932,9 +1928,9 @@ "test.source.file": "module_5/suite_5.py", "test.status": "skip", "test.suite": "suite_5", - "test_module_id": "8538918534017749610", - "test_session_id": "11298329170422369969", - "test_suite_id": "8626754067603456253", + "test_module_id": "16187368264677766311", + "test_session_id": "14015492095821281900", + "test_suite_id": "9080503809193199142", "type": "test" }, "metrics": { @@ -1942,12 +1938,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119, + "process_id": 23186, "test.source.end": 48, "test.source.start": 16 }, - "duration": 45250, - "start": 1723819319814717380 + "duration": 47792, + "start": 1724311926411708971 }], [ { @@ -1963,15 +1959,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1987,9 +1983,9 @@ "test.skipped_by_itr": "true", "test.status": "skip", "test.suite": "suite_6", - "test_module_id": "8538918534017749610", - "test_session_id": "11298329170422369969", - "test_suite_id": "1837711723375051993", + "test_module_id": "16187368264677766311", + "test_session_id": "14015492095821281900", + "test_suite_id": "2797805099407106433", "type": "test" }, "metrics": { @@ -1997,10 +1993,10 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119 + "process_id": 23186 }, - "duration": 34583, - "start": 1723819319814896255 + "duration": 38208, + "start": 1724311926411898263 }], [ { @@ -2016,15 +2012,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -2039,9 +2035,9 @@ "test.skipped_by_itr": "true", "test.status": "pass", "test.suite": "suite_6", - "test_module_id": "8538918534017749610", - "test_session_id": "11298329170422369969", - "test_suite_id": "1837711723375051993", + "test_module_id": "16187368264677766311", + "test_session_id": "14015492095821281900", + "test_suite_id": "2797805099407106433", "type": "test" }, "metrics": { @@ -2049,10 +2045,10 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119 + "process_id": 23186 }, - "duration": 30625, - "start": 1723819319814975005 + "duration": 40500, + "start": 1724311926411988096 }], [ { @@ -2068,15 +2064,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653700000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_suite_level0", + "_dd.p.tid": "66c6e97600000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_suite_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "9bcb24ef25bf4c6d8e5a750f7b5471c6", + "runtime-id": "1c3efd6bb7b84fdbaef08b1adf553ff5", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -2092,9 +2088,9 @@ "test.skipped_by_itr": "true", "test.status": "skip", "test.suite": "suite_6", - "test_module_id": "8538918534017749610", - "test_session_id": "11298329170422369969", - "test_suite_id": "1837711723375051993", + "test_module_id": "16187368264677766311", + "test_session_id": "14015492095821281900", + "test_suite_id": "2797805099407106433", "type": "test" }, "metrics": { @@ -2102,8 +2098,8 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82119 + "process_id": 23186 }, - "duration": 35208, - "start": 1723819319815058755 + "duration": 35209, + "start": 1724311926412077596 }]] diff --git a/tests/snapshots/test_api_fake_runners.test_manual_api_fake_runner_mix_fail_itr_test_level.json b/tests/snapshots/test_api_fake_runners.test_manual_api_fake_runner_mix_fail_itr_test_level.json index 4f0e198beb0..c37855ac07b 100644 --- a/tests/snapshots/test_api_fake_runners.test_manual_api_fake_runner_mix_fail_itr_test_level.json +++ b/tests/snapshots/test_api_fake_runners.test_manual_api_fake_runner_mix_fail_itr_test_level.json @@ -12,20 +12,19 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", "test.command": "manual_test_mix_fail_itr_test_level", - "test.coverage": "{\"files\": [{\"filename\": \"my_file_1.py\", \"segments\": [[1, 0, 3, 0, -1], [4, 0, 8, 0, -1], [9, 0, 9, 0, -1]]}]}", "test.framework": "dd_manual_test_fw", "test.framework_version": "1.0.0", "test.itr.forced_run": "false", @@ -37,9 +36,9 @@ "test.source.file": "my_file_1.py", "test.status": "pass", "test.suite": "suite_1", - "test_module_id": "17605099870629468115", - "test_session_id": "3591882799542221556", - "test_suite_id": "14609138934375019073", + "test_module_id": "4057632133908505837", + "test_session_id": "1612810878110935553", + "test_suite_id": "9420304634328993639", "type": "test" }, "metrics": { @@ -47,12 +46,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.source.end": 2, "test.source.start": 1 }, - "duration": 143875, - "start": 1723819320503093463 + "duration": 122917, + "start": 1724311930517797084 }], [ { @@ -68,20 +67,19 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", "test.command": "manual_test_mix_fail_itr_test_level", - "test.coverage": "{\"files\": [{\"filename\": \"my_file_1.py\", \"segments\": [[1, 0, 3, 0, -1], [4, 0, 8, 0, -1], [9, 0, 9, 0, -1]]}, {\"filename\": \"my/other/path/my_file_2.py\", \"segments\": [[1, 0, 9, 0, -1], [10, 0, 10000000, 0, -1]]}]}", "test.framework": "dd_manual_test_fw", "test.framework_version": "1.0.0", "test.itr.forced_run": "false", @@ -93,9 +91,9 @@ "test.status": "skip", "test.suite": "suite_1", "test.tag1": "suite_1_test_2_id", - "test_module_id": "17605099870629468115", - "test_session_id": "3591882799542221556", - "test_suite_id": "14609138934375019073", + "test_module_id": "4057632133908505837", + "test_session_id": "1612810878110935553", + "test_suite_id": "9420304634328993639", "type": "test" }, "metrics": { @@ -103,10 +101,10 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148 + "process_id": 23360 }, - "duration": 139625, - "start": 1723819320503700088 + "duration": 153750, + "start": 1724311930518401626 }], [ { @@ -122,21 +120,20 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", "test.codeowners": "[\"@romain\", \"@romain2\"]", "test.command": "manual_test_mix_fail_itr_test_level", - "test.coverage": "{\"files\": [{\"filename\": \"my_abs_file_3.py\", \"segments\": [[1, 0, 3, 0, -1], [4, 0, 8, 0, -1], [9, 0, 9, 0, -1]]}, {\"filename\": \"my_rel_file_3.py\", \"segments\": [[2, 0, 2, 0, -1]]}]}", "test.framework": "dd_manual_test_fw", "test.framework_version": "1.0.0", "test.itr.forced_run": "false", @@ -149,9 +146,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_1", - "test_module_id": "17605099870629468115", - "test_session_id": "3591882799542221556", - "test_suite_id": "14609138934375019073", + "test_module_id": "4057632133908505837", + "test_session_id": "1612810878110935553", + "test_suite_id": "9420304634328993639", "type": "test" }, "metrics": { @@ -159,12 +156,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.source.end": 12, "test.source.start": 4 }, - "duration": 138959, - "start": 1723819320503910338 + "duration": 120167, + "start": 1724311930518624959 }], [ { @@ -180,15 +177,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -205,9 +202,9 @@ "test.source.file": "my_file_1.py", "test.status": "pass", "test.suite": "suite_1", - "test_module_id": "17605099870629468115", - "test_session_id": "3591882799542221556", - "test_suite_id": "14609138934375019073", + "test_module_id": "4057632133908505837", + "test_session_id": "1612810878110935553", + "test_suite_id": "9420304634328993639", "type": "test" }, "metrics": { @@ -215,12 +212,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.source.end": 12, "test.source.start": 4 }, - "duration": 52209, - "start": 1723819320504112338 + "duration": 51667, + "start": 1724311930518804334 }], [ { @@ -236,15 +233,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -261,9 +258,9 @@ "test.source.file": "my_file_1.py", "test.status": "pass", "test.suite": "suite_1", - "test_module_id": "17605099870629468115", - "test_session_id": "3591882799542221556", - "test_suite_id": "14609138934375019073", + "test_module_id": "4057632133908505837", + "test_session_id": "1612810878110935553", + "test_suite_id": "9420304634328993639", "type": "test" }, "metrics": { @@ -271,12 +268,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.source.end": 12, "test.source.start": 4 }, - "duration": 47583, - "start": 1723819320504218672 + "duration": 51458, + "start": 1724311930518910709 }], [ { @@ -292,15 +289,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -317,9 +314,9 @@ "test.source.file": "my_file_1.py", "test.status": "pass", "test.suite": "suite_1", - "test_module_id": "17605099870629468115", - "test_session_id": "3591882799542221556", - "test_suite_id": "14609138934375019073", + "test_module_id": "4057632133908505837", + "test_session_id": "1612810878110935553", + "test_suite_id": "9420304634328993639", "type": "test" }, "metrics": { @@ -327,12 +324,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.source.end": 12, "test.source.start": 4 }, - "duration": 145292, - "start": 1723819320504317463 + "duration": 164291, + "start": 1724311930519014251 }], [ { @@ -348,15 +345,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -374,9 +371,9 @@ "test.suite": "suite_1", "test.tag1": "suite_1_test_4_parametrized_1_id", "test.tag2": "value_for_tag_2", - "test_module_id": "17605099870629468115", - "test_session_id": "3591882799542221556", - "test_suite_id": "14609138934375019073", + "test_module_id": "4057632133908505837", + "test_session_id": "1612810878110935553", + "test_suite_id": "9420304634328993639", "type": "test" }, "metrics": { @@ -384,11 +381,11 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.tag4": 4 }, - "duration": 62000, - "start": 1723819320504515297 + "duration": 60875, + "start": 1724311930519248376 }], [ { @@ -404,15 +401,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -428,9 +425,9 @@ "test.skipped_by_itr": "true", "test.status": "pass", "test.suite": "suite_1", - "test_module_id": "17605099870629468115", - "test_session_id": "3591882799542221556", - "test_suite_id": "14609138934375019073", + "test_module_id": "4057632133908505837", + "test_session_id": "1612810878110935553", + "test_suite_id": "9420304634328993639", "type": "test" }, "metrics": { @@ -438,10 +435,10 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148 + "process_id": 23360 }, - "duration": 32167, - "start": 1723819320504629838 + "duration": 32959, + "start": 1724311930519361667 }], [ { @@ -457,18 +454,18 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "error.message": "This is a fake exception", - "error.stack": "Traceback (most recent call last):\n File \"/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0/fake_runner_mix_fail_itr_test_level.py\", line 30, in _make_excinfo\n raise ValueError(\"This is a fake exception\")\nValueError: This is a fake exception\n", + "error.stack": "Traceback (most recent call last):\n File \"/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0/fake_runner_mix_fail_itr_test_level.py\", line 31, in _make_excinfo\n raise ValueError(\"This is a fake exception\")\nValueError: This is a fake exception\n", "error.type": "builtins.ValueError", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -485,9 +482,9 @@ "test.status": "fail", "test.suite": "suite_1", "test.tag1": "suite_1_test_4_parametrized_3_id", - "test_module_id": "17605099870629468115", - "test_session_id": "3591882799542221556", - "test_suite_id": "14609138934375019073", + "test_module_id": "4057632133908505837", + "test_session_id": "1612810878110935553", + "test_suite_id": "9420304634328993639", "type": "test" }, "metrics": { @@ -495,11 +492,11 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.tag3": 12333333 }, - "duration": 187292, - "start": 1723819320504739880 + "duration": 208417, + "start": 1724311930519471459 }], [ { @@ -516,15 +513,15 @@ "_dd.ci.itr.tests_skipped": "true", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -539,7 +536,7 @@ "test.itr.unskippable": "true", "test.skipped_by_itr": "true", "test.status": "fail", - "test_session_id": "3591882799542221556", + "test_session_id": "1612810878110935553", "type": "test_session_end" }, "metrics": { @@ -547,11 +544,11 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.itr.tests_skipping.count": 8 }, - "duration": 6526792, - "start": 1723819320501879838 + "duration": 6259583, + "start": 1724311930517020709 }, { "name": "ci_visibility.module", @@ -567,11 +564,11 @@ "_dd.ci.itr.tests_skipped": "true", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -591,8 +588,8 @@ "test.module_path": "", "test.skipped_by_itr": "true", "test.status": "fail", - "test_module_id": "17605099870629468115", - "test_session_id": "3591882799542221556", + "test_module_id": "4057632133908505837", + "test_session_id": "1612810878110935553", "type": "test_module_end" }, "metrics": { @@ -601,8 +598,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 1 }, - "duration": 2077417, - "start": 1723819320503029713 + "duration": 2147458, + "start": 1724311930517739959 }, { "name": "ci_visibility.suite", @@ -617,11 +614,11 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -639,9 +636,9 @@ "test.skipped_by_itr": "true", "test.status": "fail", "test.suite": "suite_1", - "test_module_id": "17605099870629468115", - "test_session_id": "3591882799542221556", - "test_suite_id": "14609138934375019073", + "test_module_id": "4057632133908505837", + "test_session_id": "1612810878110935553", + "test_suite_id": "9420304634328993639", "type": "test_suite_end" }, "metrics": { @@ -650,8 +647,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 1 }, - "duration": 1961041, - "start": 1723819320503065797 + "duration": 2030458, + "start": 1724311930517768751 }, { "name": "ci_visibility.module", @@ -667,11 +664,11 @@ "_dd.ci.itr.tests_skipped": "true", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -691,8 +688,8 @@ "test.module_path": "", "test.skipped_by_itr": "true", "test.status": "pass", - "test_module_id": "5322512201165588620", - "test_session_id": "3591882799542221556", + "test_module_id": "1720194941754061823", + "test_session_id": "1612810878110935553", "type": "test_module_end" }, "metrics": { @@ -701,8 +698,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 1 }, - "duration": 903583, - "start": 1723819320505146922 + "duration": 1056667, + "start": 1724311930519933959 }, { "name": "ci_visibility.suite", @@ -717,11 +714,11 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -739,9 +736,9 @@ "test.skipped_by_itr": "true", "test.status": "pass", "test.suite": "suite_2", - "test_module_id": "5322512201165588620", - "test_session_id": "3591882799542221556", - "test_suite_id": "8445172948314031223", + "test_module_id": "1720194941754061823", + "test_session_id": "1612810878110935553", + "test_suite_id": "5210495783763201884", "type": "test_suite_end" }, "metrics": { @@ -750,8 +747,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 1 }, - "duration": 808250, - "start": 1723819320505168797 + "duration": 962792, + "start": 1724311930519961292 }, { "name": "ci_visibility.module", @@ -767,11 +764,11 @@ "_dd.ci.itr.tests_skipped": "false", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -791,8 +788,8 @@ "test.module_path": "", "test.skipped_by_itr": "true", "test.status": "fail", - "test_module_id": "12971994117601589144", - "test_session_id": "3591882799542221556", + "test_module_id": "8624879619934256939", + "test_session_id": "1612810878110935553", "type": "test_module_end" }, "metrics": { @@ -801,8 +798,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 0 }, - "duration": 1369500, - "start": 1723819320506087630 + "duration": 1286958, + "start": 1724311930521030459 }, { "name": "ci_visibility.suite", @@ -817,11 +814,11 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -839,9 +836,9 @@ "test.skipped_by_itr": "true", "test.status": "fail", "test.suite": "suite_3", - "test_module_id": "12971994117601589144", - "test_session_id": "3591882799542221556", - "test_suite_id": "17464918488905562555", + "test_module_id": "8624879619934256939", + "test_session_id": "1612810878110935553", + "test_suite_id": "230003223501608410", "type": "test_suite_end" }, "metrics": { @@ -850,8 +847,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 0 }, - "duration": 383250, - "start": 1723819320506108588 + "duration": 417625, + "start": 1724311930521051667 }, { "name": "ci_visibility.suite", @@ -866,11 +863,11 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -888,9 +885,9 @@ "test.skipped_by_itr": "true", "test.status": "pass", "test.suite": "suite_4", - "test_module_id": "12971994117601589144", - "test_session_id": "3591882799542221556", - "test_suite_id": "4730636901041995536", + "test_module_id": "8624879619934256939", + "test_session_id": "1612810878110935553", + "test_suite_id": "11003888536441687778", "type": "test_suite_end" }, "metrics": { @@ -899,8 +896,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 0 }, - "duration": 689708, - "start": 1723819320506699630 + "duration": 645709, + "start": 1724311930521605542 }, { "name": "ci_visibility.module", @@ -916,11 +913,11 @@ "_dd.ci.itr.tests_skipped": "true", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -940,8 +937,8 @@ "test.module_path": "", "test.skipped_by_itr": "true", "test.status": "pass", - "test_module_id": "9083321287612568903", - "test_session_id": "3591882799542221556", + "test_module_id": "11537017597057568814", + "test_session_id": "1612810878110935553", "type": "test_module_end" }, "metrics": { @@ -950,8 +947,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 6 }, - "duration": 807166, - "start": 1723819320507497797 + "duration": 806500, + "start": 1724311930522360251 }, { "name": "ci_visibility.suite", @@ -966,11 +963,11 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -989,9 +986,9 @@ "test.skipped_by_itr": "true", "test.status": "skip", "test.suite": "suite_5", - "test_module_id": "9083321287612568903", - "test_session_id": "3591882799542221556", - "test_suite_id": "13156852296958388377", + "test_module_id": "11537017597057568814", + "test_session_id": "1612810878110935553", + "test_suite_id": "3207178236116478804", "type": "test_suite_end" }, "metrics": { @@ -1000,8 +997,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 4 }, - "duration": 349458, - "start": 1723819320507520130 + "duration": 366625, + "start": 1724311930522385167 }, { "name": "ci_visibility.suite", @@ -1016,11 +1013,11 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", @@ -1038,9 +1035,9 @@ "test.skipped_by_itr": "true", "test.status": "pass", "test.suite": "suite_6", - "test_module_id": "9083321287612568903", - "test_session_id": "3591882799542221556", - "test_suite_id": "14241216914228490393", + "test_module_id": "11537017597057568814", + "test_session_id": "1612810878110935553", + "test_suite_id": "7535721890593413174", "type": "test_suite_end" }, "metrics": { @@ -1049,8 +1046,8 @@ "_sampling_priority_v1": 1, "test.itr.tests_skipping.count": 2 }, - "duration": 332958, - "start": 1723819320507908880 + "duration": 310458, + "start": 1724311930522790876 }], [ { @@ -1066,15 +1063,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1090,9 +1087,9 @@ "test.source.file": "my_file_1.py", "test.status": "skip", "test.suite": "suite_2", - "test_module_id": "5322512201165588620", - "test_session_id": "3591882799542221556", - "test_suite_id": "8445172948314031223", + "test_module_id": "1720194941754061823", + "test_session_id": "1612810878110935553", + "test_suite_id": "5210495783763201884", "type": "test" }, "metrics": { @@ -1100,12 +1097,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.source.end": 2, "test.source.start": 1 }, - "duration": 48875, - "start": 1723819320505188547 + "duration": 59041, + "start": 1724311930519984876 }], [ { @@ -1121,15 +1118,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1148,9 +1145,9 @@ "test.suite": "suite_2", "test.tag1": "suite_2_test_2_parametrized_1_id", "test.tag2": "two", - "test_module_id": "5322512201165588620", - "test_session_id": "3591882799542221556", - "test_suite_id": "8445172948314031223", + "test_module_id": "1720194941754061823", + "test_session_id": "1612810878110935553", + "test_suite_id": "5210495783763201884", "type": "test" }, "metrics": { @@ -1158,13 +1155,13 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.source.end": 9, "test.source.start": 8, "test.tag3": 3 }, - "duration": 45333, - "start": 1723819320505294005 + "duration": 51500, + "start": 1724311930520123126 }], [ { @@ -1180,15 +1177,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1205,9 +1202,9 @@ "test.source.file": "test_file_2.py", "test.status": "pass", "test.suite": "suite_2", - "test_module_id": "5322512201165588620", - "test_session_id": "3591882799542221556", - "test_suite_id": "8445172948314031223", + "test_module_id": "1720194941754061823", + "test_session_id": "1612810878110935553", + "test_suite_id": "5210495783763201884", "type": "test" }, "metrics": { @@ -1215,12 +1212,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.source.end": 9, "test.source.start": 8 }, - "duration": 54042, - "start": 1723819320505387255 + "duration": 62042, + "start": 1724311930520252584 }], [ { @@ -1236,15 +1233,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1262,9 +1259,9 @@ "test.source.file": "test_file_2.py", "test.status": "skip", "test.suite": "suite_2", - "test_module_id": "5322512201165588620", - "test_session_id": "3591882799542221556", - "test_suite_id": "8445172948314031223", + "test_module_id": "1720194941754061823", + "test_session_id": "1612810878110935553", + "test_suite_id": "5210495783763201884", "type": "test" }, "metrics": { @@ -1272,12 +1269,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.source.end": 9, "test.source.start": 8 }, - "duration": 48291, - "start": 1723819320505488672 + "duration": 50375, + "start": 1724311930520368876 }], [ { @@ -1293,15 +1290,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1318,9 +1315,9 @@ "test.source.file": "test_file_2.py", "test.status": "pass", "test.suite": "suite_2", - "test_module_id": "5322512201165588620", - "test_session_id": "3591882799542221556", - "test_suite_id": "8445172948314031223", + "test_module_id": "1720194941754061823", + "test_session_id": "1612810878110935553", + "test_suite_id": "5210495783763201884", "type": "test" }, "metrics": { @@ -1328,12 +1325,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.source.end": 9, "test.source.start": 8 }, - "duration": 44416, - "start": 1723819320505584797 + "duration": 46042, + "start": 1724311930520470459 }], [ { @@ -1349,20 +1346,19 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", "test.command": "manual_test_mix_fail_itr_test_level", - "test.coverage": "{\"files\": [{\"filename\": \"my_abs_file_5_1.py\", \"segments\": [[1, 0, 3, 0, -1], [2, 0, 6, 0, -1], [10, 0, 12, 0, -1]]}, {\"filename\": \"my_abs_file_5_2.py\", \"segments\": [[1, 0, 3, 0, -1], [2, 0, 6, 0, -1], [10, 0, 12, 0, -1]]}, {\"filename\": \"my_rel_file_5.py\", \"segments\": [[1, 0, 2, 0, -1], [3, 0, 3, 0, -1]]}]}", "test.framework": "dd_manual_test_fw", "test.framework_version": "1.0.0", "test.itr.forced_run": "false", @@ -1375,9 +1371,9 @@ "test.source.file": "test_file_2.py", "test.status": "pass", "test.suite": "suite_2", - "test_module_id": "5322512201165588620", - "test_session_id": "3591882799542221556", - "test_suite_id": "8445172948314031223", + "test_module_id": "1720194941754061823", + "test_session_id": "1612810878110935553", + "test_suite_id": "5210495783763201884", "type": "test" }, "metrics": { @@ -1385,12 +1381,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.source.end": 9, "test.source.start": 8 }, - "duration": 120000, - "start": 1723819320505678422 + "duration": 146625, + "start": 1724311930520568501 }], [ { @@ -1406,15 +1402,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1433,9 +1429,9 @@ "test.suite": "suite_2", "test.tag1": "suite_2_test_3_id", "test.tag3": "this tag stays", - "test_module_id": "5322512201165588620", - "test_session_id": "3591882799542221556", - "test_suite_id": "8445172948314031223", + "test_module_id": "1720194941754061823", + "test_session_id": "1612810878110935553", + "test_suite_id": "5210495783763201884", "type": "test" }, "metrics": { @@ -1443,13 +1439,13 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.source.end": 12, "test.source.start": 4, "test.tag2": 2 }, - "duration": 53834, - "start": 1723819320505850713 + "duration": 69125, + "start": 1724311930520771792 }], [ { @@ -1465,15 +1461,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1489,9 +1485,9 @@ "test.source.file": "module_3/suite_3.py", "test.status": "pass", "test.suite": "suite_3", - "test_module_id": "12971994117601589144", - "test_session_id": "3591882799542221556", - "test_suite_id": "17464918488905562555", + "test_module_id": "8624879619934256939", + "test_session_id": "1612810878110935553", + "test_suite_id": "230003223501608410", "type": "test" }, "metrics": { @@ -1499,12 +1495,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.source.end": 6, "test.source.start": 4 }, - "duration": 45834, - "start": 1723819320506128963 + "duration": 51625, + "start": 1724311930521072334 }], [ { @@ -1520,15 +1516,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1544,9 +1540,9 @@ "test.source.file": "module_3/suite_3.py", "test.status": "fail", "test.suite": "suite_3", - "test_module_id": "12971994117601589144", - "test_session_id": "3591882799542221556", - "test_suite_id": "17464918488905562555", + "test_module_id": "8624879619934256939", + "test_session_id": "1612810878110935553", + "test_suite_id": "230003223501608410", "type": "test" }, "metrics": { @@ -1554,12 +1550,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.source.end": 12, "test.source.start": 9 }, - "duration": 45000, - "start": 1723819320506225380 + "duration": 69209, + "start": 1724311930521178167 }], [ { @@ -1575,15 +1571,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1599,9 +1595,9 @@ "test.source.file": "module_3/suite_3.py", "test.status": "pass", "test.suite": "suite_3", - "test_module_id": "12971994117601589144", - "test_session_id": "3591882799542221556", - "test_suite_id": "17464918488905562555", + "test_module_id": "8624879619934256939", + "test_session_id": "1612810878110935553", + "test_suite_id": "230003223501608410", "type": "test" }, "metrics": { @@ -1609,12 +1605,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.source.end": 48, "test.source.start": 16 }, - "duration": 43167, - "start": 1723819320506321130 + "duration": 45250, + "start": 1724311930521304126 }], [ { @@ -1630,15 +1626,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1654,9 +1650,9 @@ "test.source.file": "module_3/suite_4.py", "test.status": "pass", "test.suite": "suite_4", - "test_module_id": "12971994117601589144", - "test_session_id": "3591882799542221556", - "test_suite_id": "4730636901041995536", + "test_module_id": "8624879619934256939", + "test_session_id": "1612810878110935553", + "test_suite_id": "11003888536441687778", "type": "test" }, "metrics": { @@ -1664,12 +1660,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.source.end": 6, "test.source.start": 4 }, - "duration": 105667, - "start": 1723819320506754380 + "duration": 149333, + "start": 1724311930521648751 }], [ { @@ -1685,15 +1681,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1709,9 +1705,9 @@ "test.source.file": "module_3/suite_4.py", "test.status": "pass", "test.suite": "suite_4", - "test_module_id": "12971994117601589144", - "test_session_id": "3591882799542221556", - "test_suite_id": "4730636901041995536", + "test_module_id": "8624879619934256939", + "test_session_id": "1612810878110935553", + "test_suite_id": "11003888536441687778", "type": "test" }, "metrics": { @@ -1719,12 +1715,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.source.end": 12, "test.source.start": 9 }, - "duration": 151708, - "start": 1723819320506975922 + "duration": 69209, + "start": 1724311930521981792 }], [ { @@ -1740,15 +1736,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1764,9 +1760,9 @@ "test.source.file": "module_3/suite_4.py", "test.status": "pass", "test.suite": "suite_4", - "test_module_id": "12971994117601589144", - "test_session_id": "3591882799542221556", - "test_suite_id": "4730636901041995536", + "test_module_id": "8624879619934256939", + "test_session_id": "1612810878110935553", + "test_suite_id": "11003888536441687778", "type": "test" }, "metrics": { @@ -1774,12 +1770,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.source.end": 48, "test.source.start": 16 }, - "duration": 63709, - "start": 1723819320507246088 + "duration": 47917, + "start": 1724311930522113834 }], [ { @@ -1795,15 +1791,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1820,9 +1816,9 @@ "test.source.file": "module_5/suite_5.py", "test.status": "skip", "test.suite": "suite_5", - "test_module_id": "9083321287612568903", - "test_session_id": "3591882799542221556", - "test_suite_id": "13156852296958388377", + "test_module_id": "11537017597057568814", + "test_session_id": "1612810878110935553", + "test_suite_id": "3207178236116478804", "type": "test" }, "metrics": { @@ -1830,12 +1826,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.source.end": 6, "test.source.start": 4 }, - "duration": 54167, - "start": 1723819320507540255 + "duration": 60166, + "start": 1724311930522405501 }], [ { @@ -1851,15 +1847,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1876,9 +1872,9 @@ "test.source.file": "module_5/suite_5.py", "test.status": "skip", "test.suite": "suite_5", - "test_module_id": "9083321287612568903", - "test_session_id": "3591882799542221556", - "test_suite_id": "13156852296958388377", + "test_module_id": "11537017597057568814", + "test_session_id": "1612810878110935553", + "test_suite_id": "3207178236116478804", "type": "test" }, "metrics": { @@ -1886,12 +1882,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.source.end": 12, "test.source.start": 9 }, - "duration": 47250, - "start": 1723819320507645422 + "duration": 48958, + "start": 1724311930522518626 }], [ { @@ -1907,15 +1903,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1932,9 +1928,9 @@ "test.source.file": "module_5/suite_5.py", "test.status": "skip", "test.suite": "suite_5", - "test_module_id": "9083321287612568903", - "test_session_id": "3591882799542221556", - "test_suite_id": "13156852296958388377", + "test_module_id": "11537017597057568814", + "test_session_id": "1612810878110935553", + "test_suite_id": "3207178236116478804", "type": "test" }, "metrics": { @@ -1942,12 +1938,12 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148, + "process_id": 23360, "test.source.end": 48, "test.source.start": 16 }, - "duration": 46625, - "start": 1723819320507743088 + "duration": 47292, + "start": 1724311930522620084 }], [ { @@ -1963,15 +1959,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -1987,9 +1983,9 @@ "test.skipped_by_itr": "true", "test.status": "skip", "test.suite": "suite_6", - "test_module_id": "9083321287612568903", - "test_session_id": "3591882799542221556", - "test_suite_id": "14241216914228490393", + "test_module_id": "11537017597057568814", + "test_session_id": "1612810878110935553", + "test_suite_id": "7535721890593413174", "type": "test" }, "metrics": { @@ -1997,10 +1993,10 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148 + "process_id": 23360 }, - "duration": 38875, - "start": 1723819320507930755 + "duration": 35833, + "start": 1724311930522811209 }], [ { @@ -2016,15 +2012,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -2039,9 +2035,9 @@ "test.skipped_by_itr": "true", "test.status": "pass", "test.suite": "suite_6", - "test_module_id": "9083321287612568903", - "test_session_id": "3591882799542221556", - "test_suite_id": "14241216914228490393", + "test_module_id": "11537017597057568814", + "test_session_id": "1612810878110935553", + "test_suite_id": "7535721890593413174", "type": "test" }, "metrics": { @@ -2049,10 +2045,10 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148 + "process_id": 23360 }, - "duration": 59541, - "start": 1723819320508027422 + "duration": 54708, + "start": 1724311930522897709 }], [ { @@ -2068,15 +2064,15 @@ "_dd.base_service": "", "_dd.origin": "ciapp-test", "_dd.p.dm": "-0", - "_dd.p.tid": "66bf653800000000", - "ci.workspace_path": "/tmp/pytest-of-root/pytest-467/test_manual_api_fake_runner_mix_fail_itr_test_level0", + "_dd.p.tid": "66c6e97a00000000", + "ci.workspace_path": "/tmp/pytest-of-root/pytest-7/test_manual_api_fake_runner_mix_fail_itr_test_level0", "component": "dd_manual_test_fw", "language": "python", - "library_version": "2.12.0.dev95+g081ffd2bb.d20240816", + "library_version": "2.13.0.dev65+g4954a5e74.d20240821", "os.architecture": "aarch64", "os.platform": "Linux", "os.version": "6.6.12-linuxkit", - "runtime-id": "f1f8fb1cdc44491088b5ceeaf16a2d6f", + "runtime-id": "6da6af80e5f640adacb8cc30278f31af", "runtime.name": "CPython", "runtime.version": "3.10.11", "span.kind": "test", @@ -2092,9 +2088,9 @@ "test.skipped_by_itr": "true", "test.status": "skip", "test.suite": "suite_6", - "test_module_id": "9083321287612568903", - "test_session_id": "3591882799542221556", - "test_suite_id": "14241216914228490393", + "test_module_id": "11537017597057568814", + "test_session_id": "1612810878110935553", + "test_suite_id": "7535721890593413174", "type": "test" }, "metrics": { @@ -2102,8 +2098,8 @@ "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "process_id": 82148 + "process_id": 23360 }, - "duration": 36916, - "start": 1723819320508137922 + "duration": 36458, + "start": 1724311930522999584 }]]